Обновить
256K+

Алгоритмы *

Все об алгоритмах

241,41
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

CP-SAT OR-Tools против Excel: решаем задачу оптимизации офисного пространства

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.3K

Несколько раз в год отдел оптимизации офисного пространства Альфа‑Банка думает над тем, как разместить сотрудников бэк‑офиса по локациям на несколько лет вперёд. Раньше ребята делали это вручную: было медленно (месяц работы), больно (Excel) и неоптимально (никто не мог гарантировать, что найденная рассадка удовлетворяет всем ограничениям).

Коллеги хотели автоматизировать ручную работу — с этим они и пришли к нам. 

В целом, получаем самую стандартную задачу оптимизации, которая решается с помощью одной библиотеки. Постараюсь рассказать о некоторых нюансах, которые не с первого раза гуглятся (со второго).

Читать далее

Новости

Ретрансляция пакетов через ad9361 с помощью алгоритма BFS

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели6K

В этой статье рассмотрено, как передавать данные пакетами через baremetal приложение no-os на ad9361. Для генерации фрейма на передающей стороне и обработки фрейма на приёмной стороне использована библиотека liquid-dsp, которая скомпилирована под arm ядро в zynq-7000. Для ретрансляции сообщений использован алгоритм обхода графа BFS (Breadth-First Search, поиск в ширину) и простая система адресации приёмопередатчиков в полезной нагрузке пакета сообщения.

Читать далее

Зачем лететь через полмира, если статьи уже есть на arXiv: что я увидела на ICML 2026

Время на прочтение11 мин
Охват и читатели11K

Зачем тратить сутки на перелёты, мчаться на другой конец света и жить неделю в режиме нон‑стоп на одной из главных ML‑конференций планеты, когда пейпер уже на arXiv, код — на GitHub, а краткие выжимки из выступлений — мгновенно в соцсетях?

Меня зовут Карина Романова, я разработчик в Яндексе и занимаюсь LLM‑агентами в Алисе. В июле мы с командой прилетели в Сеул на ICML 2026, и я ответила себе на вопрос «зачем?». Для нас офлайн‑конференции — это единственный способ за несколько дней прочувствовать реальный фокус сообщества, встретиться с авторами работ и узнать детали, которых нет в опубликованных текстах.

В этой статье расскажу, как устроена ICML изнутри, чем запомнилась программа этого года, какие наши исследования вызвали наибольший ажиотаж и почему заметная часть разговоров на конференции снова вращалась вокруг AI‑агентов.

Читать далее

Хороший код, минусов нет: встреча «плюсовиков» YADRO и C++ Russia

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели8.9K

У ДДТ был свой ответ на вопрос «что такое осень». И даже не один. У C++-разработчиков — свой: это когда вместо листьев разлетаются корутины, вместо дождя — потоки событий, а select и poll внезапно становятся отличной темой для вечерней встречи. 10 сентября в 18:30 проверим эту версию на мероприятии YADRO и C++ Russia. 

В программе — два технических доклада от разработчиков «Лаборатории Касперского» и YADRO. Перед выступлениями Александр Иргер, эксперт по разработке ПО в области телекоммуникаций, расскажет о планах московского сообщества «плюсовиков» и о том, над какими задачами работают сотни разработчиков на С++ в YADRO. Чтобы присоединиться к встрече в любом формате, пожалуйста, зарегистрируйтесь заранее.

Читать далее

Таинственный остров: находим геолокацию с помощью геометрии и программирования GPU CUDA

Время на прочтение10 мин
Охват и читатели9.1K

Свой пост я написал после участия в соревнованиях gralhix 004, организованных Софией Сантос | Gralhix.

Задача

Это фотография островного курорта.

Вопросы:

а) Как называется курорт?

б) Каковы координаты острова?

в) В какую сторону света была направлена камера, когда делали снимок?

На мой взгляд, решение этой задачи при помощи Google Объектива будет потраченной впустую возможности развлечься, поэтому я захотел решить её при помощи математики и программирования.

Читать далее

Почему O(1) проигрывает O(n): структуры данных в Go на реальном железе

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели12K

Объясню структуры данных через очередь в поликлинике, а потом покажу, где эта аналогия ломается: почему связный список с «вставкой за O(1)» в прикладном Go обычно проигрывает обычному массиву.

Спойлер: асимптотика здесь не ошибается. Ошибается вывод, который мы из неё делаем.

Статья для тех, кто асимптотику знает, но не проверял её замером.

Читать далее

Почему токенайзер реж ет сло ва не там, где нужно

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели19K

Заголовок этой статьи, частично, наглядная демонстрация того, как его видит языковая модель. Куски слов, нарезанные по логике, которая к русскому языку не имеет вообще никакого отношения.

И из этой нарезки растет длинный список вещей, которые иногда списывают на «глупую нейронку» (особенно если речь идет о небольших локальных моделях): модель не может посчитать буквы в слове, путается в арифметике, коверкает редкие фамилии, а русский текст обходится вдвое дороже английского при том же смысле.

А еще оттуда же растут вещи, которые с токенами вообще вроде бы не связаны. Например: почему «давай рассуждать по шагам» реально работает, и почему лишний пробел в конце промпта портит ответ.

Виноват во всем этом компонент стека, который первым в пайплайне, никогда не обучается вместе с моделью и которому обычно посвящают полтора абзаца в начале туториала. Что ж, давайте по порядку.

Читать далее

Математики до сих пор не уверены, как быстрее всего перемножать числа

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели30K

Ученики начальной школы могут заучивать таблицу умножения однозначных чисел, но простого запоминания будет недостаточно, когда учитель задаст задачу на умножение трёхзначных чисел. Здесь требуется алгоритм: учеников учат выстраивать числа друг над другом и умножать каждую цифру нижнего числа на каждую цифру верхнего. На протяжении тысячелетий математики считали это самым быстрым способом умножения, пока в 1960 году 23-летний молодой человек не сделал шокирующее открытие, которое привело к загадке, остающейся неразгаданной до сих пор.

Эта загадка имеет решающее значение для всех, кто имеет отношение к цифровому миру, поскольку умножение является основополагающей операцией для компьютеров. Шифрование, робототехника, искусственный интеллект, обработка звука и практически всё остальное, чем мы заставляем заниматься кремниевые чипы, связано с умножением, причём иногда огромных чисел, умножаемых многократно. В таких масштабах даже простая операция становится «узким местом», и любое дополнительное повышение эффективности имеет глобальные экономические последствия.

Чтобы понять суть этого «узкого места», обратите внимание на то, как «школьный» алгоритм справляется с увеличением размера чисел. При умножении двух двузначных чисел выполняется четыре однозначных умножения. Если перейти к паре трёхзначных чисел, то потребуется девять однозначных умножений. Нагрузка растёт пропорционально квадрату количества разрядов (n², где n — количество разрядов в умножаемых числах). При анализе подобного алгоритма компьютерные учёные не измеряют скорость в секундах, поскольку она зависит от аппаратного обеспечения. Вместо этого они подсчитывают количество вычислительных шагов. Они также игнорируют второстепенные детали, такие как время, необходимое для переноса единицы при умножении. Когда числа становятся достаточно большими, эти низкоуровневые операции перестают иметь значение, поскольку их полностью затмевают более ресурсоёмкие операции. Информатики обозначают количество шагов с помощью так называемой нотации «большого O»: например, алгоритм, который учат в начальной школе, требует O(n²) шагов, что читается как «порядка n в квадрате». В общих чертах, если числа в два раза длиннее, для выполнения алгоритма требуется в четыре раза больше вычислительной работы. Если числа в тысячу раз длиннее, требуется в миллион (1 000 в квадрате) раз больше работы.

Читать далее

Открыт предзаказ на второе издание «Грокаем алгоритмы искусственного интеллекта»

Время на прочтение2 мин
Охват и читатели8.1K

Привет, Хаброжители! На протяжении всей своей истории человечество неустанно искало способы решать задачи, прикладывая как можно меньше усилий. Люди всегда стремились создавать инструменты и автоматизировать повторяющиеся действия, чтобы выживать и экономить силы. Здесь некоторые могут поспорить, заявив, что человек умен, ищет возможности совершенствования, умеет творчески решать задачи и создавать произведения искусства в области литературы, музыки и т.п. Но второе обновленное издание «Грокаем алгоритмы искусственного интеллекта» не ставит целью обсуждение философской сути бытия. Оно дает обзор методов искусственного интеллекта, которые можно применять для решения прикладных задач.

Читать далее

Почему в Chrome маленькие JPEG выглядят иначе

Время на прочтение4 мин
Охват и читатели12K

Этот значок на компьютере моего коллеги выглядит лучше

Как-то я общался с коллегой у него за компьютером и заметил, что логотип выглядит не совсем так, как моём компьютере. На компьютере коллеги он казался тоньше и больше походил на исходное изображение. Он имел размер 15px; на картинке выше показана его увеличенная версия.

Примечание: показано не исходное изображение. Это было уже довольно давно, поэтому я создал новое изображение, чтобы продемонстрировать, в чём же проблема.

Если прищуриться или отойти подальше, то изображение из Chrome выглядит толще. Это немного странно, но если заменить картинку на SVG, то проблема исчезнет. Однако мне всё равно стало любопытно: почему она вообще так рендерится?

Я провёл исследование и обнаружил в Chrome изящную оптимизацию, используемую для рендеринга JPEG в мелком масштабе.

Читать далее

Может ли ИИ выучить физику, просто наблюдая за миром?

Время на прочтение13 мин
Охват и читатели12K

О когнитивных способностях человека есть много исследований. Одно из самых известных это исследование за авторством Элизабет Спелке. Оно о том как у человека появляется самое первое, базовое понимание мира и физических законов. Её работа ставит под сомнение традиционные взгляды на то, что всё человеческое знание приобретается исключительно через опыт, и выдвигает гипотезу о наличии врожденных когнитивных систем.

На основе когнитивных экспериментов Спелке доказывает, что фундаментальные представления о мире начинают проявляться в самых ранних месяцах жизни и являются частью врожденного аппарата человека.

Итак, если Спелке показывает, что человеку для этого нужно врожденное ядро знаний, то как с этим справляются ИИ? 
Способна ли нейросеть самостоятельно выделить объекты из огромного числа пикселей, построить внутренний физический движок и предсказать, куда упадет брошенный мяч, не зная формулы F = ma

Рассмотрим как современные ИИ-системы пытаются понять физический мир через наблюдение. Где у них это действительно получается, и почему хорошая визуальная экстраполяция всё еще не означает истинного понимания природы вещей.

Читать далее

Как продвигать твиты в X: разбираем рекомендательный алгоритм Twitter

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели10K

13 августа сайт X опубликовал значительно обновлённую версию исходного кода рекомендательной ленты. В репозитории под лицензией Apache 2.0 выложили код модели Phoenix, реальные значения основных коэффициентов ранжирования, механизмы отбора кандидатов, фильтрации видимости, поддержки новых авторов и обеспечения разнообразия ленты.

Заметная доля пользователей X предпочитает называть сайт микроблогов по старинке — Twitter. Другая неискоренимая вредная привычка — чтение алгоритмической ленты. Чтобы увеличить охват микроблога, было бы неплохо хотя бы в общих чертах разобраться, как работает рекомендательный алгоритм, а затем рассмотреть все основные коэффициенты. Этим в данной статье мы и займёмся.

Читать далее

Сжатие данных — это предсказание

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели19K

Недавно я читала материалы о сжатии данных, и меня внезапно озарила безумная мысль: по сути своей, алгоритмы сжатия и LLM предназначены для решения одной и той же задачи.

В этом посте я познакомлю вас с основами сжатия, чтобы вы могли понять его глубокую связь с моделированием языка. Возможно, вас это изумит.

Читать далее

Ближайшие события

Оптимизируем код решения СЛАУ методом Гаусса под процессор Эльбрус‑8СВ

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели10K

Здравствуйте, друзья, меня зовут Ерохин Кирилл, я программист-любитель, а по совместительству популяризатор российского программного и аппаратного обеспечения, и в этом сентябре я провожу второе (теперь ежегодное) соревнование по алгоритмическому программированию на C/C++ для платформы Эльбрус (e2k), для студентов и выпускников со всей России «Кубок СЭРПАС 2026». Сегодня мне нужно дать участникам соревнования пример оптимизации кода под процессор Эльбрус-8СВ, а Хабр мне в этом поможет, ему не впервой.

Читать далее

Count-Min Sketch: как посчитать частоту миллиарда событий в 10 килобайт

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели9.3K

Представьте: через ваш сервер проходит 10 миллионов запросов в минуту. Каждый запрос содержит метку (например, ID пользователя, IP-адрес или поисковый запрос). Руководство просит: «А давайте посмотрим, кто из пользователей самый активный?». Задача выглядит простой, пока вы не осознаете, что хранить HashMap из 10 миллионов ключей в оперативной памяти — это сотни мегабайт, а если ключи — длинные строки, то и гигабайты.

Вероятностные структуры данных решают такие задачи без гигантских кластеров. В прошлых статьях мы разобрали, как с помощью HyperLogLog считать количество уникальных элементов, а с помощью Фильтра Блума — проверять наличие элемента. Сегодня мы закроем триаду и поговорим об алгоритме, который отвечает на вопрос «А сколько раз этот элемент встречался?» с фиксированной памятью в пару килобайт и строгой вероятностной гарантией.

И это — Count-Min Sketch! Структура, которая лежит в основе анализа потоков в базах данных (от ClickHouse до BigQuery) и сетевых протоколов. Мы разберем её математику, реализуем на чистом C с использованием MurmurHash3 и проведем бенчмарки.

Читать далее

Спустя 5 лет я снова пишу Всерос — часть 1

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели64K

Привет, Хабр! На связи финалист ICPC и гроссмейстер codeforces MachineSolution. В прошлой своей статье я писал о том, как подготовиться к соревнованию. Но что делать, если время подготовки прошло, как писать саму олимпиаду? “Просто бери и решай задачи” - скажет кто-то, но будет прав лишь отчасти. У некоторых соревнований есть свои особенности и, как следствие, особые стратегии написания. И заключительный этап всероссийской олимпиады школьников по информатике не лишён своих отличительных черт.

Всероссийская олимпиада школьников по праву считается мерилом олимпиадных способностей школьников и, хотя взять диплом даже регионального этапа ВсОШ дано не каждому, всероссом называют именно заключительный этап и готовятся к нему. Мало кто из сильных олимпиадников не хочет “взять всеросс” - то есть выиграть диплом призёра заключительного этапа. Помимо поступления в любой ВУЗ без экзаменов он сам по себе является ценной наградой и подтверждением своих способностей и признания результата долгих тренировок. Более того, не так много людей стремятся к диплому победителя - настолько сложно и почётно в этой олимпиаде стать хотя бы призёром! Заветные дипломы по информатике каждый год получают всего 200-300 человек из миллионов школьников. Моя история с этой олимпиадой не самая сказочная - в свои школьные годы я пожертвовал подготовкой к информатике ради подготовки к математике. Да, в итоге я занял 7 место на финале математики и почти стал победителем, но на информатике выступил, мягко говоря, ужасно - даже не близко к призёрам. Поэтому мне стало интересно написать зеркало ВсОШ по информатике за 2026 год, чтобы проверить, как сильно я вырос в олимпиадах и на что способен.

Читать далее

Наши книги о LLM: состояние дел по готовящимся новинкам

Время на прочтение7 мин
Охват и читатели10K

Приветствуем, Хабр.

Не секрет, что большие языковые модели и, в частности, трансформеры (GPT) серьезно повлияли на работу программиста, привели к автоматизации многих рутинных задач, значительно удешевили проверку концепций и эксперименты при разработке новых продуктов. Коренные изменения произошли не только в разработке, но и во взаимодействии пользователя с ботами, агентами, поисковыми системами. Промпт-инжиниринг буквально за полтора года превратился из искусства в ремесло, которое способен освоить и подросток. Мы хотим очертить ближайшие перспективы выхода книг из типографии и планы на обозримое будущее — на наших верфях и уже практически на стапелях готовится целый флот литературы, ориентированной на работу с искусственным интеллектом.

Читать далее

Вы ещё пишете код слева направо? Тогда мы идём к вам

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели10K

Вам нужно в одном выражении использовать временный бит, а потом вернуть его в исходное состояние, не прибегая к дополнительным строчкам кода.

Задача тянет на головоломку, но в мире двумерного синтаксиса у неё есть красивое решение — просто отзеркалить операцию строчкой ниже. Такой трюк напрямую моделирует обратимость вычислений из квантовой физики.

Статья как раз об этом: как освоение второго измерения помогает чисто и наглядно записывать цепочки операторов, чистить мусор и даже строить 3-битный сумматор, который выглядит как единый двумерный блок.

Читать далее

От ручных правил к модели: как автоматизировать субсидии, если нельзя просаживать метрики в A/B

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели14K

Привет! Я Арина Сокова, аналитик в Авито Подработке. Мы отвечаем за то, чтобы смены на платформе закрывались, исполнители и заказчики находили друг друга, а платформа не тратила на продвижение сервиса слишком много. В статье расскажу, что такое субсидии в Авито Подработке, и как мы перешли от ручного назначения субсидий по бизнес-правилам к автоматической системе.

Текст будет полезен аналитикам и продакт-менеджерам, которые работают с ценообразованием, субсидиями, промомеханиками и любыми задачами оптимизации бюджета при ограничениях.

Читать далее

Как я создал свою мини‑Вселенную

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели18K

Привет, читатель!

Однажды, после просмотра ролика про эволюцию Вселенной, я загорелся идеей создать свою, со своими правилами. В итоге я написал собственный физический движок на С++, и в этой статье я расскажу про него, историю создания, и разные нюансы.

Читать далее
1
23 ...