TL;DR
Algorithmic Thinking Theory — теоретическая работа, которая формализует принципы итеративного улучшения решений в LLM. Исследователи из Google и ETH Zurich доказывают математически, что синтез (объединение идей из нескольких попыток) работает лучше, чем селекция (выбор лучшего из множества вариантов). Вместо "сгенерируй 32 решения, выбери лучшее" — "сгенерируй несколько решений, объедини их сильные стороны, повтори процесс".
Модель плохо использует latent-способности при одиночной генерации. Парадокс: на сложных задачах (например, олимпиадная математика) pass@1 может быть 10%, pass@32 — 40%, но "best-of-32" (выбери лучший из 32) даёт только 31-38%. Способность модели распределена между несколькими попытками — каждая содержит частично правильные идеи, но ни одна не идеальна. Простой выбор не работает — нужно извлечь и скомбинировать полезное из разных вариантов.
Работа вводит концепцию reasoning oracle — функции, которая принимает контекст из предыдущих решений и генерирует новое, используя их качество. Формализует три алгоритма: Branching (объединяй решения слоями), Genetic (переиспользуй популяцию решений), Random Sampling (бери случайную выборку из всех предыдущих). Доказывает, что все три достигают оптимальной вероятности успеха при достаточном числе итераций.
Схема методов
Работа описывает три алгоритма. Все они применимы в обычном чате через последовательные запросы.
BRANCHING ALGORITHM (древовидный синтез):
Уровень 0: Генерируй k решений без контекста → s₁, s₂, ..., sₖ
Уровень 1: Объедини по группам (например, по 3) → новые решения
Уровень 2: Объедини решения из уровня 1 → ещё более сильное
...
Уровень L: Финальный синтез → итоговое решение
Каждый уровень работает с независимыми группами. Число вызовов растёт экспоненциально.
GENETIC ALGORITHM (популяционный синтез):
Популяция 0: Генерируй s₁ решений без контекста
Популяция 1: Для каждого из s₂ новых — возьми k₁ случайных из популяции 0
Популяция 2: Для каждого из s₃ новых — возьми k₂ случайных из популяции 1
...
Популяция L: Финальный синтез
Переиспользует решения → меньше вызовов, чем Branching.
RANDOM SAMPLING ALGORITHM (накопительный синтез):
Шаг 1: s₁ ← генерируй без контекста
Шаг 2: s₂ ← генерируй на основе случайных k из {s₁}
Шаг 3: s₃ ← генерируй на основе случайных k из {s₁, s₂}
...
Шаг n: sₙ ← генерируй на основе случайных k из всех предыдущих
На каждом шаге использует всю историю попыток.
Пример применения
Задача: Нужно выбрать бизнес-нишу для нового продукта. Хочешь не просто список идей, а глубокую проработку с учётом рисков, трендов и твоих возможностей.
Промпт (Genetic Algorithm):
Моя задача: выбрать бизнес-нишу в сфере [твоя сфера].
ЭТАП 1 (популяция стартовых идей):
Сгенерируй 5 разных подходов к выбору ниши. Каждый подход должен использовать
свою логику: тренды, личные сильные стороны, низкую конкуренцию, быстрый выход
на рынок, высокую маржинальность.
ЭТАП 2 (синтез первого уровня):
Возьми случайно 3 подхода из предыдущих. Объедини их сильные стороны в новый
подход. Повтори 3 раза (получится 3 новых подхода).
ЭТАП 3 (финальный синтез):
Возьми 2 случайных подхода из предыдущего этапа. Создай финальную рекомендацию,
которая объединяет лучшее из обоих.
Покажи результаты каждого этапа отдельно.
Результат: Модель выдаст структурированный вывод по этапам: - 5 стартовых подходов с разной логикой - 3 синтезированных подхода, где видно как объединяются принципы (например, "высокая маржинальность + тренды" → новая логика) - Финальную рекомендацию, которая глубже и устойчивее любого из стартовых вариантов
Вы увидите не просто "лучший вариант из пяти", а эволюцию мышления — как идеи перетекают и усиливают друг друга.
Почему это работает
Слабость: LLM при одном вызове генерирует решение из одной "ветки" reasoning. Даже если вероятность правильного ответа где-то в reasoning space высокая, одна попытка может промахнуться. При температуре >0 разные вызовы исследуют разные части пространства решений — где-то правильная логика, где-то правильные факты, где-то правильная структура. Но всё это распределено.
Сильная сторона: LLM отлично синтезирует информацию из контекста. Если показать несколько попыток (даже с ошибками), модель извлекает паттерны, комбинирует правильные части, отбрасывает противоречия. Контекст работает как внешняя память reasoning — модель видит "я уже пробовала это, там была ошибка" или "в двух попытках повторяется одна идея — значит она сильная".
Механика: Алгоритмы используют контекст предыдущих решений для направления следующей генерации. Вместо "начни с нуля" модель получает "вот 3 попытки, объедини их". Это сужает reasoning space до пересечения сильных зон предыдущих попыток. Работа доказывает математически: такой подход гарантированно сходится к оптимальной вероятности успеха.
Ключевая находка: Есть оптимальный размер контекста. Слишком мало решений в контексте (k=1) — мало информации для синтеза. Слишком много (k→∞) — сигнал размывается, модель теряется в объёме. Исследователи доказывают существование sweet spot и показывают, что разные модели декрея (экспоненциальный, полиномиальный) требуют разных стратегий.
Рычаги управления
Число решений в контексте (k): - Малое k (2-3) → быстрее, острее фокус, но может пропустить важное - Большое k (5-7) → медленнее, шире охват, но может размыть сигнал - Для сложных задач начни с k=3, для простых — k=2
Глубина синтеза (L): - L=1 → одно объединение, быстро - L=2-3 → мета-уровень, более глубокий инсайт - Больше не всегда лучше — diminishing returns после 3-4 уровней
Размер популяции (для Genetic): - Малая популяция (3-5) → экономия токенов, риск застрять в локальном оптимуме - Большая популяция (10-15) → лучше исследование пространства решений, дороже - Для продакшена: популяция 5, глубина 2 — баланс скорости и качества
Способ выбора из предыдущих: - Случайный выбор (как в алгоритмах) → хорошее исследование - Выбор "лучших" (если можешь оценить) → быстрее к результату, но может зациклить - Комбинация: случайный из топ-50% → баланс разнообразия и качества
Шаблон промпта
Даю шаблон Genetic Algorithm — он самый практичный (баланс качества и числа вызовов).
ЗАДАЧА: {твоя_задача}
ПОПУЛЯЦИЯ 0 (стартовые решения):
Сгенерируй {n_start} разных подходов к решению. Каждый должен использовать
свою логику или фокус. Пронумеруй их.
ПОПУЛЯЦИЯ 1 (первый синтез):
Создай {n_level1} новых решений. Для каждого:
1. Выбери случайно {k1} решений из Популяции 0
2. Объедини их сильные стороны в новое решение
3. Укажи какие решения использовал
ПОПУЛЯЦИЯ 2 (второй синтез):
Создай {n_level2} новых решений. Для каждого:
1. Выбери случайно {k2} решений из Популяции 1
2. Объедини их сильные стороны в новое решение
3. Укажи какие решения использовал
ФИНАЛЬНЫЙ СИНТЕЗ:
Возьми {k_final} случайных решений из Популяции 2.
Создай итоговое решение, которое объединяет лучшее из них.
---
Покажи результаты каждого этапа.
Что подставлять:
- {твоя_задача} — конкретная задача (чем сложнее, тем больше уровней)
- {n_start} — стартовых решений (рекомендую 5-7)
- {n_level1}, {n_level2} — размер популяций (рекомендую 3-5 на уровень)
- {k1}, {k2}, {k_final} — сколько решений объединять (рекомендую 2-3)
Упрощённая версия (2 уровня):
{задача}
ШАГ 1: Дай 5 разных решений. Пронумеруй.
ШАГ 2: Возьми случайно 3 из них. Объедини в одно улучшенное решение.
🚀 Быстрый старт
Если структура кажется сложной — используй саму LLM:
Вот шаблон Genetic Algorithm для синтеза решений через популяции.
Адаптируй под мою задачу: [твоя задача].
Задай мне вопросы, чтобы правильно заполнить параметры:
- Сколько стартовых решений нужно?
- Сколько уровней синтеза (1, 2 или 3)?
- Сколько решений объединять на каждом уровне?
После этого создай готовый промпт.
[вставить шаблон выше]
LLM спросит про сложность задачи, доступные ресурсы (токены/время), нужна ли глубина проработки. Эти параметры определяют баланс между качеством (больше уровней, больше популяций) и скоростью (меньше вызовов). Она возьмёт паттерн из шаблона и адаптирует под твою задачу.
Ограничения
⚠️ Задачи с субъективной оценкой: Вся теория построена на задачах с чётким критерием правильности (правильно/неправильно). Для креативных задач, где нет "правильного ответа" (написать слоган, придумать название), метод может зациклиться на усреднении вместо поиска яркой идеи.
⚠️ Рост числа токенов: Каждый уровень синтеза требует показывать модели предыдущие решения. На глубине L=3 с популяцией 5 на уровень — это десятки тысяч токенов. Для простых задач overhead не оправдан.
⚠️ Оптимальный размер контекста: Исследование показывает экспериментально — есть sweet spot. Слишком много решений в контексте (k>7) ухудшает результат почти во всех моделях. Но оптимальное k зависит от модели и задачи — нужно тестировать.
⚠️ Diminishing returns: После 2-3 уровней синтеза улучшение замедляется. Модели показывают polynomial decay — каждый следующий уровень даёт всё меньше прироста качества. Больше 4 уровней редко имеет смысл.
Почему исследовали
Команда из Google и ETH Zurich столкнулась с парадоксом на олимпиадных задачах по математике (IMO 2025). Лучшие модели показывали pass@32 = 40% (в 32 попытках хотя бы одна правильная), но best-of-32 = 31-38% (выбери лучшую из 32). Логика подсказывает: если в 32 попытках есть правильная, просто найди её! Но не работало.
Идея была простой: способность модели распределена между попытками. Одна попытка содержит правильную логику, другая — правильные факты, третья — правильную структуру. Нужен синтез, не селекция. Они взяли пайплайн из работы Huang & Yang (2025), который через итеративную генерацию-проверку-улучшение достиг 85.7% на тех же задачах. И решили формализовать математически — почему это работает.
Построили теоретическую модель reasoning oracle — функции, которая генерирует решение на основе контекста из предыдущих. Ввели transfer function F — она определяет вероятность успеха нового решения в зависимости от качества контекста. Определили класс Decaying Models — модели, где слишком большой контекст вредит (соответствует экспериментам: 3 решения в контексте работают лучше чем 10).
Доказали математически: три алгоритма (Branching, Genetic, Random Sampling) гарантированно сходятся к оптимальной вероятности при достаточном числе итераций. Для Decaying Models вычислили точную скорость сходимости — сколько вызовов нужно для заданного прироста качества.
Что удивило: Random Sampling (самый простой — бери случайные из всех предыдущих) работает так же хорошо как сложные алгоритмы. Разница только в скорости сходимости. Для экспоненциального декрея (модель ухудшается экспоненциально с ростом контекста) Random Sampling быстрее. Для полиномиального — Genetic эффективнее.
Инсайт для практики: Не нужны сложные эвристики выбора контекста. Даже случайная выборка из истории попыток системно лучше одиночной генерации. Ключ — многоуровневость (используй результаты синтеза как вход для следующего синтеза) и ограничение размера контекста (2-4 решения эффективнее чем 10).
Адаптации
🔧 Техника: убрать промежуточные этапы → быстрая версия
Если задача не слишком сложная, можно схлопнуть все уровни в один запрос:
{задача}
1. Дай 5 разных подходов (коротко, по 2-3 предложения)
2. Выбери случайно 3 из них
3. Объедини их сильные стороны в одно итоговое решение
Покажи только итоговое решение (без промежуточных шагов).
Экономия токенов, одна итерация вместо трёх. Но теряешь видимость процесса и возможность вмешаться.
🔧 Техника: заменить случайный выбор на управляемый → больше контроля
Вместо "выбери случайно 3" можно давать критерии отбора:
ПОПУЛЯЦИЯ 1:
Оцени каждое решение из Популяции 0 по критериям:
- Реалистичность (1-10)
- Оригинальность (1-10)
Для каждого нового решения:
1. Возьми 1 решение с высокой реалистичностью
2. Возьми 1 решение с высокой оригинальностью
3. Возьми 1 случайное
4. Объедини их
Направляешь синтез в нужную сторону (баланс практичности и креатива), но теряешь исследование "диких" комбинаций.
🔧 Техника: добавить мутации → больше разнообразия
После синтеза добавляй "искажение" для исследования новых зон:
ФИНАЛЬНЫЙ СИНТЕЗ:
1. Объедини {k} случайных решений из Популяции 2
2. Создай вариацию: что если изменить одно ключевое допущение?
3. Выдай оба варианта (базовый синтез + вариация)
Генетическая мутация — иногда "ошибка" открывает прорывное решение.
Ресурсы
Algorithmic Thinking Theory — MohammadHossein Bateni, Silvio Lattanzi, Simon Meierhans, Vincent Cohen-Addad, Yuzhou Gu, Christopher Mohri. Google Research, ETH Zurich, NYU, Stanford. 2025.
