Рубрика «Алгоритмы» - 2

В 1931 году 25-летний Курт Гёдель написал доказательство, которое перевернуло мир математики с ног на голову. Выводы были настолько поразительными, а само доказательство настолько изящным, что это было… как-то даже забавно. Я хотел поделиться с вами его открытием.

Объединение

На протяжении последних 300 лет математики и ученые делали поразительные открытия, которые привели к появлению одной великой закономерности. Эта закономерность заключалась в объединении: идеи, которые раньше считались разрозненными и непохожими, неизменно оказывались одним и тем же!

Читать полностью »

TikTok, Reels, Shorts затягивают похлеще Гаргантюа из Интерстеллар. Но почему одних людей затягивает в пучину с головой, а другие практически в них не заходят?  Новое исследование предлагает объяснение: тип привязанности на основе тревожности или же модель отношений, основанная на страхе быть покинутым. Вот тот самый фактор, предсказывающий зависимость от коротких видеороликов.

Читать полностью »

После того как я написал статью про то, что ваш монитор не умеет показывать бирюзовый и 65% видимых цветов для него просто не существуют, один мой знакомый (далекий правда от технической отрасли) спросил: «Окей, монитор врёт, а что тогда делает JPEG с оставшимися 35%?» И это хороший вопрос. Я полез в спеку, а через полчаса забыл, зачем вообще полез. Потому меня уже интересовало другое: ребята, которые в 1992-м финализировали этот стандарт, по сути заревёрсили человеческое зрение и запихнули его в алгоритм сжатия.

Читать полностью »

В прошлую пятницу я объяснял джуну, почему его код на отсортированном массиве работает в шесть раз быстрее, чем на неотсортированном. Тот же массив, тот же алгоритм, и те же данные. Просто в другом порядке. Джун смотрел на меня как на сумасшедшего и, честно говоря, я его понимаю.

Потому что ответ звучит безумно: процессор внутри вашего ноутбука постоянно пытается предсказать будущее. Буквально. Он гадает, какая ветка if выполнится ещё до того, как условие будет вычислено. И на отсортированных данных ему угадывать проще.

Ну, давайте разбираться.


Конвейер, или почему процессору вообще нужно гадать

Читать полностью »

Как определить выпуклость многоугольника на C: от геометрии к коду - 1

Зачем вообще определять, выпуклый ли многоугольник?

На практике это встречается гораздо чаще, чем кажется.
Читать полностью »

Все знают: если нужно быстро считать – пиши на C. Python – для прототипов, но в продакшене он тормозит. Однако с появлением NumPy и JIT-компиляторов (Numba) границы стираются. Более того, в некоторых случаях Python может даже обогнать наивную реализацию на C.

В этой статье я на примере решения трёхдиагональной системы (алгоритм Томаса) сравниваю:

  • Чистый C (double/float)

  • Векторный NumPy (с циклами на Python)

  • JIT-скомпилированную версию Numba

И не просто сравниваю, а ищу ответ на вопрос: почему Numba иногда быстрее C?

Что такое алгоритм прогонки?

Читать полностью »

Иногда тормоза в коде выглядят как что-то сложное: тяжёлые алгоритмы, огромные базы данных, медленный диск. Но чаще всё намного банальнее — один неудачный цикл, который выполняется миллионы раз.

Как я ускорил Python-скрипт в 42 раза, убрав один незаметный цикл - 1

Читать полностью »

Вот так. Впервые в мире. Суперсэмплинг (SSAA) — ресурсоемкий метод сглаживания, увеличивающий число выборок на пиксель для повышения качества изображения. При значении 8x (N=8) сцена рендерится в разрешении, в 8 раз превышающем целевое, по обеим осям, создавая 64 (или 8 х 8) выборки на пиксель. Изображение просчитывается в более высоком разрешении, а затем принудительно уменьшается до разрешения дисплея, устраняя лесенки и улучшая чёткость. Это очень высокая нагрузка! Это не 1920 на 1920 пикселя а в 8x8 больше - 15360 на 15360 пикселя! Такое никто, кроме меня, делает в мире. Для множество Мандельброта.

Читать полностью »

Вчера я 4 минуты стоял в подъезде и смотрел, как два лифта одновременно поехали вверх. Все два. На табло — 12, 15, 18. Я на первом. Мне на шестой. И я подумал: вот я кучу лет пишу софт, оптимизирую запросы к базе данных, кеширую всё что движется — а эти две коробки на тросах не могут разобраться, кто из них должен спуститься за мной.

Потом я погрузился в тему. И выяснил, что они не «не могут разобраться». Они математическиЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js