Обновить
512K+

Алгоритмы *

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

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

Стратификационный анализ ECDSA-подписей и дефектных режимов генерации nonce

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

Мы привыкли, что повтор r в ECDSA — это случайный сбой: плохой генератор, ошибка реализации, повтор nonce. Но что, если за одним repeated-r скрывается целое семейство дефектов (defect-family), которое можно не только обнаружить, но и перенести на другие закрытые ключи?

Представляем закрытую исследовательскую систему — стратификационный анализ ECDSA-подписей на secp256k1. Вместо точечных аномалий мы смотрим на фазовые корпуса подписей, используем торическую геометрию, kNN и перестановочные тесты. Результат:

· Во внешнем корпусе из 30 адресных контекстов и 6257 подписей repeated-r найден только в 1 контексте, межадресных коллизий r — 0. · 58 из 58 контролируемых переносов defect-family с реального адреса-донора на панель реальных адресных целей прошли с полной ECDSA-валидацией реконструированных подписей. · Встроенный publication-safety audit заблокировал открытый bundle, обнаружив 498 проблем (30 критических) — от raw (r,s,z) до восстановленных синтетических k и фрагментов закрытых ключей.

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

Читать далее

Глухой телефон для ИИ: мы замерили физику LLM-графов и поняли, почему добавление агентов всё ломает

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

Индустрия ИИ переживает бум мультиагентных систем. Кажется, рецепт AGI найден: просто соедините 10 умных нейросетей в команду, дайте им роли, и они свернут горы.

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

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

Так появился опенсорсный проект llm-coordination-harness - строгий измерительный стенд (measurement rig), который доказывает, что у общения нейросетей есть своя физика, которую можно и нужно измерять.

Под катом рассказываем и показываем на графиках. Никаких заявлений про AGI - только честный хардкорный ресёрч, физика графов и отрицательные результаты, которые оказались важнее положительных.

Заглянуть в черный ящик

Интересный способ сгруппировать натуральный ряд

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

Вопрос читателю: Как можно сгруппировать натуральный ряд {1, 2, 3, ..., n} в n / 2 групп, чтобы внутри каждой лежали только взаимно-простые числа?

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

Читать далее

Почему argsort(argsort(x)) возвращает ранги элементов массива

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

Иногда в программировании встречаются трюки, которые отлично работают, но почти нигде не объясняется — почему.

Один из таких приёмов в NumPy — вычисление рангов элементов массива с помощью двойного argsort: argsort(argsort(x)). Этот однострочник часто рекомендуют на форумах и в ответах на Stack Overflow, однако строгого объяснения обычно не приводят.

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

Читать далее

Тихая сторона крипторынка: что на самом деле стоит за «магией» торговых ботов

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

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

А что у нас по крипте?

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

Не так давно сама идея о том, что биткойн может стоить 100 тысяч долларов, для многих звучала как «бред сумасшедшего». Причём не только для рядовых скептиков, но и для вполне серьёзных и влиятельных экономистов. Сосем недавно отметка в 10 тысяч казалась фантастикой. Потом рынок долго привыкал к 20 тысячам. Затем спорил, возможны ли 50. А сегодня рост до 200 тысяч уже выглядит лишь вопросом времени.

Мы быстро ко всему привыкаем

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

За это время криптоиндустрия уже успела пройти через многое. Эра ICO — время, когда рынок буквально заливали деньгами за одни лишь обещания. Бум L2-решений и новых блокчейнов. Затем волна NFT, различных Web3-сервисов, GameFi-игр и множества других трендов.

Читать далее

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

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

Меня зовут Иван Васильев, я ведущий аналитик в Ви.Tech, IT-дочке ВсеИнструменты.ру. Хочу показать, как из на первый взгляд простой формулы KPI выросла инженерная задача: нам нужно было не просто посчитать интегральный показатель эффективности поставщика, а объяснить, какая именно закупка его ухудшила и почему. В статье разберу, почему для агрегированных метрик не работает наивный подход, как мы пришли к remove-one analysis и где пришлось отдельно фиксировать логику расчета, чтобы результат вообще можно было интерпретировать.

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

Ответить на него можно было бы общими словами. Но затем появился уточняющий вопрос:
| А какая именно закупка ухудшила показатель?

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

Читать далее

Контролируемая эволюция RAG-системы: оценка mcp серверов и кеширование результатов запрос-ответ

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

Контролируемая эволюция RAG-системы: оценка mcp серверов и кеширование результатов запрос-ответ

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

Читать далее

Почему никто не ожидал, что механизм «предсказать следующее слово» не должен был оказаться так успешен (но оказался)

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

Привет, Хаброжители! Большие языковые модели по-прежнему просто предсказывают следующее слово. Два года назад одна лишь эта причина казалось достаточной, чтобы их отвергать — ведь именно ею обосновывали их неуклюжий вывод.

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

Читать далее

SIMD-парсер CSV

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

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

Читать далее

Один хеш, вместо миллиона проверок: пишем Merkle Tree на Go с нуля

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

Представьте: у вас есть база из миллиона транзакций. Клиент спрашивает: «Моя транзакция точно в блоке?» Вы можете отдать ему все миллион записей для проверки. Или отдать 20 хешей по 32 байта - и он сам математически докажет, что его транзакция на месте. Без доверия. Без скачивания всего блока. За O(log N)

Merkle tree - структура данных на которая является Bitcoin, Git, IPFS и Certificate Transparency. Посмотрим как она работает и напишем свою реализацию на Golang c ДЖЕНЕРИКАМИ йоу.

Читать далее

Вся музыка, все фотографии и весь Wi-Fi работают на одном трюке. Ему 200 лет

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

Откройте ваш плейлист и нажмите play на любом треке.

Эта песня попала в ваши наушники благодаря одной идее. Той самой, за которую француза в 1807 году высмеяли на заседании Парижской академии наук. Лаплас был «за», но Лагранж встал и сказал: «Это невозможно.» Француза звали Жан-Батист Жозеф Фурье. Его идея была настолько простой, что учёные отказались ей поверить.

Читать далее

Как выбирают свой путь призраки в Pac-Man

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

Pac-Man — полностью детерминированная игра. Как я объяснял в своём видео об этой игре, все движения призраков зависят от того, где на текущий момент находится Pac-Man. Следовательно, обладая этими знаниями, можно точно спрогнозировать, куда будут двигаться призраки в любой момент времени. Но так ли это? Когда Pac-Man съедает большой шарик («энерджайзер»), призраки пугаются и начинают двигаться по паттерну, который кажется случайным и непредсказуемым. Это единственный момент, когда в игре используется генератор случайных чисел (RNG): для определения того, в каком направлении повернёт испуганный призрак на перекрёстке лабиринта. Хоть это решение тоже детерминировано, это единственный непредсказуемый элемент Pac-Man.  

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

Читать далее

Игра в угадайку

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

Играют двое: загадывающий и отгадывающий. Загадывающий загадывает целое число в известном диапазоне — скажем, от 1 до 100 включительно. Отгадывающий пытается это число отгадать, называя варианты. После каждого неверного варианта загадывающий говорит: «больше» или «меньше».

Задача: отгадать число за минимальное количество попыток, используя минимальный объем вычислений.

Вам кажется, что это очень просто? Поверьте, это совсем не так!

Читать далее

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

Галлюцинации LLM — это артефакты сжатия. И это объясняет вообще всё

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

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

Вы бы сказали: «это lossy-компрессия, часть данных неизбежно потеряется».

И были бы правы. Потому что именно это делает LLM.

Читать далее

Как я случайно написал самый быстрый CSV-парсер на C#

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

На рождественских каникулах я ехал на автобусах из одного штата в другой, и мне нужно было как-то убить 24 часа. Я читал об UTF-8 и узнал об этой кодировке нечто интересное: все традиционные символы ASCII сохранены в ней в их исходном однобайтовом представлении, поэтому их можно сканировать крайне быстро. Я решил поэкспериментировать с кодом, максимально быстро подсчитывающим такие символы, в результате получив готовый парсер CSV, который вполне сравним с предыдущими парсерами, а то и быстрее них.

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

Читать далее

Не бойтесь динамического программирования

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

Говорят, все боятся задач на динамическое программирование (aka ДП), потому что их решения выглядят как из задачника по матанализу. А мне оно всегда нравилось. Одна изящная формула — и задача решена.

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

Разбор трех задачек

Книга: «Основы GraphRAG. Улучшенный RAG на базе графов знаний»

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

Привет, Хабожители! Создайте и разверните систему GraphRAG производственного уровня. Научитесь извлекать структурированные знания из текста и комбинировать методы векторного поиска с поиском по графам. Книга богата практическими примерами: от создания инструмента поиска по векторному сходству и приложения Agentic RAG до оценки эффективности и точности результатов работы такого приложения.

Читать далее

Математическое программирование vs RL: может ли ИИ догнать классику в оптимизации?

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

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

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

Материал будет полезен как заядлым специалистам по мат.оптимизации, так и ml-инженерам или data scientist’ам. Рассматриваемая задача может быть интересна специалистам из области логистики/транспортных перевозок.

Читать далее

Новые способы хранения тайлов в Картах: как один сервер выдерживает 80k RPS

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

80k RPS и 25 Гбит/с трафика тайлов с одного сервера — звучит как мечта для картографического сервиса? На самом деле это реально — если ваш способ отдачи тайлов спроектирован для этого.

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

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

Читать далее

Множество Мандельброта — видео

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

Анимация: генерирует последовательность из 255 высокоточных кадров в формате BMP (frame_000.bmp ... frame_254.bmp) и автоматически компилирует их в видеоролик (файл Mandelbrot.mp4) с частотой 30 кадров в секунду, используя встроенный FFmpeg.

Скачать последнюю версию (Windows и Linux)
В windows это Mandelbrot_windows.exe и ffmpeg.exe
https://github.com/Divetoxx/Mandelbrot-Video/releases
Выше README содержит English и Русский!

FFmpeg - "швейцарский армейский нож" для обработки видео. В 2026 году он остается отраслевым стандартом, поддерживаемым сообществом разработчиков открытого программного обеспечения. От YouTube и Netflix до профессиональных киностудий - все на него полагаются. И да, он совершенно бесплатный.

Читать далее