Обновить
270.47

Алгоритмы *

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

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

Нейросеть без нейросети: как обучить классификатор Iris через SAT и запустить это на GPU

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

Вступление
В прошлой статье я показывал,как мы в AGIQ Solver Enterprise применили квантово‑вдохновлённый популяционный подход на GPU для NP‑задач и получили ускорение на практических постановках в 50–100 раз по сравнению с последовательным перебором и плохо распараллеливаемыми схемами.

Сегодня — следующий шаг:покажу,как задачи машинного обучения можно кодировать в SAT/MaxSAT, а затем решать обычным NP‑солвером — тем же AGIQ Solver Enterprise.

О чём статья (и что мы НЕ делаем)
Мы не будем пытаться “запихнуть” в SAT весь мир DL (ResNet/LLM/градиенты/батчи). Это плохая идея: там, где нужна дифференцируемая оптимизация, SGD остаётся королём.

Зато есть большой класс ML‑задач, где:
модель дискретная или может быть дискретизирована,
важны ограничения (fairness/монотонность/запреты/политики),
важна проверяемость и воспроизводимость решения,
нужен глобальный поиск (а не локальная оптимизация по градиенту).

Вот здесь SAT/MaxSAT — это не экзотика,а универсальный язык “правила + ограничения + оптимизация”.

Почему SAT вообще способен “кодировать что угодно”
В теории, любой NP‑вопрос можно редуцировать к SAT. На практике это означает простую вещь:

Читать далее

Новости

Обзор книг аналитика данных

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

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

Читать далее

Неплоский мир: как мы делаем рельеф настоящим

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

Когда вы прокладываете маршрут в горах в 2ГИС или рассматриваете вид на дом в 3D, вы вряд ли задумываетесь, что под капотом карты происходит серьёзная вычислительная работа. За каждой формой рельефа — тысячи треугольников, интерполяции и алгоритмы, которые превращают цифровую модель местности в реалистичную поверхность.

Впервые рельеф мы добавили в веб‑версию 2ГИС в 2022 году. С тех пор мы не останавливались на достигнутом: доработали алгоритмы, улучшили качество исходных данных, научили дороги и здания влиять на поверхность. А недавно мы выкатили рельеф и в мобильное приложение.

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

Читать далее

Головоломка Ханойские башни на Java

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

Головоломка Ханойские башни (или Ханойская башня, или Towers of Hanoi) – классический пример задачи, в которой лучшее и самое наглядное решение основывается на рекурсии. Кроме того, эта задача иногда встречается на собеседованиях. Тем удивительнее, что последняя статья (хотя и весьма обстоятельная), посвященная  этой задаче на Хабре датируется 2013-м годом и решение приводится на Delphi. Давайте исправим эту печальную ситуацию!

Читать далее

Одна формула, позволяющая понять 3D-графику

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

Учась в школе, я обнаружил очень простую математическую формулу, о которой не перестаю думать и сегодня. Смысл её в следующем: представьте, что у вас есть 3D-точка в воображаемом 3D-пространстве за экраном. Для проецирования этой 3D-точки на экран нужно взять её координату X, поделённую на Z, и аналогично её Y / Z. И в результате вы получите проекцию точки на экран: x'=\frac{x}{z} и y'=\frac{y}{z}. А если у вас есть множество точек в этом 3D-пространстве за экраном, и вы начнёте их анимировать и вращать их, а потом воспользуетесь этой формулой для рендеринга всех точек на экране, то это будет выглядеть, как 3D-сцена или 3D-объект. Давайте попробуем эту формулу в деле.

Читать далее

Как я написал радар межбиржевых спредов на Python и понял, почему 90% публичных ботов считают прибыль неправильно

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

Как я написал радар межбиржевых спредов на Python и понял, почему 90% публичных ботов считают прибыль неправильно

Читать далее

Big O от абстракции на собеседованиях к реальному коду

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

"Этот алгоритм работает за O(n log n)", часто вспоминается эта фраза, когда мы хотим пойти на собеседование, звучит как что-то абстрактное из учебников по алгоритмам. На самом деле Big O — это способ описания производительности функции без привязки к конкретному времени выполнения.

Читать далее

Поговорим о репутации

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

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

Читать далее

«Напомним, ранее...»: зачем мы вернули RAG, от которого сами отказались

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

Мы строим Рерайт-Завод – AI-систему для автоматизации рерайта новостей в региональных СМИ. В этой статье рассказываем, почему вернули RAG, от которого сами отказались: как реализован поиск бэка (background-контекста) для новостных статей с помощью embeddings и трёх агентов.

Читать далее

Decima-8: Нейроморфная архитектура, оперирующая уровнями энергии

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

Современные нейроморфные системы сталкиваются с двумя независимыми проблемами.

Проблема 1: Кодирование информации

Бинарные спайковые сети (SNN) передают градации сигнала через:
Частотное кодирование (множество тактов на одно значение)
Увеличение количества линий передачи

Проблема 2: Аппаратная реализация

Аналоговые мемристорные кроссбары обещают естественную нейроморфность, но содержат следующие проблемы:
Шум и дрейф параметров
Недетерминизм вычислений
Каждый чип требует индивидуальной калибровки

Традиционные Network-on-Chip (NoC) добавляют overhead:
~40% площади кристалла уходит на маршрутизаторы
~70% энергии тратится на пересылку данных, а не вычисления

Decima-8 предлагает:

Level16: кодирование уровня активации (0..15) в одном такте на одной линии. Это компромисс между бинарным представлением и аналоговой непрерывностью.
Цифровые кроссбары (эмуляция мемристорных матриц): детерминизм, воспроизводимость, отсутствие шума
Эстафетную активацию вместо пакетной маршрутизации: тайлы не передают данные друг другу, активация распространяется через граф зависимостей
Результат: фиксированная задержка, предсказуемое поведение, 0% площади на роутеры.

Читать далее

Почему ReAct-агенты ломаются в продакшене и чем их заменить

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

Приветствую читателей.
Мы пытались построить LLM-чат для продакшена.
Через месяц у нас был 20k-токенный prompt, 50 тулзов и ответы по 2 минуты.
В итоге пришлось отказаться от ReAct и перейти на LLMCompiler.

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

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

Простейший пример чата.

Читать далее

Как дата саинтист имиджборду писал

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

На дворе конец 2023. Я только что уволился из Яндекса и скучаю по ячану, чуть меньше скучаю по этушке, вообще не скучаю по таскам, дедлайнам, ревью. Чтобы заполнить возникший информационный вакуум, пробую переключиться на реддит, hacker news, пикабу, вышивание крестиком, сканворды, пилатес — не то. Тогда мне в голову приходит гениальная идея: а почему бы не сделать свою имиджборду с авторизацией по корпоративной почте крупных российских компаний? Ячан для всех!

Первая мысль — взять готовый движок и допилить под себя, в открытом доступе уже есть: lynx, vichan, wakaba, kareha, fchannel. Потыкался — ничего не понятно. Как ленивый человек решаю, что надо писать своё.
На тот момент я:

Не понимал разницу между HTTP и HTTPS

Не знал, что такое handler, router, middleware

Считал, что DNS — это какой-то раздел электронной музыки

Думал, что куки и кэш — это одно и то же

Не без труда отличал header от body

Не мог пропатчить kde2 под freebsd

Короче говоря, я был именно тем человеком, который должен был писать проект с нуля. Цель понятна, надо выбрать инструменты. Я неплохо знал питон и c++... поэтому языком разработки выбрал Голанг. Мой опыт с Голангом на тот момент ограничивался прослушанным фоном на х2 ШАДовским курсом. Прослушал я его в автопоездке Москва — Челябинск. Не написал на Го ни одной строчки кода, но суммарно прослушал — именно «прослушал», ибо рассмотреть мелкий шрифт на экране телефона, будучи за рулём, решительно невозможно — около 30 часов материала. Написать свой движок имиджборды - хороший повод попрактиковаться.

Читать далее

Создание идеального лабиринта с помощью упрощённого алгоритма Прима

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

Лабиринты использовались в видеоиграх с момента их появления. Первой видеоигрой с процедурно генерируемым лабиринтом была Beneath Apple Manor, выпущенная в 1978 году. Лабиринт в ней генерировался методом деления на комнаты и коридоры, из-за этого лабиринт часто выглядел однообразным и предсказуемым, что портило впечатление от игры. Для того, чтобы лабиринт выглядел естественнее разработчики стали использовать различные алгоритмы на графах. В этой статье мы рассмотрим реализации генерации идеального лабиринта с помощью алгоритма Прима.

Читать далее

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

Повторяем профиль Телеграма, используя Metaballs

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

Я потратил много времени, чтобы разобраться, как работает анимация аватара с Dynamic Island в Telegram.

Затем я реализовал её на Flutter с помощью metaballs и шейдеров 🚀

Узнать, что скрывает Телеграм

Применяем TLA+ на практике

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

Привет, Хабр! Меня зовут Сергей, я работаю в компании InfoWatch разработчиком на продукте ARMA Стена (NGFW). Подробнее о том, что такое ARMA Стена, можно прочитать тут.

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

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

Статья состоит из двух частей:

1) Что такое формальная верификация и где она применятся

2) Решение бизнес-задачи в NGFW

Верифицировать статью

Сравнение двух налоговых служб: ФНС России и IRS США

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

12 лет я отработал в ФНС России: начинал в районной инспекции и завершал карьеру в Управлении ФНС по субъекту. И довольно долго жил с ощущением, что «у нас налоги мягче», предпринимателю проще дышать, а где-то «там» всё устроено жестче и формальнее.

Но всё оказалось не так однозначно, как казалось изнутри системы. Теперь, находясь по другую сторону баррикад, я решил сравнить две налоговые системы: российскую ФНС и американскую IRS, и в итоге оказалось, что налоговое бремя, у нас в России, не такое уж низкое как преподносят в СМИ - оно просто иначе спрятано и иначе распределено. В России человек чаще всего видит только НДФЛ, но значительная часть нагрузки живёт «над зарплатой» - в страховых взносах работодателя, а затем догоняет нас в потреблении через НДС, который уже встроен в цену.

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

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

Читать далее

Множество Мандельброта. 32-бит TrueColor. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). И цвета

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

Множество Мандельброта. 32-бит TrueColor. 60 FPS. 80-бит long double. OpenMP. Суперсэмплинг 2x2 (4 прохода). И цвета. Я хочу сказать. Это самая нужная вещь во Вселенной. Самая глубокое. И я сейчас за всю жизнь наконец стал писать код и сделал. Довольно сложное. И самое прекрасное. Скачайте и посмотрите! Это экзешник, в ГитХаб.

github: Download Latest Version Windows And Source code

Читать далее

Забыть про Backprop: Как я собрал «Термодинамический Мозг» с фазой сна и митозом, который влезет в Arduino

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


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

А что если вернуться к истокам? Что если интеллект — это не градиентный спуск, а кристаллизация связей под давлением информации?

В этой статье я расскажу о концепте Термодинамического Мозга. Это самоорганизующийся граф, который обучается в один проход O(1), непрерывно адаптируется к новым данным, спит по ночам, чтобы не сойти с ума, и настолько нетребователен к ресурсам, что его можно запустить хоть во вкладке браузера, хоть на Arduino.

Запустить митоз

Как я построил Graph RAG систему с точностью 96.7% за 5 дней: от научных статей до production-ready пайплайна

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

Я реализовал Graph RAG систему, которая комбинирует 5 техник из свежих научных статей (KET-RAG, HippoRAG 2, VectorCypher) в единый пайплайн с декларативным Datalog reasoning-движком, полной провенансной трассировкой и типизированным API. Результат: 174/180 (96.7%) на билингвальном бенчмарке из 30 вопросов, оценённых в 6 режимах retrieval. Три режима достигли 100%. В статье — архитектура, 10 уроков оптимизации и эволюция от 38% до 96.7% за 10 итераций.

Читать далее

Генерация лабиринтов с использованием алгоритма Recursive backtracker

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

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

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