Обновить
290.06

Алгоритмы *

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

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

MAESTRO — новый фреймворк для построения мультиагентных систем и цифровых ассистентов на основе LLM

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

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

Построением таких систем заняты многие команды по всему миру. Чтобы ускорить прогресс в этом направлении и помочь коллегам, мы в группе «Мультимодальные архитектуры ИИ» AIRI создали новый фреймворк под названием MAESTRO — Multi‑Agent Ecosystem of Task Reasoning and Orchestration. Мы представили его на конференции AI Journey 2025, которая прошла в Москве на прошлой неделе.

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

Читать далее

Поделюсь с вами всем, что успел изучить о градиентном шуме

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

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

Чтобы глубже и результативнее понять градиентный шум, мы сначала изучим его одномерную версию (в литературе этот случай обычно не рассматривается), а затем медленно пойдём вверх по лестнице измерений в сторону усложнения задачи. Эту тему мы будем рассматривать с точки зрения графического процессора (GPU), а не с точки зрения обычного ЦП. Все примеры кода и анимации, приведённые в этой статье, реализованы на WebGL2/GLSL (надеюсь, это будет не слишком сильно сказываться на производительности). Примеры должны работать на большинстве современных устройств.

Читать далее

Датасет VK-LSVD помогает тестировать алгоритмы рекомендаций: сейчас на его базе проходит VK RecSys Challenge

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

Сейчас в открытом доступе мало крупных датасетов сервисов коротких видео, но это уникальный формат для рекомендательных алгоритмов. В отличие от музыки или длинных видео они не могут потребляться в фоновом режиме, а каждый показанный ролик получает от пользователя реакцию. Даже если он не оставит лайк, досмотр видео до конца или пропуск уже считаются обратной связью. Именно поэтому мы выложили в открытый доступ датасет VK-LSVD. С его помощью инженеры и ученые смогут развивать и совершенствовать рекомендательные алгоритмы.

Как работать с VK-LSVD

Портируем ML на RISC-V: как не потерять производительность

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

Современные ML-системы опираются на CPU и ускорители — тензорные или графические. Но их производительность часто ограничена пропускной способностью шины между CPU и GPU: данные приходится постоянно перегонять туда-сюда, и выигрыш от ускорителя нередко тает.

Что если есть архитектура, где этого узкого места нет? RISC-V предоставляет гетерогенность принципиально нового уровня, объединяя ключевые компоненты устройства на одном кристалле, что снимает одно из главные ограничений производительности в ML. Но одних процессоров здесь мало — нужна еще экосистема библиотек.

Читать далее

Клеточный автомат Коллатца или экосистема лабиринта?

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

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

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

Игра - Лабиринт

Не откладывая задачу в долгий ящик, представляю Вам прототип игры "Лабиринт".  На рисунке 1, представлен пример поля лабиринта, основанного на CCA. Справа от поля имеется легенда с описанием цветов ячеек.

Читать далее

Как виртуальная очередь заказов в Такси помогает уехать в пиковый спрос

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

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

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

Читать далее

Ваш первый live‑coding

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

Привет, Хабр!

Cегодня поговорим о, наверное, самом серьезном этапе собеседования — live‑coding. На этом этапе вас просят писать код в реальном времени, под пристальным взглядом интервьюера.

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

Разобрать лайвкодинг

Анализ возможности применения модели OpenThinker2-32B в автоматизированных системах прогнозируемого обслуживания

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

Постановка проблемы. Современные промышленные предприятия требуют принципиально новых решений, направленных на прогнозирование отказов работы оборудования и своевременное устранение нештатных аварийных ситуаций, управления затратами на ремонт, а также оптимизации и улучшения стратегий технического обслуживания. Существующие автоматизированные системы прогнозируемого обслуживания имеют различные функциональные ограничения. Это требует разработки новых архитектурных решений для создания интеллектуальных систем, способных обрабатывать большие объемы разнородных данных в режиме реального времени, прогнозировать отказы с высокой точностью и оптимизировать процессы плана обслуживания, в тесной взаимосвязи с работой устройств промышленного Интернета вещей в условиях использования новых технологий периферийного искусственного интеллекта. Данная работа посвящена исследованию возможности применения большой языковой модели OpenThinker2-32B, как вспомогательного инструмента для автоматизированной системы прогнозируемого обслуживания многостадийных технологических процессов. Данная модель может быть использована в реализации следующих функций автоматизированной системы: анализ исторических данных; прогнозирование оставшегося срока службы оборудования; подготовка данных для снижения факторов неопределенности данных для улучшения прогнозов; подготовка экспертных заключений; оптимизация расписаний по техническому обслуживанию промышленного оборудования.

Цель работы. Изучить возможность применения и адаптации большой языковой модели OpenThinker2-32B, как дополнительного и вспомогательного инструмента, применяемого для повышения эффективности работы автоматизированных систем прогнозируемого обслуживания многостадийных технологических процессов для малых и средних промышленных предприятий. Это позволит решить следующие задачи: выполнить анализ исторических данных; с помощью алгоритмов, разработанных на основе теории свидетельств Демпстера-Шафера снизить факторы неопределенности произвести прогнозирование отказов, а также подготовить экспертные рекомендации по оптимизации расписаний и процессов технического обслуживания промышленного оборудования. Также необходимо разработать алгоритмы информационного взаимодействия для каждой из задач, и определить положение большой языковой модели в предложенной концепции конвергентной архитектуры автоматизированной системы прогнозируемого обслуживания для повышения точности прогнозов и возможности ее интеграции с экспертными, аналитическими, прогнозными системами и системами поддержки принятия решений.

Читать далее

Боты ищут путь: почему NPC за рулем машин в GTA такие неадекватные

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

Обожаю игры серии GTA (все, кроме четвертой части). Я бы даже сказал, что многое в них прекрасно: разнообразие сюжетных миссий, выбор транспорта, классные диалоги, тонкая ирония, саркастичный юмор, высмеивание проблем общества, свобода действий, возможность устроить локальный апокалипсис. Однако все это портит поведение ботов-водителей, которые словно намеренно бросаются наперерез игроку, чтобы усложнить ему жизнь. Но так ли это? Действительно ли поведение NPC на дорогах GTA заскриптовано так, чтобы мешать геймерам? Прошу под кат — в поисках правды будем подглядывать за ботами и залезать туда, куда Рокстары не хотят нас пускать.

Посмотреть путь бота

Алгоритмы на графах

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

Краткое и доступное руководство по базовым алгоритмам на графах: BFS, DFS, топологической сортировке и алгоритму Дейкстры. Чёткие объяснения, примеры и код на C++ — для тех, кто хочет быстро и уверенно освоить фундамент графовых алгоритмов.

Узнать больше об алгоритмах

Дискретные дифференциальные операторы

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

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

Читать далее

Что происходит с удалёнными файлами: разбираем алгоритм TRIM и его нюансы

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

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

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

Читать далее

Искусство выжить. Простое руководство для настоящих программистов

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

Задача Эдсгера Дейкстры о философах – великая задача великого программиста. Уж сколько лет, а она актуальна. Решая ее, прикасаешься к этому величию. И вот, перефразируя известное, «давно не было такого и вот опять», можно познакомиться с ее «новым прочтением» на Хабре[1].

Ну, как новое?… Но она стала тем триггером, который подвигнул меня к очередной попытке ее решения. Тем более, что с момента знакомства с философами пролетела уйма лет, а в  багаже - опыт применения автоматной модели и значительно усовершенствованная среда их реализации.

Познакомился с проблемой обедающих философов – Dinning Philosopher Problem (DPP), я более двадцати лет тому назад (про DPP см. [2]). Результатом стала статья, в которой философы выполняли поставленную задачу, как минимум, не хуже, чем классические алгоритмы сортировок[3]. Позднее был сделан доклад на конференции по параллельным вычислениям в Саратове, где на суд научной общественности была предъявлена модель автоматных параллельных вычислений и пример ее приложения - задача Дейкстры[4].  

Замечание 1. В рамках обсуждения статьи на Хабре было проигнорировано  предложение поручить сортировку философам. Зря, конечно, т.к. надо же как-то убедиться, что предлагаемое решение работает хотя бы в первом приближении. К примеру, тот же DeepSeek, моментально выдавший свое решение DPP, так и не смог заставить их сортировать.

Не знаю, считается ли данная задача решенной, но то, с чем я знаком, по большей части беглое рассмотрение проблем, которые она отражает. У задачи есть теория, которая представлена монографией Хоара[5], или моделями сетей Петри у Питерсона[6] и В.Е. Котова[7] или другими подобными публикациям. Но, повторюсь, все это по большей части достаточно краткий анализ свойств модели и/или даже конкретного решения. Статья на Хабре из этой же серии. Все это ни как не окончательное решение описываемых ею проблем параллелизма. Правда, может, [авторами] вопрос так и не ставился, но все же ответ на него весьма желательно иметь.

Читать далее

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

Теория графов для программистов

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

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

Погрузиться в мир графов

Конвейеры формирования изображений. Часть 1: Регистрация света и дебайеринг

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

Приветствую! Я, Егор Ершов, руководитель группы «Цветовая вычислительная фотография» в AIRI и заведующий сектором репродукции и синтеза цвета ИППИ РАН, продолжаю выкладывать статьи по мотивам своих лекций по вычислительной фотографии. Наша глобальная задача, напомню, разобраться, как сделать так, чтобы камера сотового телефона достаточно хорошо смогла уловить цвета, а монитор или принтер — их передать. 

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

Приятного чтения!

Читать далее

Как фильтры Блума в 16 раз ускорили API

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

Этот пост станет глубоким разбором того, как мы снизили задержки P95 конечной точки API с 5 до 0,3 секунды при помощи нишевого трюка computer science под названием «фильтр Блума».

Мы расскажем о том, почему конечная точка была медленной, о решениях, которые мы рассматривали для повышения её скорости, и о критериях выбора между ними. Также мы объясним, как всё это устроено внутри.

Читать далее

Книга: «Алгоритмы машинного обучения»

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

Привет, Хаброжители!

Узнайте тонкости работы алгоритмов ML, чтобы эффективно решать задачи и повы-шать производительность используемых моделей. Познакомьтесь с фундаментальными математическими основами важнейших алгоритмов машинного обучения и вариантами их реализации на Python. Особое внимание уделяется вероятностным методам.

В книге анализируются и объясняются десятки алгоритмов, применяемых в различных сферах, в частности финансах, компьютерном зрении и обработке естественного языка. Каждый алгоритм сначала выводится математически, а потом иллюстрируется кодом на Python, снабженным подробными пояснениями и информативными графиками. Особую ценность представляет данная автором ясная интерпретация байесовских алгоритмов для моделей Монте-Карло и марковских цепей.

Читать далее

Как мы создаём HD-карты для автономного транспорта: устройство map-editor

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

Привет! Меня зовут Коля, я руковожу группой разработки геосервисов автономного транспорта. Одно из наших направлений деятельности — разработка инструментов картографии. Обычная дорожно‑уличная сеть подходит людям и приложениям вроде навигаторов, но роботам этого мало: им необходимы HD‑карты, способные описывать окружающий мир с десятками слоёв атрибутов и точностью до сантиметров. Такие карты кладут в основу алгоритмов локализации, навигации и поведения, и именно от их качества зависит безопасность и эффективность автономного транспорта.

Создание подробных HD‑карт — непростая инженерная задача: каждая карта складывается из данных лидаров, спутников и других источников, проходит десятки стадий обработки и валидации, а для редактирования используются специальные геоинформационные редакторы. 

В этой статье мы разберём, как устроен один из ключевых инструментов — map‑editor, обеспечивающий создание и развитие HD‑карт для роботов, какие технические вызовы встречаются по пути и как мы с ними справляемся. Среди наших технологий — FastAPI и C++ для серверной логики, PostgreSQL с PostGIS для работы с геометрией, интеграция с облачными хранилищами и распределёнными вычислениями, а также элементы автоматизации на базе ML.

Читать далее

Ликбез о плавающей точке: сложение, катастрофическое сокращение и бабушка Кэхена

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

Давайте продолжим обсуждение самой неоптимизированной в мире 32-битной библиотеки для работы с плавающей запятой TinyFloat. Библиотека написана на C++ и намеренно избегает встроенных типов плавающей запятой, полагаясь исключительно на 32-битные целые числа. Цель состоит в том, чтобы сделать код максимально читабельным — без бит-хаков и хитроумных уловок.

Библиотека пишется в рамках борьбы с неграмотностью населения, поэтому, я хочу иметь подробную документацию о том, что происходит «под капотом». Оказалось, что лучший способ документировать код C++ — это полностью переписать его на Python :-)

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

Читать далее

Как скопировать дерево, но не точь-в-точь

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

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

Читать далее

Вклад авторов