Обновить
256K+

Алгоритмы *

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

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

MCP vs CLI + Skill: что выгоднее для ИИ‑агента при работе с внутренними API

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

Когда работаешь с ИИ‑агентом каждый день, важно не только качество постановки задачи, но и эффективность расходования ресурсов. Контекстное окно ограничено, а токены тратятся не только на решение самой задачи, но и на служебные данные: описания инструментов, параметры вызовов и промежуточные результаты. Чем выше эти накладные расходы, тем меньше ресурса остаётся на полезную работу. Нам захотелось разобраться, как делать больше, а расходовать меньше.

Для этого мы сравнили два способа «подружить» ИИ‑агента с внутренними API — MCP и CLI + Skill. Взяли гипотезу из внешних исследований, собрали бенчмарк на 14 сценариях и двух моделях, прогнали больше 400 запросов на реальных внутренних инструментах. И в какой‑то момент всё, что работало, сломалось — и это оказалось самым интересным. Пришлось разбираться почему.

Привет, меня зовут Даниил Михайлов, я из команды разработки партнёрских продуктов Городских сервисов Яндекса. В статье расскажу, что именно мы измеряли, как ломали свои же результаты и к каким выводам в итоге пришли. В конце статьи — дерево решений: когда какой подход использовать.

Читать далее

Новости

Нейронные аудиокодеки: мощное сжатие звука с помощью LLM

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

В июле 2024 года французская компания Kyutai опубликовала речевую модель Moshi с нейронным аудиокодеком Mimi. Это был первый в мире голосовой end-to-end AI с открытыми исходниками, способный вести диалог в реальном времени и свободный для использования всеми желающими, демо.

Вместо прямого предсказания сэмплов аудиокодек работает в три этапа:

1. Токенизация звука.

2. Предсказание следующих токенов в LLM.

3. Восстановление оригинала.

Читать далее

Ненормальное марковское программирование

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

Какие программы могут быть по-настоящему достойны хаба "ненормальное программирование"?

Конечно же, программы для нормальных марковских алгорифмов! (Далее - НАМ).

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

Поэтому поставим задачу со звёздочкой: научимся писать для НАМ в компайл-тайме С++!

Для начала, посмотрим: что такое НАМ и что на них вообще можно делать.

Читать далее

Три фикса, четыре ошибки, один файл

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

# Как мы четыре раза неправильно диагностировали зависание на джобе 281 339

Несколько месяцев назад я писал, [как мы четыре раза неправильно чинили мерцание](https://habr.com/ru/articles/1042962/) при рендеринге 4,4 миллиона полигонов. Тогда казалось, что это рекорд: месяц блужданий, четыре отброшенных подхода, решение на неделю. Эта история хуже. Баг пережил четыре диагноза подряд, два из которых мы успели «подтвердить числами», получил по дороге три работающих фикса от несуществующих причин - и в итоге оказался файлом, который лежал на рабочем столе.

Напомню контекст: мы небольшой командой пишем на Rust + Vulkan редактор топологий интегральных схем + верификатор (DRC/LVS/Antenna/PEX) с прицелом на российский рынок. Команда - три человека, я в роли CTO направляю архитектуру и принимаю основные решения. В том числе неверные, о которых ниже. Тестовый основной дизайн всё тот же - Caravel SkyWater SKY130: 4,4 миллиона полигонов, 1014 уникальных ячеек, 22 уровня иерархии, 278 МБ GDS (недавно воспользовались прекрасным проектом [TinyTapeout]( https://github.com/TinyTapeout/) - для прогона на различных gds)

К моменту этой истории мы только что закончили перф-кампанию по паразитной экстракции (PEX). Если коротко: чтобы посчитать ёмкости, нужно сначала собрать цепи - обойти иерархию чипа BFS-ом от каждого "сида" (точки на цепи устройства) и выяснить, какие фигуры электрически связаны. На Caravel это 537 748 сидов. Кампания ужала полный холодный прогон с 962 секунд до 70: пространственный грид вместо квадратичного перебора пар, параллельные трейсы на 14 потоках, кеш результата. Все гейты бит-идентичности зелёные, CLI летает.

Читать далее

Лампа плавного пуска

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

У меня было множество вело фар и всегда меня напрягало то, что фара включается практически мгновенно.

Глаза даже не успевают приспособиться и это доставляет существенный дискомфорт.

В связи с этим я принял решение разработать свою безопасную вело фару.

Читать далее

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

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

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

Слушать в hi-res

Алгоритмы векторного поиска: IVF и HNSW

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

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

Заодно мы затронем тему метрик, чтобы понять, как вообще сравнивают эмбеддинги. Рассмотрим вспомогательный и очень простой алгоритм k-means из классического ML’а, лежащий в основе IVF.

И наконец, подробно разберем два самых главных алгоритма IVF и HNSW с примерами их реализации на Python’е.

Читать далее

Как учить иностранные слова через интервальные повторения

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

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

Тогда я начал разбираться, почему мы забываем новую информацию, как устроены интервальные повторения и по какому принципу Anki выбирает дату следующего показа карточки. В статье расскажу о кривой забывания, системе Лейтнера и алгоритме FSRS, а также покажу, как я реализовал собственную систему повторений в приложении VibeLing — без необходимости каждый раз выбирать между Hard, Good и Easy.

Читать далее

Как мы перепридумали голосовую активацию для Яндекс Дропс и уместили новую модель в 200 килобайт

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

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

Крошечный аккумулятор, мало памяти, чип с жёсткими ограничениями по тактовой частоте, да ещё и с кое‑какими неожиданным сюрпризами на уровне SDK. Всё это потребовало переосмыслить с нуля архитектуру споттера (компонента, который распознаёт обращение «Алиса» прямо на устройстве). 

Меня зовут Григорий Афанасенко, я работаю в команде голосовых технологий Яндекса. Сегодня мы запустили Яндекс Дропс — первое носимое ИИ‑устройство с Алисой AI. В этой статье я расскажу, как мы адаптировали споттер под железо наушников, какие решения пришлось принять, где мы наступили на грабли и что планируем делать дальше. 

Читать далее

Преобразование Фурье в цифровой обработке сигналов. Часть 1: Дискретное преобразование Фурье

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

В этой статье мы начинаем погружение в одну из фундаментальных тем цифровой обработки сигналов (ЦОС) — дискретное преобразование Фурье (ДПФ). Именно ДПФ служит математической основой для понимания более сложных методов спектрального анализа и является отправной точкой для изучения всех остальных видов преобразования Фурье в ЦОС. Будет рассмотрено ДПФ действительных сигналов.

Материал построен так, чтобы объединить теорию, наглядные графики и практический код на Python.

Тема преобразования Фурье в ЦОС обширна и многогранна, поэтому я разбил материал на несколько частей. В первой части мы сосредоточимся на базовых принципах, интуитивном понимании алгоритма и его реализации.

Краткое содержание статьи. Часть 1

В ней поэтапно разбираются фундаментальные понятия, необходимые для понимания ДПФ:

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

Корреляция и ортогональность функций — ключевые понятия, лежащие в основе ДПФ. Именно эти свойства позволяют разложить сложный сигнал на отдельные частотные составляющие.

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

Формула ДПФ — финальный этап, где все изученные понятия сводятся к классической формуле дискретного преобразования Фурье.

Читать далее

Преобразование числа в строку методом умножения на 10

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

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

Читать далее

Самый старый кирпич трансформера наконец переизобрели. DeepSeek взял матрицу из 1967 года

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

За attention-механизм с 2017 года брались сотни раз: sparse attention, linear attention, MoE, MLA, скользящие окна, что только не. А вот residual connection, остаточная связь, та самая x + F(x) из ResNet 2016 года, простояла почти десять лет нетронутой. Её просто унаследовали из résnet'ов, воткнули в трансформер и забыли.

31 декабря 2025-го DeepSeek выложил на arXiv препринт, где взялся именно за этот кирпич. И что показательно, загрузил его на arXiv лично основатель компании Liang Wenfeng, он же в соавторах. Когда основатель сам публикует статью, это обычно значит, что она ляжет в следующую флагманскую модель. Так и вышло: mHC поехал в DeepSeek V4, который выкатили 24 апреля 2026-го.

Разберём, что они сделали, почему это работает и при чём тут матрица из шестидесятых.

Читать далее

В умелых руках и sed — балалайка или пишем «Морской бой» на регулярках

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

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

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

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

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

Сперва я просто хотел показать, какие клевые вещи можно реализовать самыми минимальными средствами, но в итоге получился большой пошаговый гайд. Для тех, кому результат интереснее процесса, в конце статьи есть ссылка на гитхаб, чтобы сразу посмотреть, что получилось. Остальные — наливайте чайку и добро пожаловать под кат!

Погрузиться в пучины регулярных выражений

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

Основы информатики для всех

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

Всем привет. Я сделал бесплатную обучающую платформу shlyk.tech с упором на визуализацию идей и структур. Графы, системы счисления, логику, комбинаторику, индукцию здесь можно потрогать, покрутить, прошагать и понять, почему оно так работает.

Читать далее

Как шахматный подход помог разобраться с фотолентой Яндекс Диска

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

Когда вы загружаете фотографии на Яндекс Диск, они не просто лежат в облаке: ML‑модели анализируют снимки, группируют их в альбомы и выбирают хайлайты для фотоленты в Яндекс Диске. Но чтобы улучшать такую систему, нужно уметь измерять качество её работы. И здесь начинается проблема: модель выбирает «красивые» и «удачные» кадры, а эстетика — вещь субъективная. Одному важны насыщенные цвета, другому — композиция, третьему — эмоции и лица в кадре. Если попросить асессоров ставить оценки от 1 до 10, мы быстро получим не объективную шкалу, а смесь личных вкусов, разной строгости и шума.

Поэтому мы подошли к задаче не как к обычной разметке, а как к исследованию. Вместо абсолютных оценок использовали шахматный подход. Каждая фотография стала «игроком», который соревнуется с другими по 16 признакам эстетики — цветам, фокусу, геометрии, эмоциональности и другим параметрам. Это позволило получить не просто рейтинг кадров, а инструмент для анализа того, какие визуальные признаки учитывают ML‑модели Диска.

Всем привет! Я Всеволод Мещеряков из службы разметки Yandex Crowd Solutions. Мы собираем и размечаем фото, видео, тексты — в общем, готовим данные, на которых учатся ML‑модели. В этой статье расскажу, как подход из мира шахмат помог нам связать субъективное восприятие фотографий с математическими оценками и сделать фотоленту Яндекс Диска ещё красивее.

Читать далее

3D‑лидар против кривого кузова: как мы автоматизировали осмотр фур

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

На складе производителя стройматериалов под погрузку приходят десятки фур в день: габариты фиксированные, машины разные. Часть фур приезжает с кривым кузовом: занижена высота к кабине, неровные борта, наваренные крючки и кронштейны на стойках у дверей. Внутрь такой кузов выглядит нормально, пока в него не заедет погрузчик с паллетой шириной 2,40 м и не упрётся в выступ, которого там быть не должно.

Цена ошибки — повреждённый груз, развёрнутая на КПП машина, простой ворот и сорванный график отгрузки. Для исключения таких ошибок, было принято решение об инспекции фуры человеком: кто‑то заглядывает в кузов и по визуальному осмотру решает, грузить фуру или разворачивать. Это медленно, субъективно и не масштабируется — а отказы по геометрии кузова составляют заметную долю разворотов.

Задача, которая стояла перед командой: автоматизировать этот осмотр. Убрать человека из точки принятия решения и выдавать вердикт «грузить / не грузить» по объективным числам, а не по взгляду грузчика.

Требования заказчика сразу задали высокую планку. Нужно мерить три габарита: ширину свободного прохода, высоту от пола до горизонтальной балки, длину — и находить посторонние предметы внутри кузова. Пороги жёсткие: ширина меньше 2,43 м — отказ, высота меньше 2,60 м — отказ, длина меньше 8 м — отказ. Зазор между «входит» и «не входит» — 2 см: паллета шириной 2,40 м идёт впритык, и выступающий на стойке крючок, съедающий эти 2 см, делает кузов непригодным. То есть мерить надо с точностью лучше сантиметра — и не у ворот, а на всей глубине кузова, до 15 м от точки установки.

Читать далее

Избегаем парадокса пестицида, или Как мы внедрили систему рекомендаций «забытых» тест‑кейсов

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

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

Меня зовут Александра Атаман, я QA‑инженер в команде веба Яндекс Такси. В этой статье я расскажу, как мы оптимизировали процесс формирования регрессионного тестирования для ручного прогона, внедрив систему весов для тест‑кейсов. Этот подход помогает прицельно отбирать наиболее «опасные» сценарии: самые старые, забагованные или потенциально проблемные.

Я поделюсь техническими деталями реализации, логикой распределения весов и результатами нашего эксперимента. Спойлер: ожидания не во всём совпали с реальностью — но именно этот опыт оказался для нас самым ценным.

Читать далее

Проблема 3x+1: Задача для школьника, которая сломала величайших математиков

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

Представьте себе задачу, условия которой можно объяснить восьмилетнему ребенку ровно за тридцать секунд. А теперь представьте, что эта же самая задача десятилетиями заставляет сдаваться величайших математиков современности. Гипотеза Коллатца (или проблема «3x+1») доказывает поразительную вещь: за самыми элементарными арифметическими правилами может скрываться абсолютно непредсказуемый хаос и бесконечная сложность. Разбираемся, в чем подвох этой задачи, почему Пауль Эрдёш предлагал за её решение деньги из своего кармана и как с ней справляются современные суперкомпьютеры.

Читать далее

Искусство создания дорог в играх

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

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

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

Люди тоже их создают. Для меня один из самых удивительных паттернов, которые мы придумали — это дороги.

Иногда я представляю инопланетян из далёких галактик, которые откроют Землю уже спустя много времени после нашего ухода. Леса, снова занятые природой, города, превратившиеся в развалины; однако между ними всё равно заметен слабый паттерн — сеть дорог. Мне нравится думать, что они будут чувствовать то же самое, что и я, когда смотрю на природные паттерны: «Ого, кто-то действительно это продумал».

Градостроительные симуляторы и их дороги

Должен сказать, что дороги восхищали меня с детства.

До сих пор помню, как в возрасте шести-семи лет впервые играл в SimCity 2000. Я понял не особо многое и не знал, что такое зонирование, налоги и спрос. Но дороги сразу меня восхитили.

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

Развязки. Перекрёстки с круговым движением. Эстакады. Сужения полос. Замечал каждую мелочь.

Хотя в каждой новой игре происходит шаг вперёд по сравнению с предыдущей, что-то всё равно продолжало казаться неестественным.

Читать далее

Царский путь к пониманию комплексных чисел. Часть II

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

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

Современные изложения теории комплексных чисел выглядят «магически» и непонятно для многих людей именно потому, что, как правило, разрыв между непониманием XVIII века и теориями XIX века не покрыт. Сначала предлагается изучить основы теории комплексных чисел в том виде, в которой они были сформулированы в середине XVIII века, а потом сразу делается скачок к теориям, созданным в середине XIX века.

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

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

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

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