Всё про Алгоритмы и Структуры данных
7.8K subscribers
342 photos
36 videos
5 files
3.09K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество, авторские права: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Как Pizza Tycoon симулировала дорожное движение на процессоре с частотой 25 МГц

Я работал над Pizza Legacy — опенсорсным воссозданием игры 1994 года Pizza Tycoon для DOS. В игре есть вид на улицы города, при скроллинге которого игрок наблюдает постоянный поток машин. Это примерно 20-30 маленьких спрайтов, однако они едут по дорожной сети, создают очереди на перекрёстках и в целом выглядят как оживлённый город. Да, симуляция иногда глючит, машины проезжают друг через друга, но этого достаточно, чтобы придать карте ощущение жизни. И всё это на процессоре 386 с частотой 25 МГц.

https://habr.com/ru/articles/1021804/

Алгоритмы и Структуры данных
Поиск по коду: почему просто проиндексировать все коммиты — плохая идея

Привет, Хабр! Меня зовут Владимир Бобров, я разработчик в Yandex Infrastructure. Занимаюсь навигацией и поиском по коду на нашей платформе для полного цикла разработки IT-продуктов — SourceCraft.

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

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

https://habr.com/ru/companies/sourcecraft/articles/1021852/

Алгоритмы и Структуры данных
1👍1
Как попасть в ответы нейросетей: ChatGPT, Google AI, Яндекс.Алиса, Perplexity, Claude, Gemini, DeepSeek

Как далеко вперёд собирается рынок?
Цифры и впечатляют, и оставляют за собой кучу вопросов одновременно:

Глобальный рынок генеративного ИИ растёт кратно: оценки доходят до $1,3–1,5 трлн к 2032–2035 году

Только рынок LLM прогнозируется на уровне $149+ млрд к 2035 году

В России — рынок ИИ уже измеряется сотнями миллиардов рублей и растёт двузначными темпами ежегодно

И главное — каждый третий пользователь уже использует ИИ для принятия решений (покупки, выбор подрядчиков, анализ)

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

https://habr.com/ru/articles/1021980/

Алгоритмы и Структуры данных
Парадокс ансамблей: почему «слабые» модели иногда побеждают «сильные»

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

https://habr.com/ru/articles/1022318/

Алгоритмы и Структуры данных
1
AGC или как перестать подстраивать громкость вручную

Я не являюсь профессиональным DSP разработчиком, моя стезя — системное программирование и разработках встраиваемых систем, в частности, специальных систем связи для работы с VoIP. Данная статья рассчитана на тех, кому интересны алгоритмы обработки звука и кто начинает свой путь в их изучении. Здесь я хочу описать свой путь в исследовании и реализации одного из алгоритмов. На Хабре уже выходили статьи на данную тему. Первая касалась аппаратной реализации, а вторая вышла довольно давно, но теория в ней не потеряла актуальности.

https://habr.com/ru/articles/1022424/

Алгоритмы и Структуры данных
Как мы перестали молиться на AI и собрали параноидальный конвейер для МРТ (с открытым кодом)

На каждой второй конференции по медицинскому AI звучит один и тот же сценарий: «Дообучим мультимодальную модель, скормим ей DICOM, и она сама выдаст диагноз». На практике, когда этот скрипт пытается попасть в реальную клинику, начинаются неожиданности. OOM на GPU, врачи не понимают, где галлюцинация модели, а где финальный отчёт, двухгигабайтные NIfTI-исследования рвут таймауты балансировщика.

Я какое-то время тоже думала, что главное — это модель. А потом пересмотрела собственный код. У меня уже есть MRI Second Opinion. Но это не нейросеть. Это контур с доменной моделью, конвейером приёма данных, циклом обработки, обязательным врачебным рецензированием, финализацией и отдельным репозиторием с открытым кодом. В медицинском IT модель — не главная проблема. Главная проблема — чтобы между входом и выходом ничего не потерялось и не сломалось.

https://habr.com/ru/articles/1022436/

Алгоритмы и Структуры данных
2
Объясняем векторные базы данных на трех уровнях сложности

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

https://habr.com/ru/companies/wunderfund/articles/1022820/

Алгоритмы и Структуры данных
Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь

Мы решаем эту задачу через матричный фильтр. На датасете в 50 млн точек это даёт ~100% Coverage, ~100% Visual Score. LTTB на тех же данных — 16.4% и 40.8% соответственно. По производительности мы остаёмся в тех же пределах.

Под катом — почему стандартные алгоритмы фундаментально не подходят для scatter-графиков, как устроен наш подход и результаты бенчмарка на ~3 000 реальных промышленных датасетах от 19 тысяч до 50+ миллионов точек.

https://habr.com/ru/articles/1022894/

Алгоритмы и Структуры данных
Почему баг в imageproc потребовал изменения API в image-rs

Речь пойдет о двух крейтах: imageproc и image. imageproc - библиотека обработки изображений, основанная на библиотеке image.

При рендере текста в imageproc я столкнулся с багом: алгоритм корректно работал для RGB, но ломался для RGBA.

Попытка исправить его привела к неожиданному результату - фикс оказался невозможен без изменения API image-rs.

Разберём, почему так произошло.

https://habr.com/ru/articles/1023514/

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

Всем привет! Меня зовут Егор Ермаков, я бэкенд‑разработчик в группе разработки процессинга Техплатформы городских сервисов Яндекса.

Техплатформа — это инфраструктурная платформа для всех городских сервисов Яндекса: Такси, Еды, Лавки, Доставки, а также для различных шеринговых сервисов — каршеринга, зарядных станций, самокатов и других.

Один из ключевых сервисов нашей команды — ProcaaS (Processing as a Service). Он предназначен для асинхронного выполнения динамических сценариев, которые:

https://habr.com/ru/companies/yandex/articles/1021956/

Алгоритмы и Структуры данных
1
Моцарт ex Machina: Кто научил ИИ сочинять музыку

По всей видимости, робот действительно может написать симфонию. По крайней мере, творения нейро-Бетховенов и Мэдлибов могут водрузить кромешное иго на стриминговых площадках уже в обозримом будущем — в конце 2025 туда загружалось порядка 30 000 нейротреков ежедневно.

Но кто первым познакомил компьютер с моцартовским ремеслом? И при чем здесь “Уральские напевы”?

Брамс (и бадабумс) из коробки
Механическая музыка, наверно, стара как мир. Известно, что автоматизацию “прикрутили” к звуку еще в 250 году до н.э. Ктесибий из Александрии сконструировал часы-клепсидры, в которых меняющийся уровень воды заставлял звенеть маленький колокол. В других вариациях там была гудящая труба, своеобразная вувузела античности.

https://habr.com/ru/companies/studyai/articles/1023710/

Алгоритмы и Структуры данных
«Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки

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

Недавно мне представилась возможность проверить это на практике. Коллега-логист (назовем его Сергей) предложил сравнить мой алгоритм Skewer-API с его собственной разработкой на реальном кейсе: 398 разнородных SKU, которые нужно распределить по контейнерам с минимальными затратами.

В прошлой статье я рассказывал о запуске веб-сервиса https://packing.skewer-api.ru/, который предназначен для быстрой упаковки грузов в контейнеры и фуры. На тот момент система умела работать в двух режимах: «по объему» (приоритет крупным объектам) и «по списку» (First In — First Packed).

https://habr.com/ru/articles/1023920/

Алгоритмы и Структуры данных
1
Автономность как точка невозврата: кто будет субъектом в цифровом будущем

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

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

https://habr.com/ru/articles/1020692/

Алгоритмы и Структуры данных
Фазовая синхронизация в системе FMComms5 от Analog Devices и оценка угла прихода сигнала

В этой статье дана инструкция для выполнения фазовой синхронизации в FMComms5 от Analog Devices и реализации метода пеленгации, использующего эту функцию. Оценочная плата FMComms5 обеспечивает высокую точность фазовой синхронизации. В этой статье рассказывается, как выровнять фазы двух приемопередатчиков AD9361 с помощью специальной программной библиотеки libad9361, созданной на основе инфраструктуры ввода-вывода libiio. Фазовое выравнивание необходимо для многих радиолокационных систем, таких как пеленгаторы и когерентные системы MIMO.

https://habr.com/ru/articles/1029232/

Алгоритмы и Структуры данных
Выделение регистров процессора при помощи генетического алгоритма

В динамическом компиляторе RyuJIT реализован алгоритм линейной схемы распределения регистров (LSRA), в соответствии с которым регистры процессора присваиваются сгенерированному коду. При выборе регистров алгоритм LSRA применяет разнообразные эвристики (если быть точным, их 17), выбирая из всех доступных регистров тот, который лучше всего подходит в настоящий момент. Все регистры можно разделить на две категории. Либо регистр не содержит значения переменной, поэтому может быть выделен для очередной переменной, либо он уже содержит значение переменной и, следовательно, он занят. Если в процессе присваивания регистров выбран тот, который занят, то значение, которое в нём сейчас содержится, приходится предварительно сохранить в памяти, а потом уже присвоить туда, куда нужно. Такая операция называется «выгрузкой переменной». В алгоритме LSRA компилятора RyuJIT есть (14 видов) эвристики, в соответствии с которыми сначала выбирается один из свободных регистров. Если свободных регистров не окажется, то есть ещё 4 эвристики, согласно которым выбирается один из занятых регистров. Занятый регистр выбирается в зависимости от того, содержимое какого регистра будет дешевле выгрузить.

https://habr.com/ru/articles/1025788/

Алгоритмы и Структуры данных
Создание анонимного чата в Telegram: бот с MiniApp интерфейсом

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

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

https://habr.com/ru/articles/1020692/

Алгоритмы и Структуры данных
Гамма-флип: Технический разбор перехода от диапазона к тренду и механика алгоритмического хеджирования

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

Рынок опционов, а в особенности сегмент контрактов с нулевым сроком до экспирации (те самые 0DTE), разросся до таких абсурдных масштабов, что объемы торгов по ним зачастую превышают объемы торгов самими базовыми активами. В этой новой парадигме традиционные рыночные нарративы просто отходят на второй план. Главным драйвером внутридневной волатильности стала сухая, механическая вещь - хеджирование опционных позиций маркетмейкерами.

Чтобы во всем этом разобраться и научиться предсказывать смену рыночного режима, алгоритмические фонды и квантовые аналитики используют один ключевой сигнал. Он называется «Гамма-флип» (Gamma Flip).

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

https://habr.com/ru/articles/1024886/

Алгоритмы и Структуры данных
Управление фазой аппаратного PWM сигнала на STM32 (или таймер на ошейнике)

Как известно на микроконтроллерах STM32 можно генерировать PWM сигналы. Это всегда применяют для регулирования яркости свечения светодиодов, управления температурой нагревателей, управления крутящим моментом на моторах. При этом легко регулировать частоту, заполнение и инвертировать фазу, меняя полярность. Однако как непрерывно регулировать фазу на первый взгляд даже не ясно. Фаза сигнала это то насколько он смещен вдоль оси Х. В карте регистров аппаратных таймеров STM32 просто нет регистра, который отвечает за фазу сигнала.

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

https://habr.com/ru/articles/1023940/

Алгоритмы и Структуры данных
👍2
Schnorr/MuSig2 Nonce-Forensics:

Эта статья не про «магический взлом Bitcoin» и не про сенсационную кнопку восстановления приватного ключа. Она про другое: как строго и математически корректно перевести подписи Schnorr (BIP340) и MuSig2 (BIP327) из формата «пара чисел (r, s)» в формат набора affine-ограничений, семейства скрытых нонсов и измеримых структурных функционалов.

https://habr.com/ru/articles/1025236/

Алгоритмы и Структуры данных