Симулятор ходьбы, очень атмосферная игра про смотрителя маяка где-то на севере: холодное море, туман, северное сияние, брошенные посёлки и одинокий человек, который едет искать пропавшего сына. Сделано красиво и с большим вниманием к деталям, особенно к лодке; история, правда, весьма банальная, а мистика в ней и вовсе лишняя. Но в целом мне понравилось.
Маяк на краю света
WILL: Follow The Light — игра небольшой независимой студии TomorrowHead; вышла она этой весной, в мае 2026 года. Сделано на Unreal Engine 5, и выглядит это, надо сказать, отлично: свет, вода, туман и погода здесь на уровне заметно более дорогих проектов.
По сути это симулятор ходьбы. Головоломки тут есть, но довольно простые: настроить радиочастоту, снять показания приборов, найти код, подать питание. Они не мешают и не задерживают, а задают ритм и дают разнообразие: пришёл, осмотрелся, что-то покрутил, пошёл дальше.
Главного героя зовут Уилл Нильсен, и он смотритель маяка. Место действия прямо не называется, но на стене в его комнате висит карта Исландии, местный бар называется Hekla’s Hideaway, а фамилии у людей вроде Олофсдоттир,так что тут всё ясно.
Начало игры мне очень понравилось. Первые полчаса — это просто рабочая смена: снять показания анемометра и измерителя осадков, ввести их в компьютер с зелёным монохромным экраном, проверить генератор и резервное питание, связаться по рации с диспетчером, записать всё в журнал. Никакого экшена, только скалы, трава, дождь и работа. И по ходу этой рутины игра рассказывает про героя: фотография на комоде, приколотый к доске список сотрудников посёлка, запись в дневнике про отца, который вдруг объявился и теперь проводит время с внуком. Атмосфера сразу затягивает.
А потом приходит шторм, потом сигнал бедствия, потом новости о катастрофе в родном городке, где остался сын. И спокойная жизнь заканчивается.
Лодка
Отдельно надо сказать про лодку, потому что это один из лучших компонентов игры. У Уилла есть яхта по имени Molly, и она сделана роскошно: обшитая деревом каюта с диванами, керосиновыми лампами и иллюминаторами; рация на столе, по которой надо ловить нужную частоту; карта, на которой перед выходом надо самому проложить маршрут. И собственно ходьба под парусом: ставишь парус, садишься к штурвалу, пересаживаешься с борта на борт, идёшь сквозь дождь и туман на далёкий огонёк.
Это не симулятор яхтинга, всё очень условно, но ощущение передано отлично. Особенно хороши шторм в начале и ночные переходы, когда вокруг чёрная вода, а где-то на горизонте бьёт молния. Есть и опция Skip Sailing, конечно же, иначе было бы слишком однообразно.
Городок, катастрофа, север
Дальше игра выпускает героя на сушу, и здесь тоже всё хорошо. Городок Хафсберг сделан душевно и узнаваемо: деревянные крашеные дома, церквушка на холме, бар, доска объявлений с записками про пропавшую собаку и туман. Часть города разрушена, среди руин стоят палатки спасателей, и по ним ходят люди, с которыми можно поговорить.
Персонажи, кстати, тоже удались. Их немного, но каждый живой: диспетчер Кэсс, бармен, который «просто подменяет», врач в палатке, каюр с собаками, отец. Диалоги написаны сдержанно и без пафоса, озвучены прилично.
А во второй половине игра уходит на север, и вот тут начинается уже совсем красота: горы, снега, собачья упряжка, ледяные торосы, полярная ночь и северное сияние во весь экран. Есть даже белый медведь. Пейзажи здесь такие, что хочется останавливаться и просто смотреть, и игра это прекрасно понимает и регулярно ставит героя на удачную точку.
А вот мистика тут лишняя
Есть и недостатки. История в WILL, к сожалению, очень предсказуемая. Отец, который был плохим отцом, сын, который вырос и стал таким же, погибшая жена, чувство вины, “я всё исправлю” — всё это разворачивается ровно так, как вы уже подумали, прочитав предыдущее предложение. Особых претензий к исполнению нет: написано аккуратно, а пара сцен действительно цепляет.
Но ничего неожиданного не происходит.
Зато на этом фоне вдруг появляется какая-то ничем не объяснённая мистика. Герою является покойная жена и вручает волшебную лампу, свет которой как-то связан со светом маяков: зажигай огни по дороге, и они приведут тебя к сыну. Дальше по игре расставлены призрачные сцены-воспоминания, где полупрозрачные люди разыгрывают события прошлого, и странный голос из радио, который комментирует происходящее.
Проблема не в том, что это плохо сделано, — сделано нормально, и сцены-воспоминания выглядят красиво. Проблема в том, что это ничего не добавляет. История про человека, который в шторм идёт на лодке искать сына в разрушенном городе, совершенно самодостаточна, и волшебная лампа не делает её глубже или интереснее.
Я вообще заметил, что в атмосферных играх такого типа мистику добавляют почти всегда и почти всегда зря — как будто авторы не доверяют собственному материалу.
Но детали и построение мира в целом всё искупают. Здесь куча “настоящих” фотографий, вырезок, записок, жизнь городка на краю света показана очень выпукло.
Заключение
WILL: Follow The Light — красивая, спокойная и очень атмосферная игра часов на шесть-семь. Сеттинг отличный, пейзажи прекрасные, персонажи живые, много крутых деталей а лодка — просто отдельное удовольствие, ради неё одной стоило поиграть. История, впрочем, банальная, а мистика ей откровенно мешает.
Так что если вы любите жанр — берите, тут есть за что любить. А если симуляторы ходьбы вас обычно усыпляют, WILL вряд ли переубедит: ходить, смотреть по сторонам и слушать чужие воспоминания здесь и есть основное занятие. Но мне понравилось.
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
Сегодня у нас случай особый. OFF — культовая игра 2008 года, сделанная в RPG Maker, которую в 2025-м переиздали в виде полноценного ремастера. Я её прошёл с большим интересом, но, сразу честно скажу, так и не понял, что там происходит.
Впрочем, кажется, за восемнадцать лет другие люди тоже так и не пришли к общему мнению. Давайте попробуем разобраться вместе.
История
OFF придумал бельгиец Мартин Жори (Martin Georis), известный под псевдонимом Mortis Ghost. Игра вышла в мае 2008 года на французском, была собрана в RPG Maker и распространялась по форумам. В 2011-м появился фанатский перевод на английский, и с этого момента игра завирусилась и стала культовой в инди-тусовке.
Я не великий историк гейминга, но насколько я понимаю, до OFF игры на RPG Maker все выглядели, собственно, как стандартные JRPG: какой-нибудь герой проходил свою героическую арку, побеждал босса и видел титры. Именно с Mortis Ghost начались “weird RPGs”, в которых на первом плане сюжет, загадки и метафоры.
В результате OFF сильно повлияла, например, на Тоби Фокса, автора Undertale; даже некоторые персонажи отчасти взяты из OFF. Он этого никогда не скрывал, а в 2025 году, когда Fangamer выпустил официальный ремастер, Тоби Фокс даже оказался среди авторов нового саундтрека (который пришлось заменить по юридическим причинам; с музыкой всё время какая-то такая ерунда происходит).
Или вот, например, в этом блоге я когда-то обозревал OneShot, великолепную weird RPG без четвёртой стены. И оказывается, что создательница OneShot Nightmargin (Кейси Гу) тоже была поклонницей OFF и участвовала в создании HOME, фанатского спиноффа OFF (простите за каламбур), а сейчас тоже поучаствовала в саундтреке ремастера.
О чём игра
Итак, что же происходит в OFF. Вы играете за Бэттера — молчаливого мужика в бейсбольной форме с битой на плече. У него есть “священная миссия”: очистить мир. Мир состоит из Зон, в каждой Зоне свой Страж, и Бэттер методично идёт из Зоны в Зону и всех убивает.
Важная деталь: вы играете не за Бэттера, а за некоторую отдельную сущность, “кукловода”, который им управляет. Первым же собеседником оказывается кот по имени Судья, который выражается высокопарным барочным слогом и сообщает, что в Зоне 0 не может быть живых существ, а следовательно, вы — плод его воображения.
Дальше начинается самое странное — собственно мир. Зоны населены “эльзенами”: одинаковыми бледными человечками в рубашках, которые нервничают, извиняются и панически боятся не справиться с работой. Работа у них разная: в Зоне 1 добывают металл из глубоких шахт и разрезают скот пополам, чтобы извлечь металлические камни из туш; там же расположены “мясные фонтаны”, бесконечно наполняющие огромные металлические бассейны. В Зоне 3 в сахарных печах сжигают трупы умерших и через хитрую систему труб превращают пар в сахар.
Всё это подаётся как экскурсия по производству, и иллюстрируется настоящими гравюрами из старых энциклопедий — пловцы, коровы, шахтёры, рабочие у станков. За минувшие двадцать лет мы, конечно, на всякое насмотрелись, но в 2008 стилистически это было невероятно круто и свежо (а если вам кажется, что не свежо, скорее всего, это у OFF что-то позаимствовали, а не наоборот).
Есть ещё Захария — торговец в маске, который встречает вас в каждой локации представляется примерно так: “Я Захария, традиционный торговец предметами, который необходим в каждой RPG”. И тут же жалуется, что средний игрок хочет побольше экшена, а на занудных диалогов.
Механически OFF — вполне обычная JRPG, с пошаговыми боями и ATB-полоской. Можно выбирать между атакой, защитой (честно говоря, ни разу не пригодилось), “компетенциями” (то есть спецспособностями) и применением предметов. К Бэттеру постепенно присоединяются Add-On’ы, летающие штуковины-напарники по имени Альфа, Омега и Эпсилон.
Но бои здесь не главное, главное — головоломки: коды на стенах, переключатели, загадки на сообразительность. Они действительно весьма разнообразные, чем-то похожие, но зачастую с разной логикой. С ними было действительно интересно справляться.
Сюжет и загадочный смысл
Периодически игра выбрасывает вас в чёрно-белые вставки, оформленные как детская спальня: кровать, отрывной календарь с воскресеньями и святыми, детские рисунки цветными карандашами. Игра идёт по главам, но они почему-то идут в обратном порядке, от пяти до нуля, что, конечно, рифмуется с названием.
В этих вставках выясняется, что где-то есть мальчик по имени Хьюго, что он болен, что у него есть комикс про героя с битой, подозрительно похожего на Бэттера, и что папа ушёл.
А ближе к финалу выясняется ещё много всего, и всё оно противоречивое. Возможно, Бэттер вовсе не герой. Возможно, “очищение” мира — это его уничтожение. Главный босс разговаривает с Бэттером как мама с провинившимся ребёнком. А один из персонажей говорит о себе так: “Всё это время я был лишь самозванцем, искусственным созданием, разрушителем мира, злой марионеткой, ведомой слепой сущностью”. Слепая сущность, которая ведёт марионетку, — это, видимо, игрок и есть.
В самом конце игра даёт выбор между двумя концовками, но это тоже не очень проясняет смысл.
И кажется, что действительно никто не знает, что происходит в игре “на самом деле”.
Самая популярная трактовка — что весь мир игры представляет собой фантазию Хьюго. Больной мальчик придумал вселенную из того, что было под рукой. Более мрачная версия в том, что настоящий герой в коме, а Зоны — это участки мозга, которые последовательно отключаются.
В мета-трактовке игра вообще не про Хьюго, а про вас. Вы весь путь послушно вели персонажа убивать всё живое, потому что игра сказала, что это “священная миссия”, и ни разу не спросили зачем. Из такого прочтения, вероятно, выросла и Undertale.
Сам Mortis Ghost смысла не объясняет и фанатские теории не комментирует, так что скорее всего, правы все сразу, и игра намеренно устроена так, чтобы не складываться в однозначную картину.
Заключение
Так вот, про “ничего не понятно”. В OFF это не баг и не моя личная невнимательность. Игра устроена как сон: логика в ней есть, но не та, к которой мы привыкли, и попытка перевести её на нормальный язык всегда что-то оставляет необъяснённым. Может быть, история метафорическая, а может быть, и нет.
В результате OFF не рассказывает историю, а создаёт тревожное, абсурдное, но местами очень весёлое состояние. Я закончил игру в некотором недоумении, но мне было очень интересно почитать и об игре, и о трактовках, попытаться разобраться в происходящем; а это, в общем, лучшее, что можно сказать о произведении искусства.
Да и с точки зрения исторической перспективы OFF — вещь совершенно обязательная. Из неё растёт половина инди-игр последнего десятилетия, и пройти её несомненно стоит.
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
Пост про гипотезу Диница — Гарга — Гёманса я закончил словами “А что ещё дальше, коллеги?..”. Сегодня могу отчитаться, что было дальше: три недели, три препринта, один merged pull request от внешнего контрибьютора и мои первые сабмиты на VibeMathed.
Если коротко, то из твита Дмитрия Рыбина выросла целая исследовательская программа. Сначала мы с моделями опускали планку снизу:
При этом константы наших же контрпримеров из первых двух частей оказались не просто какими-то случайными контрпримерами, а точными значениями для соответствующих классов задач.
Здесь, правда, речь уже не про один гигачад-промпт “you should do a breakthrough”. Это была долгая совместная работа с LLM, с десятками промптов, неудачных попыток, провалившихся экспериментов и так далее. Ошибки тоже регулярно встречались, хотя честно скажу, что хоть я и проверил всё, что происходит в финальном тексте, но лично я не нашёл ни одной дырки — все ошибки, которые были в доказательствах, находились на этапе перекрёстной проверки другими LLM.
Мне кажется, именно так в ближайшие месяцы (а может, и годы) будет выглядеть заметная часть математики, поэтому расскажу всё по порядку — от контрпримеров до теорем, без технических выкладок, но с главными идеями.
Напоминание: гипотеза и треугольник
Кратко напомню постановку задачи; подробности есть в прошлом посте.
Рассмотрим ориентированный граф с источником , терминалами и заказами ; на дугах могут быть неотрицательные цены . Дан дробный поток , который можно делить по путям как угодно. Мы хотим получить неделимый поток : один путь на терминал, так что весь заказ идёт целиком по этому пути. Теорема Диница — Гарга — Гёманса (1999) говорит, что всегда можно добиться на каждой дуге выполнения условия
а гипотеза Гёманса утверждала, что одновременно можно сохранить и цену, .
22 июля 2026 года GPT 5.6 Pro по запросу Дмитрия Рыбина построила контрпример с семью вершинами: любой неделимый поток, укладывающийся в добавку , имеет здесь цену минимум 60 при дробной цене 58.
Мы подробно обсуждали этот пример в прошлом посте. Внутренний механизм этого контрпримера — треугольник попарных конфликтов: три “бесплатных” пути, любые два из которых вместе перегружают какую-то дугу. Дробный поток набирает по бесплатным путям суммарную массу , а неделимый может позволить себе не больше одного бесплатного выбора.
В том же посте мы видели, что параметрическое семейство на той же схеме из 7 вершин доводит нижнюю оценку до любого : если разрешать перегрузку и требовать сохранения цены, то должно выполняться . Сверху же для планарных графов известна константа 2 (Traub, Vargas Koch, Zenklusen, 2023). Так что в начале пути у нас был зазор между и для планарных графов, а для произвольных верхней оценки не было вовсе.
Первый естественный вопрос: может быть, тот же треугольник, но с другими числами, даст больше ?
Это была как раз первая теорема всей серии: — точная верхняя граница для всего шаблона “у каждого из трёх терминалов есть дешёвый и дорогой путь, конфликты попарные”. Ни для каких заказов, долей и цен константу выше на этом механизме не получить. Значит, для более сильной нижней оценки нужен структурно новый пример.
Хребты и терминалы с парой выходов
Новый пример нашёлся в виде, который потом оказался центральным для всей истории. Берём ориентированную цепочку (“хребет” графа) и в каждый терминал отправляем ровно два выхода с хребта: ранний и поздний. Вот пример такого графа:
Значит, к любому терминалу из ровно два пути; назовём их “ранний” (красный на картинке выше) и “поздний” (синий). Переключение терминала с раннего пути на поздний добавляет на дугах хребта, которые лежат в интервале , и получается, что вся комбинаторика такого примера описывается семейством интервалов:
Контрпример из части I был основан на четырёх терминалах с интервалами , , , :
Оптимизация по заказам и долям даёт нижнюю оценку
причём с точным алгебраическим сертификатом. Есть и целочисленное подсемейство с константами , так что всё можно реализовать и на рациональных данных (в целом это и так очевидно). И важно, что конструкция здесь планарная, так что зазор для планарных графов сузился до .
Важная техническая деталь: у каждого терминала в этих конструкциях ровно два простых пути, так что верификацию можно вести буквально полным перебором, и проверяющая программа не может ничего пропустить или забыть. Ту же константу независимо и раньше получил Matthew Protti (23 July 2026); тогда я об этом не знал, но потом во введении Части III расставил все известные мне ссылки.
Число больше , но это не всё, что о нём можно сказать; оно ещё вернётся в этой истории с совершенно другой стороны.
Часть II. Семнадцать терминалов с общим ребром
Естественным продолжением этой работы было бы попробовать обобщить и продолжить действие такого же механизма с попарными переключениями и системами интервалов.
И действительно, обобщить удалось: в Part II мы предъявляем пример, в котором уже сразу 17 терминалов, поздние пути которых все проходят через одно общее ребро.
На этом графе, конечно, чёрт ногу сломит (и очевидно, что он не планарный), но вот соответствующая ему система интервалов со всеми числами. На картинке ниже — это спрос, а — доля дробного потока, которая отправляется на поздний путь; во всех случаях ранний выход к терминалу стоит , а поздний выход бесплатный:
Оптимизация (уже довольно нетривиальная) дала рекорд
Заметим здесь одну закономерность, к которой вернёмся позже: во всех рекордных примерах заказы попарно не делят друг друга и лежат в узкой полосе, внутри одного “двойного окна” , то есть никакое значение не превосходит удвоенного другого. Все семнадцать заказов в рекордном примере укладываются в одно двойное окно. Это не совпадение, и мы ниже объясним, почему так.
В Части II появились и первые верхние оценки: на классе таких вот конструкций (два пути на терминал, пересекающиеся по одному ребру интервалы) метод не может дать оценку больше . Это, конечно, верхняя оценка только на очень конкретный класс графов, то есть ограничение метода, а не какая-то интересная теорема сама по себе.
Потом случилось очень крутое событие, которое меня изрядно вдохновило продолжать. Я выложил репозиторий с сертификатами и верификаторами, и Альфредо де ла Фуэнте (Alfredo De la Fuente) прислал pull request: транспонировать правые концы двух интервалов и переоптимизировать заказы. Его сертификат прошёл все наши проверки, и текущий рекорд теперь community-contributed:
Мне очень понравилось, что задача вызвала интерес у сообщества. На Vibemathed мой пост с этими результатами тоже получил довольно много по меркам этого сайта комментариев. В частности, конечно, меня ткнули носом в том, что Matthew Protti был первым с оценкой, близкой к .)
Лестница рекордов по числу терминалов выглядела так: : , : , : , : , : , : .
Запомните и её — к ней мы тоже вернёмся.
А нельзя ли чего-нибудь доказать?
К этому моменту у константы было уже довольно много нижних оценок и удручающе мало верхних. Хуже того: для общих графов и произвольных заказов было неизвестно, существует ли вообще конечная константа , то есть неизвестно, конечна ли она в принципе. С этого вопроса и началась Часть III.
Вспомним, почему в гипотезу Гёманса верили: доли дробного потока по путям выглядят как вероятности, и независимый выбор путей даёт в среднем и нужные нагрузки, и нужную цену. Контрпример показал, что независимое округление разваливается. Но сам вероятностный язык можно было использовать и дальше.
Вот главный принцип, на котором стоит вся Часть III: раскладываем ошибку на множители, сохраняя среднее. Иначе говоря, мы ищем не один поток (маршрутизацию, routing), а распределение на потоках, у которого
математическое ожидание нагрузок равно дробному потоку в точности, на каждой дуге, и при этом
каждый атом распределения заключён в “ящике”: почти наверное.
Если такое распределение есть, то сохранение цены получается автоматически: средняя цена равна , значит, какой-то атом стоит не дороже. После этого цены рёбер вообще исчезают из задачи, и остаётся чистая “геометрия” (ну, не настоящая геометрия, конечно): какого размера нужен “ящик”, чтобы смог стать точным средним целых маршрутизаций?
Это нехитрая интуиция, и так люди уже думали о потоках. Первым интересным (и, насколько я могу судить, новым) результатом Части III стало то, что это не просто удобный приём, а приём достаточный. Для любого класса графов, замкнутого относительно удаления дуг (а это все естественные классы: планарные, последовательно-параллельные, деревья…), выполняется равенство: оптимальная константа сохранения цены в точности равна минимальному радиусу ящика для точных средних.
Доказательство в обратную сторону здесь состоит в том, что можно построить отделяющую гиперплоскость, а потом сдвинуть потенциалы в духе условий Каруша-Куна-Такера: если дробная точка не лежит в выпуклой оболочке хороших маршрутизаций, то найдётся вектор цен, на котором ломается сохранение цены.
Дальше мы использовали тот же вероятностный язык в двух направлениях: изучали арифметику значений заказов и геометрию взаимодействия путей.
Арифметика: делимость бесплатно, несравнимость нет
В этой науке есть классический результат Skutella (2002): если заказы образуют цепочку делимости (каждый делит следующий), гипотеза Гёманса верна как есть, с константой 1. На языке точных средних это “локальный закон”: внутри цепочки делимости мы можем явно построить нужное распределение.
Часть III превращает это в общий принцип факторизации:
разобьём множество значений заказов на цепочки делимости,
построим распределение в каждой цепочке независимо,
перемножим полученные распределения.
При этом точные средние складываются, радиусы складываются, и каждая цепочка платит один раз своим максимумом. И получается, что
где — максимальное значение одного заказа, а оптимальное покрытие цепочками считается за полиномиальное время через паросочетание максимального веса.
Если быть точным, то результат говорит, что ключевым объектом для нас является разбиение мультимножества заказов (множества терминалов) на цепочки делимости . Мы сможем построить нужный “ящик” радиуса
то есть любой дробный поток будет выпуклой комбинацией “опорных маршрутизаций” (support routings) с точно совпадающим средним и радиусом :
Например, можно разбить заказы на множества по значениям, т.е. если именно как множество, без повторов, и если , то
а значит, в частности, аддитивная константа на этом примере не превышает (константу ещё на максимальное значение заказа нужно разделить).
Рассмотрим маленький пример: пусть у нас заказы . Наивная сумма даёт , но , поэтому покрытие стоит , и . Добавление значения 1 ничего не меняет — единица прицепится к любой цепочке бесплатно. А вот для попарно несравнимых никакое покрытие не побьёт простую сумму.
Именно поэтому в контрпримерах всё время появляются попарно не делящие друг друга заказы в узкой полосе. Теперь это не эмпирическое наблюдение, а теорема о том, где метод работает, а где не очень.
Немедленные следствия:
если значений всего два, , то (это константа Морелла — Скутеллы, теперь доказанная для всех примеров с двумя значениями);
если в каждой диадической полосе не больше одного значения, то (достаточно их все просуммировать как );
если в примере конечное множество значений, то у него будет конечная константа.
Последнее утверждение, конечно, не означает глобальной конечной константы, но все наши контрпримеры в Частях I–II использовали не больше девяти различных значений, так что для всех них можно теперь какую-то общую верхнюю оценку получить (не очень интересную).
Давайте разберём ещё чуть более содержательный пример, чтобы увидеть, как это суммирование оценок работает. Вот он:
Здесь терминал (спрос ) использует общую дугу с весом , терминал (спрос ) с весом , так что нагрузка получается .
В этом примере четыре целочисленных маршрутизации; назовём их 00, 01, 10, 11: первый бит показывает, идёт ли через путь в , а второй — в . И если рассмотреть веса как независимые вероятности, то получатся вероятности как на картинке и ожидание
то есть при таком разложении сохраняется точное среднее. А радиусы просто складываются и получается .
На этом месте хочется, конечно, сказать: а давайте округлим значения заказов вверх до какого-то общего значения или одной цепочки делимостей, разложим увеличенный поток, а потом восстановим изначальные результаты. Но так не работает (это тоже один из результатов): общее разложение не будет знать, какой путь ведёт к какому терминалу, а это будет необходимо для восстановления; не буду вдаваться в детали, но про это у нас тоже есть небольшой раздел.
А вот округление вниз работает, если срезанная часть заказа сначала удаляется из самых дорогих путей. Здесь тоже вдаваться в детали не буду, но, в общем, получается целое семейство оценок, параметризованное основанием и глубиной сетки . Две первые его точки давно известны — это оценки Скутеллы
а дальше кривая продолжается на все , с пределом в чистом сдвиге и полезным следствием для потоков ограниченной нагрузки:
Вся задача свелась к одному окну
Самый концептуальный результат на этом арифметическом пути — редукция слияния (merger reduction). Определим “оконную константу” : наилучшую аддитивную ошибку точного среднего для примеров, все заказы которых лежат в одном “двойном окне” вида . Тогда мы доказали, что
Иными словами, универсальная конечная константа существует тогда и только тогда, когда конечна , и вся общность задачи по сути свелась к вопросу об одном окне значений .
Например, все заказы рекорда с сами лежат в одной такой полосе , и более точное рассуждение о выпуклых оболочках показывает, что этот пример даёт
То есть слить одно окно “почти бесплатно” (с ) невозможно — нижние оценки бьют и по этой цели. Полный точный профиль рекордного потока (все пятнадцать сегментов его релаксированной границы) мы тоже посчитали и выложили:
Геометрия: пары бесплатны, первый враг — треугольник
Теперь вторая ось частичных результатов. На арифметической оси мы ограничивали значения заказов, а граф и взаимодействие путей оставляли произвольными; здесь всё наоборот: заказы любые, но ограничена геометрия взаимодействия путей. Отправная точка — общее свойство всех наших контрпримеров: в них к каждому терминалу ведут ровно два простых пути. Назовём такие примеры двухпутевыми (two-path instances) и посмотрим, во что превращается задача.
Когда путей ровно два, маршрутизация — это просто вектор битов : , если терминал идёт по одному из своих путей (назовём его “поздним”, ), и , если по другому (“раннему”, ). Дробный поток превращается в набор долей : с какой “вероятностью” терминал выбирает поздний путь. А весь граф сворачивается в матрицу разностей маршрутов: положим , если дуга лежит только на позднем пути терминала , , если только на раннем, и , если она лежит на обоих или ни на одном. Смысл этой матрицы в том, что ошибка любой маршрутизации на любой дуге записывается одной формулой:
В хребтовых примерах матрица выглядит совсем наглядно: в строке дуги хребта стоят напротив интервалов, которые её накрывают. Переключение такого терминала на поздний путь добавляет на этой дуге ; строка раннего частного выхода терминала — одинокая , позднего — одинокая . В произвольных направленных ациклических графах знаки внутри одной строки могут смешиваться.
Число ненулевых элементов строки назовём её арностью: это число терминалов, чьё переключение вообще затрагивает данную дугу.
На этом этапе граф можно выбросить, и остаётся чистая комбинаторная задача: по знаковым строкам, заказам и долям найти распределение на булевом кубе, у которого маргиналы в точности равны (это и даёт точное среднее), а ошибки всех строк на всех атомах не превосходят . Интуитивно чем меньше арности строк, тем легче; строки арности 1 тривиальны: их ошибка никогда не превосходит по модулю.
Но есть и неприятный сюрприз: на абстрактном уровне уже пары, то есть строки арности 2, могут стоить больше . Пример из статьи: два терминала с единичными заказами, доли и две строки со знаками и . У первой строки состояние имеет ошибку , так что радиус требует ; у второй за ящик вылезает состояние с ошибкой , то есть нужно ещё и . Вместе с маргиналами это несовместно: обозначив , получаем и , и первое условие требует , а второе — . Лучший достижимый радиус здесь .
Столько же, , даёт и “нечётная дыра” — цикл длины пять из всюду положительных парных строк, главный подозреваемый ещё со времён абстрактного анализа Части I. Если бы такие знаковые узоры реализовывались потоками, ни о какой “бесплатности пар” речи бы не шло.
Первая структурная теорема Части III: они не реализуются. Начнём с самого простого случая: у двухпутевого потока для любой пары терминалов произведение знаков одинаково на всех дугах, где оба сомножителя ненулевые. Доказательство — симпатичная графовая склейка, которую я здесь не буду объяснять в деталях:
На самом деле верно гораздо больше: вся матрица (после удаления нулевых строк) — это сетевая матрица (network matrix), матрица знаковых инциденций путей в некотором дереве, и в частности она вполне унимодулярна. Идея доказательства: в носителе двухпутевого потока в каждую вершину можно прийти из источника не более чем двумя способами — третий способ немедленно дал бы третий путь какому-нибудь терминалу.
Вершины, достижимые одним способом, образуют дерево, а компоненты, достижимые двумя, — это общие “хвосты” пар путей, которые в разности всё равно сокращаются. После некоторых преобразований разность путей каждого терминала превращается в обычный путь между двумя листьями одного общего дерева, а матрицы путей в дереве — это и есть сетевые матрицы.
На теорему о сетевых матрицах можно ещё посмотреть так: для любого двухпутевого примера существует дерево , в котором каждый терминал представлен путём между двумя листьями, а каждая строка матрицы разностей — ребром этого дерева, причём носитель строки (множество терминалов с ненулевым знаком) — это в точности множество путей, проходящих через . То есть словарь: такой: терминалы — пути в дереве, строки — рёбра дерева, арность строки — нагрузка ребра (сколько путей через него идёт).
И можно рассмотреть гиперграф взаимодействия — матрицу , прочитанную по строкам: вершины — терминалы, гиперребро ребра — это . При этом взгляде мы забываем знаки и величины и смотрим лишь на носители строк; к этому гиперграфу мы вернёмся в следующем разделе.
Из теоремы сразу получается и общее правило чётности: если несколько парных строк образуют “чистый цикл” длины , произведение всех их знаков обязано равняться , иначе нашёлся бы минор с определителем . Цикл из примера выше и всюду положительный 5-цикл это правило нарушают.
Теперь можно собрать положительный результат — обещанную бесплатность пар. Пусть все строки имеют арность не выше 2. Посмотрим на одну парную строку, для определённости со знаками , и на четыре угла булева квадрата. Смешанные углы хороши всегда: скажем, в угле ошибка равна и по модулю не превосходит . Плохим может оказаться только угол (сверху) или угол (снизу), причём не оба сразу: их ошибки различаются ровно на .
Числовой пример из статьи: единичные заказы, доли ; ошибки в состояниях равны , , , , и плох только угол . Плохой угол отрезается одним целочисленным неравенством — здесь , — дробная точка ему удовлетворяет, и хорошие вершины дают готовую смесь с точным средним:
Осталось проделать это одновременно по всем строкам: пересечём единичный куб со всеми неравенствами, отрезающими плохие углы. Нормали этих неравенств — строки самой матрицы (с точностью до знака), правые части целые, и вполне унимодулярность гарантирует, что получившийся многогранник целочисленный. Значит, точка долей раскладывается в выпуклую комбинацию его булевых вершин, и каждая такая вершина обходит все запрещённые углы всех строк сразу. Итого получается теорема.
Теорема. У двухпутевого примера, все строки которого имеют арность не выше 2, точный радиус равен ровно — при любой цикличности взаимодействий.
В обозначениях, которые пригодятся ниже: локальная константа арности два . Меньше единицы не бывает уже на одном терминале: если доля одного из путей стремится к нулю, любая смесь с точным средним обязана давать этому пути его положительную массу, и перегрузка соответствующего атома стремится к .
Обратите внимание, как всё это ломает исходную интуицию: казалось, что главная опасность — циклы конфликтов, а оказалось, что циклы попарных конфликтов не стоят вообще ничего. Препятствие надо искать не в цикличности, а в арности.
Итак, первый настоящий враг — строки арности 3. И минимальный живой пример нам давно знаком — “тернарное ядро”, тот самый треугольник: хребет из трёх дуг и три интервала , , , дающие строки , , :
И здесь Часть III доказывает точное значение: локальная константа тройного ядра равна ровно . Не “не меньше”, как в контрпримере, а ровно: верхняя оценка теперь тоже есть, с явным экстремальным семейством решений. Треугольник Рыбина оказался не случайной находкой, а точным локальным экстремумом общей теории.
Дальше — четыре колонки. Существует ровно пять максимальных носителей взаимодействия четырёх терминалов (с точностью до перестановок; эта классификация тоже нетривиальная и тоже доказывается в статье):
Форма 0 — это интервальное ядро Части I, и её точная локальная константа равна
в точности константе нашего контрпримера; остальные четыре формы дают ровно . Доказательство верхней границы для — самое тяжёлое место статьи: 2015 граничных клеток, закрытых вручную выписанными покрытиями, проекциями и одним аргументом типа Хелли, без численных переборов (численный поиск использовался только чтобы найти граничные клетки, ни одно его решение в доказательство не входит).
Его мы, конечно, пропустим, зато теперь можно показать всю лестницу целиком:
Синие квадраты — теоремы с точными оценками: , , . Оранжевые кружки — рекорды из Части II, которые мы теперь считаем гипотетическими следующими ступенями той же лестницы. Пунктир — гипотеза Части II о супремуме для этого класса. Первые две нетривиальные ступени лестницы совпали с константами контрпримеров: нижние оценки Частей I–II, найденные задолго до всей этой теории, оказались точными значениями экстремальных задач, о существовании которых мы тогда не подозревали. По-моему, это крутой сюжетный поворот.
Раскраски, Property B и первый ответ для неограниченного класса
Локальные ядра — это хорошо, но что делать с глобальной системой, где троек много и они переплетены? Здесь помогает классическая комбинаторика.
Строки взаимодействия арности бесплатны (один -ящик). Значит, для системы с арностью достаточно раскрасить терминалы в два цвета так, чтобы ни одна тройная строка не стала одноцветной: внутри каждого цвета арность упадёт до двух, каждый цвет заплатит один -ящик, итого . Здесь мы пользуемся нашим свойством композиции, складывая радиусы частей графа.
И теперь можно вспомнить гиперграфы из предыдущего раздела: их мы как раз и раскрашиваем. Оказывается, свойство “гиперграф двураскрашиваем без одноцветных рёбер” — это классическое Property B (в честь Бернштейна, название Миллера, 1937). Сам я о таких комбинаторных понятиях, разумеется, ни разу не слышал, пока мы с LLM не занялись этой задачей.
В общем случае Property B может не выполняться. Минимальный контрпример арности 3 — плоскость Фано, семь точек и семь прямых.
Но есть и другой факт: плоскость Фано не реализуется путями в дереве. Инцидентности семи путей и семи рёбер дерева не могут образовать Фано — после стягивания всё упирается в диаметр-3 и двойную звезду, и одна прямая должна была бы лежать во всех семи тройках. Классическое препятствие исключается самой геометрией деревьев.
А положительная сторона доказывается через рёберные раскраски: пути в дереве с нагрузкой не выше на ребро можно правильно раскрасить в цветов (это теорема Притчарда — Ротвосса, в основании которой лежит теорема Шеннона о рёберной раскраске мультиграфов). Для берём четыре цвета и сливаем их в два блока и : три пути на одном ребре имеют три разных цвета, значит, ни одна тройка не окажется в одном блоке. Итого:
Теорема. В двухпутевых графах, если арность взаимодействия не превышает 3, то радиус не превышает .
У нас получилась первая конечная константа для класса, в котором ограничена только локальная арность, а всё остальное произвольное: и число терминалов, и цикличность, и значения заказов.
Более того, для произвольной арности тот же приём даёт . Это, опять же, глобальная оценка для класса графов с некоторым ограниченным локальным свойством; кажется, что это естественное свойство в данном случае. Но всё-таки нельзя забывать, что во всём “геометрическом” подходе речь шла исключительно про двухпутевые графы.
Классы графов и новый планарный рекорд
Теперь можно свести результаты о классах графов в единую таблицу:
двухслойные “хабы” (источник — склады — клиенты): , это известный результат; а мы ещё подпёрли его нижней границей , которую получили из классического семейства “m+1 работ”;
внешнепланарные двухвыходные интервальные хребты: ровно, и константа 1 здесь достигается уже одним терминалом.
А для планарных графов мы подняли нижнюю оценку. Построили новый интервальный пример с шестью терминалами, полным перебором маршрутизаций, точной смесью из семи атомов и сертификатом планарности через систему вращений:
У него
и мы знаем классическую верхнюю оценку 2. Забавно, что дальше по лестнице рекордов планарность немедленно заканчивается: уже пятитерминальная рекордная геометрия непланарна.
Как проверяли и как шёл процесс
Стандарт проверки во всех работах был один и тот же: каждое числовое утверждение проверяется в точной рациональной арифметике программой, которая пересобирает пример из списка дуг: заново находит все простые пути поиском в глубину, заново перечисляет маршрутизации, заново решает задачи линейного программирования. У каждого сертификата есть вторая, независимо написанная реализация проверки. Финальные доказательства классов и локальных констант все solver-free, то есть численный поиск разрешён только на стадии открытия новых примеров, и ни одно решение солвера не входит в доказательство как посылка. Все 37 новых сертификатов Части III лежат в репозитории, и приложение статьи объясняет по пунктам, что именно проверяет каждый файл.
И об ошибках, потому что они тоже были, и это нормально. За время проекта adversarial-проверки (вторая модель против первой, кампания против теоретика) поймали довольно много ошибок, в том числе “тождество” , которое при внимательном взгляде оказалось одним и тем же неравенством, записанным дважды; красивое “следствие” про нечётные дыры, опровергнутое затем теоремой о сетевых матрицах; целое доказательство через округление вверх, и много чего другого.
В общем, доказательства от LLM безусловно нужно проверять, но конкретно в этом исследовании оказалось достаточно проверять их другой LLM: Claude ловил ошибки GPT и наоборот, и после пары таких раундов я уже никаких ошибок больше не находил (но всё равно искал! это важно!).
Теперь о процессе, потому что вопрос “как вы работаете с моделями” мне задают чаще, чем вопросы о потоках.
Работали три модели в разных ролях. GPT 5.6 Sol гоняла экспериментальные “кампании”: я (вместе с Claude) писал подробный бриф — какие гипотезы проверить, какие сертификаты сгенерировать, в каком формате отчитаться, — а Sol возвращалась с результатами, часто неожиданными. Claude Fable 5 и Claude Opus 5 занимались теорией, проверкой и текстом: верифицировали каждый раунд, доказывали, что доказывается вручную, ловили ошибки (свои, мои и чужие) и собирали статью.
Таких циклов “кампания — верификация — теория — новый бриф” было примерно восемь. Ключевые идеи — точные средние, сетевые матрицы, редукция к окну, четырёхцветное слияние — в основном предлагали модели; я выбирал направления, закрывал тупиковые ветви исследований, лично перепроверил и переписал все доказательства и, разумеется, несу ответственность за все оставшиеся ошибки.
В отличие от истории Рыбина, это не был one-shot tour de force; это был именно длинный совместный проект, и, кстати, чертовски интересный! Присоединяйтесь!
Что осталось открытым
Разумеется, мы не вполне всё закончили.
Существует ли конечная универсальная ? Главный вопрос стоит как стоял, но теперь он эквивалентен конечности оконной константы , и известно, что .
Гипотеза : лестница рекордов двухпутевого класса, кажется, стремится к ; доказать (или опровергнуть) сходимость — самая близкая открытая цель.
Планарные графы: теперь , и обе границы выглядят улучшаемыми.
и дальше: совпадут ли следующие ступени лестницы рекордов с точными локальными константами, как это случилось с и ?
Заключение
Месяц назад эта история начиналась с семи вершин и твита. Сейчас у неё три препринта, большая таблица рекордов с внешними контрибьюторами, репозиторий с машинно-проверяемыми сертификатами и ряд интересных верхних оценок для разных классов графов, причём константы контрпримеров оказались точными значениями в новой теории.
В постах про двойное покрытие циклами, якобиан и Диница — Гарга — Гёманса я писал про молниеносные результаты: одна гипотеза — один промпт — один документ. Этот пост — про другой, более прозаический и наверняка куда более массовый жанр: LLM как полноценные соавторы в долгом проекте, с разделением ролей, взаимной проверкой и накоплением результатов.
А что дальше, коллеги?
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
Сегодня у нас сразу две игры и один обзор, потому что обе игры сделал один и тот же человек — Сергей Носков. В прямом смысле один: он сам пишет код, сам моделирует, сам ставит свет и кадр, сам собирает уровни. Со стороны там только композитор, актёры озвучки и помощь с моделями.
В результате же обе игры выглядят как продукт целой студии. Не “неплохо для инди”, а действительно хорошо, твёрдый AA. Постсоветский постапокалипсис в 35MM и постсоветский киберпанк в 7th Sector сделаны так, что часто хочется останавливаться и разглядывать детали кадров. Обе игры я прошёл с удовольствием, и обе рекомендую (хотя у обеих есть и свои проблемы).
Дальше были игры, о которых мы сегодня говорим, а вершиной пока стала Hail to the Rainbow, которую он делал больше пяти лет и которая вышла осенью 2025-го (в неё я пока не играл, но собираюсь).
О том, почему он работает в одиночку, Сергей говорит так: “Я должен всецело понимать, что в [проекте] происходит и как он устроен. Только тогда я смогу полностью его контролировать и ни от кого не зависеть”. В качестве ориентиров он называет Half-Life 2, Blade Runner и работы Саймона Столенхага, и это действительно именно тот стиль.
35MM: двое идут через мёртвую Россию
35MM вышла в 2016 году и делалась примерно два года. Это этакий road trip от первого лица: двое мужчин идут пешком через постапокалиптическую Россию, из точки А в точку Б.
Апокалипсис здесь эпидемический и вполне узнаваемый. Из газет, документов и записок постепенно становится ясно, что неизвестный науке вирус со смертностью за восемьдесят процентов привёл к чрезвычайному положению, потере контроля и всеобщему хаосу.
Но главное в 35MM — не апокалипсис, а двое идущих. Один из них молчаливый фотограф с плёночным аппаратом (отсюда и название), второй — разговорчивый Петрович, который у костра рассказывает, как всё начиналось. Это очень простой приём, но он здесь работает отлично: вся история подаётся через двух уставших мужиков, которые идут по грунтовке и разговаривают.
И интонация здесь верная. 35MM не про выживание, не про монстров и (почти) не про экшен. Она про то, как выглядит опустевшая страна: заброшенные деревни с покосившимися избами, разграбленная районная больница с табличкой “Ординаторская”, часовня со свечкой и иконой, дрезина на заросшей узкоколейке, советская мозаика с солнцем на стене трансформаторной будки. Иногда попадаются живые люди — например, старик, который зовёт переночевать и напоить чаем с малиновым вареньем. Кстати, катсцен здесь много, и сделаны они тоже очень атмосферно.
К концу дорога приводит в метро и в большой заброшенный город — панельки, проросшие деревьями дворы, брошенная скорая, пустой Дворец культуры… Выглядит всё это прекрасно.
А вот с финалом, на мой вкус, вышло не очень. Игра долго и терпеливо строит человеческую историю про двух путников, а в конце сваливается в конспирологию и обрывается на скомканном твисте. Но всё равно worldbuilding первоклассный, и послевкусие остаётся очень хорошее.
7th Sector: вы — искра в проводах
7th Sector вышла в 2019-м и устроена совершенно иначе. Это двумерный сайд-скроллер с головоломками, а играете вы за… электрическую искру. Буквально: маленький разряд, который бегает по проводам, перепрыгивает между контактами, залезает в телевизоры, вентиляторы, счётчики и рубильники и таким образом двигается по городу. Получается и необычно, и стильно, и красиво.
Мир игры — постсоветский киберпанк, город Новоград, “город дружбы народов”, как гласит плакат. Хрущёвки с неоновыми иероглифами, ЭЛТ-телевизоры с помехами, граммофон рядом с цифровым терминалом, ламповые радиоприёмники, объявления о пропавших людях, огромная статуя человека в шляпе и плаще над городом, поезд на эстакаде в розовом неоне. Смесь позднего СССР и Blade Runner тут доведена до полного правдоподобия, и это опять тот самый узнаваемый стиль Сергея Носкова.
По ходу игры появятся и другие персонажи: искра будет вселяться в роботов, как колёсных, так и летающих. Каждая форма приносит новый набор возможностей и новый тип задач, так что хотя по сути это игра про головоломки, однообразными они стать не успевают.
Головоломки в целом приятные: переключить питание в нужном порядке, не перегрузив линию; провести робота через тир с мишенями; собрать код по подсказкам в окружении; разобраться, куда ведёт какой кабель. Ничего запредельно сложного, но думать приходится, и решения обычно радуют.
Есть, правда, проблема в том, что сам процесс решения многих головоломок сильно затянут. Часто нужно не просто понять схему решения, а ещё долго и методично её реализовывать, не допуская ошибок. Особенно это касается кусков с управлением роботами, где к неспешности добавляется ещё и не самое отзывчивое управление.
А сюжет здесь подан почти без слов, через окружение, экраны и сцены на заднем плане, и это типичный мрачный киберпанк. Тут есть и корпорации, и эксперименты над людьми, и ряды тел в капсулах, и несмколько концовок. Честно скажу, я разобрался в происходящем не полностью, но атмосфера от этого не страдает — скорее наоборот.
Картинка и баги
Что объединяет обе игры, кроме автора, так это картинка. Носков очень интересно работает со светом и туманом: почти в каждом кадре есть яркий источник света, глубина, дымка и продуманная композиция. В 35MM это серое небо и лучи сквозь деревья; в 7th Sector — синий разряд в темноте и розовый неон в дожде. Для игр, сделанных одним человеком, это невероятно круто, да и не только для них.
Что тоже объединяет обе игры — баги всё-таки полностью победить не удалось. Например, у меня в обеих время от времени отказывали кнопки: нажимаешь, а ничего не происходит, и лечится это только перезапуском. Впрочем, лечится, ничего фатального не встречал.
Заключение
35MM и 7th Sector — очень разные игры: первая скорее про историю и интонацию, вторая — про механику и головоломки. Но обе стоят потраченного времени, и обе оставляют одно и то же ощущение: это авторские вещи, у которых есть свой голос. Примерно такой:
Если выбирать одну, я бы советовал 35MM — она человечнее и сильнее цепляет, несмотря на слитый финал. Если хочется головоломок и не хочется читать записки — тогда 7th Sector, только будьте готовы к тому, что пара задач вас утомит. А вообще обе короткие, обе стоят копейки, так что лучше обе.
Снимаю шляпу перед Сергеем Носковым, и теперь обязательно попробую и Hail to the Rainbow.
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
Сегодня у нас стелс-тактика в интересном и свежем сеттинге: псевдо-Швеция примерно рубежа XIX и XX веков, с тогдашними зданиями (югендстиль), вывесками, рекламами и всем таким прочим. Уже ради одного этого в неё стоило поиграть, но оказалось, что помимо сеттинга здесь есть и отлично поставленная история, и приятный, в меру простой геймплей. Прошёл на одном дыхании и очень рекомендую.
Кто это сделал
Eriksholm: The Stolen Dream — первая игра студии River End Games из Гётеборга; вышла она в июле 2025 года. Команда там маленькая, но это ветераны шведской игровой индустрии, работавшие над Battlefield, Mirror’s Edge, Little Nightmares и Unravel (кстати, Unravel рекомендую, она не так известна, а головоломка отличная, и есть ещё Unravel Two, где можно играть вдвоём).
Сделана игра на Unreal Engine 5, и для маленькой студии выглядит чрезвычайно дорого. Прежде всего такой эффект достигается за счёт катсцен, которых тут много и которые поставлены и анимированы на уровне хорошего мультфильма.
Эриксхольм, город модерна
Начнём с главного — с сеттинга. Действие происходит в Эриксхольме, городе вымышленного королевства Росмарк, но это, конечно, Швеция, собранная из Гётеборга, Стокгольма и Мальмё образца примерно 1900 года. Эпоха индустриализации: порт, пароходы, фабрики, первые электрические фонари и архитектура того самого стиля модерн, он же ар-нуво, а в скандинавско-немецком варианте — югендстиль. Плавные линии, кованые решётки, витражи, дома с башенками; рядом — национальный романтизм с его тяжёлым камнем и северными орнаментами.
Я такой сеттинг в играх, кажется, не встречал ни разу, и сделан он с большой любовью: рисованные рекламные плакаты на стенах, вывески лавок, газетные тумбы, бельё на верёвках между домами в бедных кварталах и чинные фасады в богатых. Игра смотрит на это время ностальгически, как на старую открытку (их тут много), но без стерильности: Эриксхольм только что пережил эпидемию, в порту тесно и грязно, сироты сбиваются в банды и всё такое прочее. В общем, нашли место и красоте, и социальным контрастам.
Завязка: сестра ищет брата
Главная героиня — Ханна, девушка-сирота, которая только что оправилась от “сердечной оспы” (heartpox), смертельной болезни, недавно вызвавшей в городе эпидемию. Она живёт с братом Германом, и в самом начале игры Герман внезапно исчезает. А вскоре в их квартал приходит с облавой полиция, и становится ясно, что исчез он не просто так: брата ищут, и ищут всерьёз.
Ханна отправляется на поиски сама и постепенно проходит от портовых трущоб через шахты и подвалы к респектабельным кварталам города. По дороге к ней присоединяются два других персонажа: Альва, подруга детства и предводительница банды малолетних воришек, и Себастьян, бывший контрабандист. Дальше сюжет пересказывать не буду, он довольно стандартный, но сделан, опять же, хорошо. Как вы наверняка и ожидаете, детектив о пропавшем брате разгоняется до масштабов судьбы всего города, но всё-таки не всей галактики, от псевдо-реализма здесь никто не отказывается.
Добрый домашний стелс
Сама игра — стелс-тактика с изометрической камерой, и для такого сюжета это очень крутое решение. Я легко могу представить себе Eriksholm симулятором ходьбы — и даже в этом виде было бы довольно интересно, просто за счёт сеттинга, истории и графики. А так есть ещё и геймплей, интересный, но при этом достаточно простой, чтобы не перетягивать на себя одеяло и не фрустрировать. Как известно, тактику очень легко сделать очень сложной; авторы Eriksholm этого соблазна избежали.
Работает это стандартно: охранники ходят по маршрутам, у каждого свой сектор обзора, а Ханну, если её заметят, ждёт мгновенный проигрыш; но наказания за проигрыш практически нет, чекпойнты расставлены на каждом шагу. Получается стелс-головоломка: наблюдаешь, планируешь, исполняешь, если не вышло, тут же пробуешь иначе.
У других персонажей свои возможности: Ханна пролезает в вентиляционные шахты и со временем получает духовую трубку с усыпляющими дротиками, Альва лазает по водосточным трубам и стреляет из рогатки, Себастьян плавает и придушивает врагов (кстати, убийств в игре нет вовсе; наверняка это сознательное решение).
Когда герои начинают действовать вместе, между ними можно переключаться, и уровни превращаются в совместные головоломки.
Серьёзного стелса в духе Shadow Tactics или Desperados здесь ждать не стоит: свободы меньше, инструментов меньше, в целом всё проще. Но зато в Eriksholm хороший темп истории, это в первую очередь сюжетная игра, и в рамках такой задачи стелс работает отлично: напряжение есть, затыков и раздражения нет.
Отдельно хочу похвалить то, как всё это подано. Катсцены здесь — не склейка из игровых моделей, а полноценные постановочные ролики с детализированными лицами, отличной анимацией и операторской работой. Озвучка полная и очень достойная (с приятным британским выговором), да и музыка хороша.
Заключение
Eriksholm: The Stolen Dream — очень цельная игра: необычный и любовно сделанный сеттинг, яркая история, красивые катсцены и стелс, который добавляет интереса, но не фрустрирует. Я прошёл её на одном дыхании, часов за восемь-девять за два дня, и это ровно та продолжительность, при которой ничего не успевает надоесть.
Если вам нужен хардкорный стелс с простором для экспериментов — это не сюда. А если хочется красивого сюжетного приключения в декорациях, которых вы в играх ещё не видели, — очень рекомендую.
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
Tiny Bookshop — уютный симулятор книжного продавца, в котором маленькая лавка помещается в прицепе, море всегда где-то неподалёку, а суть геймплея в том, чтобы понять, какую книгу на самом деле хочет покупатель. Большинство книг здесь настоящие, и их действительно надо рекомендовать по содержанию.
Книжный магазин на колёсах
В Tiny Bookshop мы приезжаем в приморский городок Bookstonbury-by-the Sea с лавкой на колёсах и довольно скромным запасом книг. Постоянного помещения у магазина нет, зато каждый день можно выбрать новую стоянку: сегодня торговать на набережной, завтра отправиться на блошиный рынок, а потом встать поближе к рыбному рынку или другому людному месту.
Утром идёт подготовка: нужно прочитать местную газету, проверить объявления, купить книги и украшения, выбрать место, заполнить полки и открыть ставни. У разных районов разная публика, погода влияет на торговлю, у разных жанров свои вероятности продаж и так далее, всё взаимосвязано и довольно разумно.
После открытия уже суетиться не нужно, это cozy-игра. Покупатели подходят к полкам, листают книги, иногда решаются на покупку, а иногда уходят. Можно переставлять запасы и следить, какие жанры заканчиваются, но Tiny Bookshop ни разу не tycoon и не превращает торговлю в управление складом. Денег обычно хочется больше, чем есть, но никакого особого недостатка тоже нету. Маленький уютный бизнес для души.
Газета постепенно знакомит с городом, объявления позволяют пополнить ассортимент и отыскать забавные предметы для лавки, а новые места немного меняют состав покупателей и спрос. Есть украшения для прицепа, которые дают свои баффы. В результате игра получается достаточно разнообразной, и в ней есть ощущение прогресса.
Почти настоящие рекомендации
Главная находка Tiny Bookshop — настоящие книги. На полках стоят Агата Кристи, Стейнбек, Достоевский и десятки других вполне реальных авторов; у изданий есть обложки, жанры и короткие описания. Уже само по себе приятно торговать не условными “детективами легендарной редкости”, а книгами, которые читал или о которых хотя бы слышал.
Но особенно хорошо это работает в рекомендациях. Время от времени покупатель не берёт книгу сам, а формулирует запрос. Кто-то хочет криминальный роман, действие которого происходит в узнаваемом реальном месте, и для ориентира вспоминает “Смерть на Ниле”. Другому нужен хоррор с захватывающим сюжетом. Третий любит научную фантастику, но не переносит юмор. После этого нужно перебрать ассортимент и предложить подходящий вариант.
Как правило, требуемый жанр очевиден, но хорошие запросы требуют подумать и о конкретном содержании. Находится ли действие в реальном месте? Насколько книга мрачная? Есть ли в ней приключение, семейная история или, скажем, архитектура, которой интересуется покупатель? Внезапно, что очень большая редкость для игр, внеигровые знания о книгах могут действительно пригодиться.
Конечно, настоящую работу книгопродавца здесь не моделируют. Выбор ограничен тем, что сейчас лежит в прицепе, критерии довольно широкие, а реакция покупателя быстро сообщает, угадал ли ты. И всё-таки момент, когда человек радуется правильно подобранной книге об архитектуре Британии, гораздо убедительнее безликого “задание выполнено”.
Tiny and cozy
Всё остальное в Tiny Bookshop старательно поддерживает уют. Букстонбери нарисован мягкими пастельными красками, у моря качаются лодки, вокруг лавки ходят постоянные знакомые, а между рабочими днями находятся небольшие поручения и разговоры. Можно подружиться с местными, помочь им, узнать городские новости и, разумеется, погладить и покормить собаку. Персонажи появляются снова, отношения понемногу развиваются, а ещё в каждой локации есть свои небольшие квесты, которые можно выполнить. Важные события здесь тоже уютные и соответствующего масштаба: встреча, местный праздник, вечер у костра.
Но у размеренности есть обратная сторона: дни быстро начинают повторяться. Меняются стоянки, ассортимент, погода и знакомые лица; появляются новые украшения и небольшие истории. Основной цикл при этом остаётся прежним: купил книги, расставил книги, открыл лавку, продал книги, поговорил с посетителями, закрыл лавку. Рекомендации оживляют процесс, но и они начинают повторяться, а сама торговля постепенно становится абсолютно автоматической.
Поэтому после первого лета я остановился. Кажется, дальше будет больше локаций, книг, персонажей и сезонных событий, но по сути процесс будет примерно такой же.
Это, конечно, мой личный выбор, и если вы хотите медитативно провести побольше времени в игре, Tiny Bookshop даст вам именно это: место, куда приятно возвращаться по вечерам. Так что хоть я и не стал проходить её до конца, Tiny Bookshop мне понравилась. Она красивая, добродушная и действительно расслабляющая, а идея с настоящими книгами и содержательными рекомендациями отличает её от десятков других уютных симуляторов. Так что рекомендую условно, под настроение.
“Былина” — стандартная action RPG, которая выезжает на том, что стандартная action RPG про Русь-матушку встречается всё-таки не каждый день. Здесь есть мечи и доспехи, карта и журнал заданий, сундуки, навыки, крафт, подземелья и боссы. И очень, очень много русского духа.
Здесь Русью пахнет
“Былина” начинается с того, что молодой воин Сокол отправляется на подвиги и почти сразу погибает. Игра даже выдаёт торжественную надпись “И Сокол умер”, после чего, разумеется, не заканчивается. Героя возвращает к жизни загадочный дух, который теперь делит с ним одно тело (не самый свежий ход, ага). Душу предстоит вернуть, с новым соседом — разобраться, а заодно, раз уж взялся, спасти Тридевятое царство.
Исторической реконструкции от “Былины” ждать, конечно, не стоит. Это смесь былин, сказок и современных стереотипов о древней Руси. За одним поворотом стоят деревянные избы и чинные старцы, за другим — огромная разумная жаба, за третьим — крепость, будто собранная для фэнтезийного фильма, а где-то неподалёку обязательно прячется очередная нечисть. Сюда отлично помещаются и Кощей, и берёза с глазами, и турнир деревенских силачей, и квест под названием “Месть Золотой Рыбки”.
Такой развесистой клюквы в игре много, собственно, это и есть суть игры. Сокол бродит по осенним лесам, болотам, деревням, подземельям, княжеским палатам и Тридевятому царству. Локации иногда кажутся слишком большими, но всегда стараются показать что-нибудь новое. Мне понравился тёплый деревенский вайб: торговцы, телеги, игра в городки, сервированные столы…
Юмор бывает разный, но обычно довольно детский и построен на помещении сказочных объектов в более реалистичный контекст. Не каждая шутка реально хороша, но в целом создаётся мир в этаком духе русского Пратчетта (у него ведь тоже шутки в основном детские, да и принцип в целом тот же).
Зато иногда герои выражаются весьма не по-детски. Это даже как-то неожиданно было, но тоже добавило колорита. Правда, недетские выражения не озвучены, однажды даже слышал реплику “Иди лесом”, когда написано было нечто совсем другое.
Среди персонажей здесь Василий Пьяница, Жабная Особа и Берёза с глазами. Чтобы поднять уровень, надо обняться с домовёнком; их всех зовут Кузя, и выглядят Кузи о-очень специфически. В общем, думаю, стиль вы поняли.
Но при этом иногда включается натуральное тёмное фэнтези, со всеми подробностями, что тоже приятно разнообразит происходящее:
RPG как RPG
А вот механически “Былина” очень скромно выглядит. Мы получаем задания, идём по маркеру, разговариваем, дерёмся, собираем добычу, меняем снаряжение и снова идём по маркеру. В журнале есть основные и побочные квесты, в инвентаре — мечи и доспехи, в меню — способности и улучшения. Между походами можно поговорить с жителями, поторговать и подготовиться к следующей вылазке. Всё сделано понятно и в целом удобно (кроме инвентаря, да и бог с ним), но очень стандартно.
Бои устроены примерно так же. У Сокола есть обычные удары, уклонения, щит и способности, несколько видов оружия, у которых со временем меняются циферки, встречаются арены, ловушки и боссы. Боссы, кстати, мило сделаны, мне понравились, но это тоже скорее про сеттинг, чем про геймплей.
К счастью, разработчики понимали, что механиками они игрока не удержат, так что, во-первых, постоянно меняют декорации и добавляют сюжет, а во-вторых, разнообразят бои загадками; некоторые загадки вполне даже свежо смотрятся.
А главное, хотя история честно проходит стандартную арку героя, и Сокол успевает обрести характер, завершить своё путешествие и даже завести хозяйство, всё это не затянуто; пройти “Былину” можно и нужно часов за восемь.
Заключение
В общем-то, добавить уже и нечего: “Былина” — это очень прямолинейная RPG, ничем не выдающаяся, местами немного затянутая, хотя в целом короткая (и это большой плюс!). Но суть здесь в сеттинге: избы, нечисть, рисованные рожи, говорящие жабы, солёные шутки и русский текст, который не выглядит переводом с английского, — это и есть главное содержание.
Так что ознакомиться можно, для доброй былины может и этого оказаться достаточно.
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
У нас снова квест, снова классический point-and-click в лучших традициях, на этот раз даже пиксельный. Жанр этот был великим в девяностые, потом лет на двадцать пропал из виду, а с расцветом инди-сцены, конечно же, настал и ренессанс квестов, ну то есть point-and-click adventures. Я о них пишу постоянно: вот только недавно были The Séance of Blake Manor, Riddlewood Manor и Casebook 1899: The Leipzig Murders.
Но The Drifter — случай в каком-то смысле особый. Авторы решили сделать квест, который бы работал как триллер, и у них в целом получилось! Как по мне, это один из лучших представителей жанра за последние годы.
Кто это сделал
The Drifter — игра маленькой студии Powerhoof из Мельбурна. Их предыдущий проект на Steam — Crawl (2014), мультиплеерный пиксельный dungeon crawler, о котором мне вам сказать нечего. Сама The Drifter вышла год назад, в июле 2025-го, и собрала какие-то награды и супер-положительные отзывы, ну да не о них сейчас. Как это часто бывает, начиналась она как маленький прототип с гейм-джема, а потом несколько лет разрасталась до полноценной игры.
Что интересно, попутно Powerhoof написали движок PowerQuest — открытый и бесплатный инструмент поверх Unity для классических 2D adventures, которым теперь может пользоваться кто угодно. На этом движке уже куча игр вышла, в том числе, кстати, Loco Motive, которую я обозревал когда-то.
Игра полностью озвучена (особенно главный герой вышел колоритным), и музыка написана для игры очень в тему. Сами авторы описывают свои источники вдохновения как “Кинг, Крайтон, Карпентер и щепотка австралийского exploitation-кино семидесятых”, и с этим описанием трудно спорить.
Завязка и сеттинг
Мик Картер — тот самый drifter из названия: бродяга, который годами мотается по стране на товарных поездах. Когда-то у него была нормальная жизнь и семья, но с тех пор случилась трагедия, о которой игра рассказывает постепенно, и теперь Мик в основном бежит, от людей и от себя. В родной город он возвращается по печальному поводу: умерла его мать, и он хочет успеть на похороны.
Но не успевает доехать: прямо в товарном вагоне на его глазах убивают старика-попутчика, а самого Мика люди в чёрном топят в реке. И тут происходит главное фантастическое допущение игры: Мик умирает — и приходит в себя за несколько секунд до смерти. Весь в холодном поту, с колотящимся сердцем и без малейшего понимания, что с ним происходит. То есть смерть героя здесь вписана в сюжет и сеттинг как способность героя и одна из главных их (и сюжета, и героя) загадок.
Дальше действительно начинается триллер, и всё раскручивается со скоростью хорошего боевика. Полиция и газеты быстро находят удобного виновника всех последних безобразий: бродяга, оказавшийся не в то время не в том месте, идеально подходит на роль маньяка, которого пресса прозвала Bucket Butcher. Мику приходится одновременно скрываться, разбираться в собственной невероятной способности и распутывать клубок, в котором найдётся место и пропавшим людям, и корпорации Trinity Biotech, и тварям, которых лучше не видеть, и даже квантовой физике (в её популярно-фантастическом изводе, разумеется).
Сеттинг — девяностые, и не абстрактные, а очень австралийские: товарные поезда, редакция местной газеты, ржавые окраины, бушленд, компьютеры с чем-то вроде Windows 3.1 и телефонные будки. Всё это озвучено австралийскими голосами и нарисовано с большой любовью.
Самое главное: темп
Пожалуй, самое главное, что хочется сказать про The Drifter, — это отличный темп, то, что называется pacing. От квеста такого совершенно не ожидаешь: здесь по самому принципу геймплея должны быть остановки и “затыки”, паузы, когда ты должен придумать, что делать дальше.
И они здесь есть, но при этом игра регулярно создаёт вполне реальное напряжение. Обычно это делается через сцены, в которых ты умираешь, и игра потом даёт тебе второй шанс повести себя правильно, а потом третий и так далее. Никаких жёстких таймингов здесь нет, просто надо сделать именно то, что нужно, иначе смерть.
Умирать в The Drifter приходится часто и разнообразно — тонуть, гореть, задыхаться, быть заживо похороненным и так далее. И эти смерти вписаны в сюжет и сеттинг игры: Мик каждый раз возвращается к моменту за несколько секунд до гибели, и для него это не игровая условность, а необъяснимая и крайне мучительная способность.
Работает на темп и структура: игра разбита на главы, каждая заканчивается клиффхэнгером и заставкой “End of Chapter N”. Получается этакий детективно-фантастический сериал, который можно “посмотреть” часов за шесть-восемь.
Загадки и геймплей
Теперь о том, как это сделано механически. The Drifter — игра, в которой почти невозможно застрять: инвентарь маленький, Мик таскает с собой только то, что действительно нужно, интерфейс сведён к минимуму, есть карта города с быстрым перемещением, а внутренний монолог Мика готов подсказать, что он сам думает о происходящем и куда собирался дальше.
Загадки в основном житейские, не из разряда “примени резиновую курицу к блоку”, решения почти всегда логичны в рамках ситуации. Так что в результате напряжённые сцены не проседают от того, что ты полчаса тыкаешь всем инвентарём во все хотспоты.
Понятно, что за это приходится платить сложностью. Если вы играете в квесты именно для того, чтобы на час зависнуть над хитрой головоломкой, The Drifter не для вас — пара мест заставляют немного задуматься, но не более того.
Сюжет, картинка и звук
The Drifter очень стильно написана и поставлена. Значительная часть текста — закадровый внутренний монолог Мика, густая круто сваренная нуарная проза от первого лица, в духе “I fall back as the iron bar whistles past my face”, ну вы понимаете. Слушать тоже очень приятно — озвучено всё действительно хорошо. Пиксель-арт выразительный, анимации приятные, игра часто меняет перспективу и масштаб кадра, так что картинка не приедается.
Сам сюжет — фантастический триллер, B-movie, который к финалу раскручивается совсем уж до невозможности. Много твистов, ставки растут стремительно, и не все повороты, конечно же, так уж логичны, но игра нигде не останавливается достаточно надолго, чтобы это начало мешать. А в движении всё работает, как в тех самых B-movies, да и персонажи второго плана (сестра Мика, журналистка, учёные, бродяги) достаточно живые и интересные.
Заключение
The Drifter — это классический point-and-click квест, который вспомнил, что значит слово “adventure” в названии жанра. Отличный темп, смерти, имеющие смысл в лоре, минимум затыков, максимум атмосферы. Если вы любите квесты, обязательно попробуйте, это действительно одна из вершин ренессанса жанра. А если никогда или уже много лет как в них не играли — The Drifter будет отличной точкой входа, потому что ни застрять, ни заскучать здесь не получится. Очень рекомендую.
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
22 июля Дмитрий Рыбин написал в X, что GPT 5.6 Pro опровергла гипотезу Диница — Гарга — Гёманса (Dinitz–Garg–Goemans conjecture) из теории потоков в графах. Гипотеза простояла с конца 1990-х; в статье 2025 года Swamy et al. всё ещё называли её “a famous conjecture” и писали, что даже существенно ослабленный вариант был бы прорывом.
Как и в случае проблемы якобиана, здесь пока нет ни журнальной статьи, ни формального рецензирования, но они и не нужны, потому что проверить контрпример очень легко. У нас есть пост Рыбина, выложенный им полный диалог с моделью и четырёхстраничный арифметический сертификат, но в графе всего семь вершин, девять дуг и восемь возможных неделимых потоков. Мы с GPT независимо проверили все восемь программой, которая перебирает буквально все пути в графе, и никаких ошибок здесь нет.
Более того, контрпример оказался не просто верным, а очень интересно устроенным. Внутри него прячется известный в комбинаторной оптимизации объект — треугольник попарных конфликтов.
Давайте разберёмся, что такое делимые и неделимые потоки и в чём состояла гипотеза. Потом обсудим, почему она казалась естественной и почему её было так трудно доказать. Затем проверим контрпример, вытащим из него структурную идею и попробуем его уменьшить. А в конце, разумеется, посмотрим на промпты. Спойлер: там буквально написано “you should do a breakthrough”.
Потоки, которые можно и нельзя делить
Начнём с обычной транспортной сети. Есть ориентированный граф : вершины — перекрёстки или маршрутизаторы, дуги — дороги или каналы связи. У нас есть один общий источник , например склад, и несколько терминалов , куда надо доставить грузы объёмов .
У каждой дуги есть пропускная способность: больше этого количества груза одновременно по ней отправлять нельзя. Может быть и неотрицательная цена за перевозку одной единицы груза.
В более простой постановке задачи грузы можно делить, то есть, например, заказ объёма 10 разрешается разрезать на части: пять единиц поехали по одному пути, три по другому, две по третьему. Такой поток называется делимым или дробным (splittable, fractional flow). В каждой внутренней вершине выполняется закон сохранения: сколько потока вошло, столько и вышло; источник выпускает сумму всех заказов, а терминал поглощает ровно .
С дробными потоками работать легко и приятно, их можно искать линейным программированием, а для классического максимального потока есть ещё более быстрые специализированные алгоритмы.
Но во многих задачах груз делить нельзя. Контейнер должен ехать целиком, сетевое соединение должно выбрать один маршрут, задачу на вычислительном кластере нельзя на 37% выполнить на одном сервере и на 63% на другом. Тогда для каждого терминала надо выбрать один путь из в и отправить по нему все единиц. Это неделимый поток (unsplittable flow).
Если через дугу проходят пути терминалов из множества , нагрузка на неё равна
А полная стоимость маршрутизации равна
Очевидно, что разница между двумя постановками есть, и немалая. Представьте один заказ объёма 10 и две дороги, по которым дробный поток отправляет по пять единиц. После запрета деления придётся выбрать одну дорогу и положить на неё все десять. Нагрузка на выбранную дорогу вырастет скачком на пять.
Такое неизбежно происходит и в общем случае. Поэтому разумный вопрос здесь в том, насколько сильно придётся перегружать дуги. Обозначим максимальный размер заказа (demand, ещё переводят как “потребность” или “запрос”) через
Запас в один максимальный заказ выглядит естественно: если в процессе округления на дуге оказался один целый груз, хуже он добавить не может. Именно это наблюдение превратилось в нашу сегодняшнюю гипотезу.
Теорема Диница — Гарга — Гёманса
Задачу о неделимом потоке из одного источника ввёл Джон Клейнберг в работе 1996 года. Даже решить, существует ли неделимая маршрутизация, соблюдающая все ёмкости, NP-трудно; как отмечают авторы современного обзора, уже на графе из двух вершин с параллельными дугами сюда сводятся Subset Sum и Bin Packing.
Теорема (Dinitz–Garg–Goemans, 1999).Пусть — любой допустимый дробный поток. Тогда за полиномиальное время можно найти неделимый поток , для которого на каждой дуге
Если исходный поток соблюдает ёмкости, , то, следовательно,
То есть округлить можно всегда, и ни одна дуга не получит больше одного максимального заказа сверх исходной нагрузки. Причём порядок величины здесь улучшить нельзя: даже один груз, дробно размазанный по многим путям, при переходе к неделимым потокам целиком ляжет на один из них.
Это верная и интересная теорема, но она про частный случай нашей задачи, без стоимостей дуг. Вскоре Гёманс предложил естественное усиление.
Гипотеза Гёманса.Если на дугах заданы неотрицательные цены , то неделимый поток можно выбрать так, чтобы одновременно не слишком перегружались дуги,
и не увеличивалась общая цена,
Иногда её называют гипотезой Диница — Гарга — Гёманса по имени исходной теоремы, а иногда просто Goemans’ conjecture; важно, что теорема трёх авторов без стоимостей остаётся в силе, опровергнуто именно стоимостное усиление.
Почему в гипотезу верили и почему она была сложной
У гипотезы была очень убедительная вероятностная интуиция.
Разложим дробный поток каждого терминала по путям. Долю потока на пути можно воспринимать как вероятность выбрать этот путь целиком. Если независимо выбрать по одному пути для каждого терминала, то в среднем нагрузка на каждой дуге будет ровно , а средняя стоимость — ровно .
Значит, среди всех исходов точно есть хотя бы один со стоимостью не выше средней. С другой стороны, теорема Диница — Гарга — Гёманса гарантирует, что есть исход, в котором все нагрузки не превосходят .
Очень хочется поверить, что округление можно организовать так, чтобы эти два хороших свойства встретились в одном исходе.
Конечно, здесь нет формального доказательства: из “существует дешёвый поток” и “существует поток без большой перегрузки” не следует, что существует поток одновременно дешёвый и без большой перегрузки. Именно так устроен новый контрпример.
Но до него эта надежда выглядела вполне разумной. Многие классические методы зависимого округления умеют сохранять линейную целевую функцию и одновременно контролировать ошибки в ограничениях. Для специальных случаев получались положительные результаты: например, Skutella (2002) доказал гипотезу, когда все заказы кратны друг другу, точнее, образуют цепочку делимости (см. также Morell, Skutella, 2022).
При этом прогресса в общем случае почти не было. В 2023 году Traub, Koch, Zenklusen писали, что не известно практически ни одного нетривиального класса графов, где точная гипотеза была бы доказана. Они получили важный результат для планарных графов, но только с вдвое большим запасом:
Даже в работе октября 2025 года вопрос, можно ли сохранять стоимость хотя бы с добавочной перегрузкой в общих графах, назывался “широко открытым”, а его решение — потенциальным прорывом. Я нашёл только один (совсем недавний, 29 июня 2026!) результат Almoghrabi, Skutella & Warode, где гипотеза Гёманса доказывается для нетривиального класса: последовательно-параллельных ориентированных графов, причём даже в более общей многоисточниковой постановке.
Почему это вообще так сложно? Потому что дробный поток живёт в выпуклом многограннике и оптимизируется линейными методами, а неделимый поток — это дискретный выбор целого пути для каждого терминала. Один выбор меняет нагрузки сразу на всех дугах пути; разные терминалы связываются через длинные общие куски маршрутов, а ограничение в не даёт усреднить ошибку по размеру графа. Надо одновременно попасть в тонкую полосу вокруг по каждой дуге и не испортить одну глобальную цену.
Может показаться, что контрпример давно можно было бы найти прямым перебором, но на самом деле пространство возможных контрпримеров здесь тоже огромное. Надо выбрать не только граф, но и терминалы, заказы, дробное разложение и цены. Прямой перебор плохо масштабируется, потому что даже у маленького графа слишком много числовых степеней свободы.
Рыбин пишет, что сам неделями думал об этой задаче в обе стороны и что о ней, по его мнению, задумывалось большинство специалистов по потокам.
Тем любопытнее, что итоговый контрпример можно нарисовать на салфетке.
Семь вершин и девять дуг
Вот весь граф. Число на дуге — нагрузка дробного потока, — цена одной единицы; у непомеченных цен значение нулевое. Двойными кружками отмечены терминалы.
Заказы трёх терминалов равны
поэтому .
Сначала проверим, что нарисованные числа действительно задают дробный поток. Из источника выходит
В трёх внутренних вершинах поток сохраняется:
Наконец, в терминалы приходит ровно столько, сколько требуется:
Стоимость положительна только на трёх оранжевых дугах:
Можно посмотреть на тот же поток отдельно для каждого терминала. У каждого груза есть ровно два пути — дорогой и бесплатный :
Обратите внимание, что тоже проходит по бесплатной дуге , но платит на дуге .
Дробный поток раскладывается так:
Каждый дорогой путь, если отправить по нему соответствующий груз целиком, стоит ровно 30:
Поэтому стоимость 58 можно пересчитать ещё одним способом:
А теперь запретим делить грузы. Для каждого терминала надо выбрать либо , либо . Всего получается вариантов. И 58 превращается в 60 из-за трёх арифметических конфликтов.
Конфликт и . Если второй и третий грузы одновременно идут по бесплатным путям, на дугу ложится
Но гипотеза разрешает там не больше
Перегрузка — одна единица.
Конфликт и . Эти два пути вместе дают на дуге
Снова не хватает ровно одной единицы.
Конфликт и . Тут надо вспомнить, что третий груз проходит по дуге на обоих своих путях, и дорогом, и бесплатном. Поэтому вместе с и нагрузка на неизбежно равна
И опять разность равна единице.
Итак, любые два бесплатных пути несовместимы с ограничениями гипотезы. Значит, бесплатно может поехать не больше одного груза, а как минимум два обязаны выбрать дорогие пути. Каждый стоит 30, поэтому вся допустимая неделимая маршрутизация стоит не меньше
Вот и всё опровержение.
Для полноты выпишем все восемь вариантов. Слово bad означает, что после разрешённой добавки какая-то дуга всё равно перегружена:
E1 E2 E3 cost 90 good
E1 E2 Z3 cost 60 good
E1 Z2 E3 cost 60 good
Z1 E2 E3 cost 60 good
E1 Z2 Z3 cost 30 bad: v→w by 1
Z1 E2 Z3 cost 30 bad: u→v by 1
Z1 Z2 E3 cost 30 bad: s→u by 1
Z1 Z2 Z3 cost 0 bad: s→u by 1, u→v by 11, v→w by 1
Все четыре маршрутизации стоимостью меньше 60 нарушают ограничения, а все четыре, которые ограничения соблюдают, стоят 60 или 90.
Я уже два раза написал разными словами одно и то же простое рассуждение, чтобы подчеркнуть, что как и в случае проблемы якобиана, проверка здесь вообще не представляет никакого труда, так что ждать рецензирования смысла нет.
Кстати, граф не только ацикличен, но и планарен. Если забыть направления и разгладить три вершины степени 2, получится вообще , полный граф на четырёх вершинах. Это тоже по-своему интересно, потому что по планарности могла бы проходить граница между верным и неверным утверждением, и Рыбин изначально просил найти контрпример для общего, непланарного случая, но GPT 5.6 в итоге нашёл и более сильный.
Всё это, разумеется, не противоречит планарному результату 2023 года. Там разрешён зазор , а не , и при таком запасе в нашем примере можно отправить все три груза по бесплатным путям и получить стоимость ноль.
Что там происходит на самом деле
Теперь выкинем почти все детали графа и оставим его комбинаторный скелет.
Введём переменную , равную 1, если терминал выбирает бесплатный путь , и 0, если дорогой . Три конфликта говорят:
Для нулей и единиц отсюда следует
Это многогранник стабильных множеств треугольника: можно выбрать не больше одной вершины, потому что каждая пара соединена конфликтным ребром.
А какие значения соответствуют дробному потоку? Это доли грузов, отправленные по бесплатным путям:
Каждое попарное неравенство выполнено. Но сумма равна
Из-за этого неравенства и ломается гипотеза. Дробный поток живёт в обычной релаксации, где есть три попарных конфликта, но не видна их общая “треугольная” связь. Неделимая маршрутизация обязана удовлетворять более сильному неравенству суммы.
А цены на дугах — просто разделяющая гиперплоскость. Поскольку каждый дорогой выбор стоит 30, стоимость равна
У дробной точки получается 58, а у любой целой точки с — не меньше 60.
В таком виде контрпример уже не кажется случайным. GPT 5.6 не просто наткнулся на девять удачных чисел, а реализовал в маленьком ориентированном графе классический разрыв между дробным и целым многогранниками для треугольника.
Это заодно объясняет, почему двух терминалов для этого механизма недостаточно. У одного конфликтного ребра неравенство уже полностью описывает выпуклую оболочку допустимых точек. Первое недостающее ограничение возникает именно на треугольнике, то есть нужны три бесплатных варианта. Я не утверждаю, что семь вершин абсолютно минимальны среди всех мыслимых контрпримеров (для этого нужен отдельный перебор топологий, и его ещё никто вроде бы не сделал), но структурное ядро здесь действительно самое маленькое возможное.
Проверка, уменьшение контрпримера и граница
Проверка. Главная опасность в проверке подобных конструкций — перебрать только заранее задуманные пути и забыть, что их куски можно склеить в новый маршрут. Судя по опубликованному диалогу, несколько ранних попыток GPT 5.6 именно на этом и сломались.
Поэтому в проверочном скрипте мы с тем же GPT 5.6 не задавали шесть путей руками, а перебирали все простые пути из в каждый терминал. Впрочем, здесь всё-таки негде ошибиться, получится именно шесть путей:
После этого декартово произведение трёх двухэлементных списков даёт восемь маршрутизаций из таблицы выше.
Можно ли уменьшить числа? Да. На последней странице сертификата выписано целое параметрическое семейство. Я перебрал его рациональные и целочисленные варианты и нашёл меньший целочисленный экземпляр на том же графе:
заказы , так что ;
по бесплатным путям дробно идут единицы;
единичные цены трёх платных дуг равны .
Тогда каждый дорогой путь целиком стоит 63, дробная стоимость равна
а любая допустимая неделимая маршрутизация стоит хотя бы
Три попарных конфликта снова превышают разрешённую границу ровно на единицу. В этой же семивершинной схеме, если требовать целые заказы и нагрузки и уравнять полную цену трёх дорогих выборов, минимально; перебор меньших значений не даёт ни одного варианта, а при 9 решение единственно.
Исходные числа 58 и 60 для рассказа всё равно красивее, поэтому главным примером я оставил их. Но уменьшенный вариант даёт ещё один результат.
Рассмотрим ослабленную гипотезу, где разрешается
В исходном примере любая маршрутизация стоимостью не больше 58 должна выбрать хотя бы два бесплатных пути. Для каждого такого выбора на конфликтной дуге нагрузка превосходит на 16, то есть требуется
В уменьшенном примере требуется уже
А параметрическое семейство позволяет подойти ещё ближе к . Нормируем первый и третий заказы к 1, снова уравняем полную стоимость трёх дорогих путей и положим
где — доли трёх грузов на бесплатных путях. Их суммарная дробная масса равна . Если каждый дорогой путь целиком стоит , дробная стоимость равна , поэтому сохраняющая стоимость маршрутизация обязана выбрать хотя бы два бесплатных пути. В то же время любой такой выбор требует коэффициента
Беря положительное рациональное сколь угодно малым, получаем контрпример для любого универсального коэффициента .
Иными словами, для планарных графов естественный вопрос теперь звучит так: какой будет оптимальный “коэффициент невязки” между и 2? Верхняя граница 2 известна из работы 2023 года, нижняя получается уже из этой маленькой планарной конструкции.
Для общих графов картина ещё менее понятна: неизвестно даже, достаточно ли вообще какой-нибудь универсальной константы при с одновременным сохранением стоимости. Так что хоть исходная гипотеза и пала, работа здесь ещё не вполне закончена.
Четыре промпта
Ну и наконец — как это было найдено.
Публичный диалог с GPT 5.6 Pro совершенно не похож на тщательно спроектированный исследовательский промпт. Рыбин приложил материалы о задаче и попросил построить структурный контрпример для общего случая, добавив бессмертную фразу:
You should do a breakthrough.
Модель долго исследовала разные конструкции, выдавала частичные результаты и несколько раз не доходила до корректного ответа. Рыбин отвечал коротко и не пытался даже разобраться в том, что модель писала, по существу. После “Research conclusion” идут несколько страниц текста, но дальше диалог продолжается так:
Двух промптов не хватило, и GPT 5.6 опять сдался (через полтора часа размышлений), но третий промпт всё ещё прямолинеен:
И даже трёх промптов и пяти часов размышлений — о ужас! — не хватило. Так что Дмитрий Рыбин потерял терпение и написал коротко и прямо:
Как видите, на четвёртый раз невод, pardon the pun, пришёл с золотою рыбкой. Всего четыре коротких сообщения, никакого “искусства промптинга”. Опять же, я так
Разумеется, из этого не следует, что математическая экспертиза больше не нужна. Чтобы вообще выбрать эту гипотезу, надо знать, что она важна и открыта и иметь некоторую интуицию о том, что именно она может оказаться неверной. Дмитрий Рыбин действительно много думал над задачей сам.
Но и преуменьшать роль модели здесь странно. Человек не подсказывал LLM граф, числа или даже идею треугольника конфликтов. Финальная конструкция появилась после нескольких часов самостоятельного поиска, а пользовательская обратная связь состояла из “продолжай” и “хватит частичных результатов”.
Заключение
Итак, гипотеза Диница — Гарга — Гёманса утверждала, что любой дробный поток можно округлить до неделимого, одновременно сохранив стоимость и увеличив нагрузку каждой дуги не более чем на один максимальный заказ.
GPT 5.6 Pro нашла планарный ациклический граф с тремя терминалами, где дробный поток стоит 58, а любой неделимый поток в разрешённых границах стоит не меньше 60. Сертификат состоит из девяти дуг и восьми строк полного перебора; я независимо проверил и арифметику, и отсутствие дополнительных путей.
Главная идея контрпримера — не сами числа, а треугольник конфликтов. Дробный поток использует три бесплатных выбора с суммарной массой , хотя целиком можно выбрать не больше одного. Цены лишь переводят недостающее неравенство в разрыв между 58 и 60.
Теорема Диница, Гарга и Гёманса без стоимостей остаётся верна. Планарный результат с запасом тоже остаётся верен. И теперь появляется некоторый зазор, который можно пытаться сокращать: как мы тут увидели, та же конструкция показывает, что любой новый универсальный коэффициент должен быть не меньше , то есть теперь можно сокращать расстояние между и .
У меня нет сомнений, что если бы любой из этих результатов получил человек, он стал бы широко известен в узких кругах и всегда имел бы гарантированную профессорскую позицию в хорошем месте, даже если бы больше ничего великого не сделал и продолжал бы всю жизнь изучать следствия и расширения своего прорывного результата (таких примеров в науке много, это не что-то плохое). Так что вопрос о том, достигли ли AI-модели человеческого уровня в математике, кажется мне уже закрытым.
А что ещё дальше, коллеги?..
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!
В прошлый раз я закончил пост словами: “Если у вас есть любимая гипотеза, в которую вы верите, самое время написать про неё хороший промпт”. Что ж, люди так и сделали, и сегодня у нас третий эпизод того же сериала.
На этот раз отличилась модель от Anthropic: 19 июля, пока человечество смотрело финал чемпионата мира по футболу, Claude Fable 5 построил контрпример к проблеме якобиана (Jacobian conjecture) — одной из самых знаменитых открытых проблем алгебраической геометрии, номеру 16 в списке Смейла, простоявшей с 1939 года.
Если в прошлых сериях мы обсуждали хотя бы двухстраничные препринты, то здесь научная коммуникация стала ещё ближе к сингулярности; весь результат целиком существует в виде твита математика Левента Алпёге (Levent Alpöge):
И в общем-то этим твитом всё сказано, дальше можно не читать, а пойти проверить (ниже будет код на десять строк). Но я, конечно, не могу этим ограничиться, так что кое-какой контекст вам всё-таки расскажу. Тем более что это (опять!) тот редкий случай, когда про решение знаменитой проблемы можно рассказать всё до последней формулы.
Что такое проблема якобиана
Пусть — полиномиальное отображение: каждая компонента — многочлен от . Его якобиан — определитель матрицы частных производных
Если обратимо, причём обратное отображение тоже полиномиально, то по формуле дифференцирования композиции , то есть якобиан — многочлен, обратимый в кольце многочленов, а значит, ненулевая константа. Гипотеза о якобиане утверждает, что верно и обратное:
Гипотеза (Keller, 1939).Если — ненулевая константа, то обратимо (и обратное отображение автоматически полиномиально).
Отт-Генрих Келлер сформулировал её в 1939 году (изначально для многочленов с целыми коэффициентами); с тех пор она стала, пожалуй, главным открытым вопросом о многочленах от нескольких переменных, который можно рассказать любому студенту.
Есть два класса примеров, на которых гипотеза очевидно работает:
линейные отображения (якобиан — определитель числовой матрицы) и
“треугольные” отображения вида — тут якобиан равен 1, а обратное выписывается сразу как .
Композиции таких отображений дают массу нелинейных примеров с константным якобианом, и все они обратимы. Гипотеза, по сути, говорила, что ничего другого и не бывает.
Почему люди в неё верили? Во-первых, условие означает, что — локальный диффеоморфизм в каждой точке: теорема об обратной функции даёт обратимость в окрестности любой точки, и вопрос только в том, склеиваются ли локальные обратные в глобальное.
Во-вторых, в размерности 1 всё тривиально: означает, что линейна.
В-третьих, давно известно, что вся проблема только в инъективности: по теореме Акса–Гротендика инъективное полиномиальное отображение автоматически сюръективно. Более того, его обратное обязательно будет полиномиальным; это называется теоремой Бялыницкого-Бирули — Розенлихта.
Упомянутые выше результаты я вам с ходу не объясню, но для нас сейчас они значат, что контрпример — это обязательно отображение с константным якобианом, склеивающее какие-то две точки (нарушающее инъективность).
Стоит сразу оговориться, что над полями положительной характеристики гипотеза неверна тривиальным образом: у отображения над производная равна 1, но оно склеивает в ноль всё простое подполе. Так что это вопрос исключительно про характеристику 0 (вещественные числа, комплексные числа), и у гипотезы не может быть никакого доказательства “грубой алгебраической силой”.
Предыдущие попытки и частичные результаты
Фабрика ложных доказательств. Отдельный жанр — история попыток. Гипотеза якобиана, конечно, была не так популярна, как великая теорема Ферма, но к 1982 году Басс, Коннелл и Райт в классическом обзоре насчитывали в литературе не менее пяти опубликованных ошибочных доказательств. И это именно в литературе, то есть прошедших рецензирование.
Среди отметившихся принято называть вполне серьёзных математиков — например, Бениамино Сегре и Вольфганга Грёбнера (того самого, в честь которого названы базисы Грёбнера, к которым мы ещё вернёмся ниже). В 2004 году Мел Хохстер анонсировал доказательство двумерного случая, найденное Кэролин Дин, — и в нём тоже вскоре обнаружилась ошибка. Ну а в эпоху arXiv “доказательства” гипотезы о якобиане (в обе стороны, разумеется) выходили практически ежегодно.
Об уровне задачи говорит, например, то, что диссертация Итана Чжана (Yitang Zhang), который потом совершил прорыв в задаче об ограниченных промежутках между простыми числами, была посвящена именно гипотезе о якобиане.
Что уже было действительно доказано.Wang (1980) доказал гипотезу для отображений степени 2 в любой размерности. Moh (1983) — для и степени до 100 включительно. Ягжев (1980) и Bass, Connell, Wright (1982) показали интересную редукцию степени: достаточно доказать гипотезу для отображений вида , где — однородное кубическое, правда, ценой роста размерности. Позже Дружковский (1983) сузил ещё сильнее, до с линейными .
Был и предупредительный выстрел. В 1994 году Сергей Пинчук построил знаменитый контрпример к вещественной версии: полиномиальное отображение , у которого якобиан не обращается в ноль нигде, но которое не инъективно. У Пинчука якобиан не был константой (он всюду положителен, но принимает сколь угодно малые значения), так что комплексную гипотезу это не опровергало. Но при этом стало окончательно ясно, что “локальная обратимость всюду” глобальную не гарантирует, и закрылись многие возможные пути для доказательства гипотезы.
И ещё стоит отметить, что размерность 2 в этой науке — особая: там автоморфизмы полиномиального кольца устроены просто (теорема Юнга – ван дер Кулка), и гипотеза о якобиане там проверена до степени 100. А вот в размерности 3 регулярно ломается всё, что можно: например, автоморфизм Нагаты оказался “диким” именно в (Шестаков, Умирбаев, 2004), а гипотеза Маркуса–Ямабе о глобальной устойчивости пала на полиномиальном контрпримере именно в (Cima et al., 1997).
Но большинство этих результатов, особенно положительных, довольно сложные. А вот контрпример к гипотезе о якобиане оказался очень даже простым: это три многочлена над степени не больше 7. Давайте к нему и перейдём.
Контрпример и его проверка
Выпишем героя дня в человеческом виде. Отображение задаётся формулами
То есть это три многочлена степени 7, 6 и 4 соответственно. Утверждается, что:
тождественно (константа!), но при этом
.
Первое означает, что — так называемое отображение Келлера, то есть в точности объект гипотезы; второе — что оно не инъективно. (Если вас смущает вместо , просто разделите любую из компонент на .)
Проверить это может кто угодно; вот буквально весь код:
import sympy as sp
x, y, z = sp.symbols('x y z')
F = sp.Matrix([(1+x*y)**3*z + y**2*(1+x*y)*(4+3*x*y),
y + 3*x*(1+x*y)**2*z + 3*x*y**2*(4+3*x*y),
2*x - 3*x**2*y - x**3*z])
print(sp.expand(F.jacobian([x, y, z]).det())) # -2
for p in [(0, 0, sp.Rational(-1,4)),
(1, sp.Rational(-3,2), sp.Rational(13,2)),
(-1, sp.Rational(3,2), sp.Rational(13,2))]:
print(F.subs(dict(zip((x, y, z), p))).T) # трижды [-1/4, 0, 0]
Да можно и руками тут подсчитать определитель, получится без проблем. Более того, базис Грёбнера идеала говорит, что других прообразов у точки нет: слой состоит ровно из этих трёх точек, и в твите приведён он целиком.
Заметьте: и коэффициенты отображения, и склеивающиеся точки вещественные и даже рациональные. Так что заодно закрыт и вещественный вопрос: найдено полиномиальное отображение с якобианом , не являющееся инъективным.
Понятно, что посчитать определитель матрицы даже символьно несложно. Но самое интересное здесь, конечно, не сама проверка, а то, почему и как это работает. Не претендую здесь ни на какую экспертность, но давайте немножко обсудим.
Как оно устроено: кубика вместо обратной функции
Раскрывать скобки в можно долго и без большого просветления. Ключ к устройству контрпримера — вот такое тождество (проверяется, опять же, в лоб):
Иными словами, координата алгебраична степени 3 (является корнем кубического многочлена) над образом: если , то — корень явно выписанной кубики
А по восстанавливается всё остальное: прямая проверка даёт тождество
откуда на слое
а находится из первого уравнения (оно линейно по ). Итого слой над точкой при — это в точности корни кубики (кроме тех, где , там убегает на бесконечность).
Вот и вся анатомия. Отображение — трёхлистное: у общей точки ровно три комплексных прообраза, и обратное “отображение”— это формула Кардано, применённая к . Никаким многочленом (и даже однозначной функцией) обратное, конечно, не является (и по теореме Акса–Гротендика иначе и быть не могло).
Обратите внимание на старший коэффициент кубики: это константа 2, не зависящая от . Поэтому корни , то есть координата прообразов, никогда не уходят на бесконечность (старший член не обнуляется), а слиться два корня могут только по , одновременно с попаданием на .
Давайте это всё нарисуем. В 4D нарисовать функцию от трёх переменных я не смогу, а в 3D это не то чтобы невозможно, но не очень иллюстративно, мало что понятно будет. Поэтому давайте нарисуем важные двумерные проекции.
Рассмотрим прямую , на которой собственно найденный контрпример. Кубика вырождается в , и при у неё три вещественных корня, дающих три прообраза:
При получаются в точности три точки из твита. А если слева, то два боковых прообраза улетают на бесконечность вдоль гиперболы .
При они возвращаются из бесконечности уже комплексными, и вещественный прообраз остаётся один:
Слева — -координаты вещественных прообразов точки как функции ; в точке отмечен слой из твита. Справа — те же прообразы на плоскости : неподвижный прообраз в нуле и два убегающих по гиперболе.
Фазовая диаграмма. В общем положении число вещественных прообразов диктуется знаком дискриминанта кубики. Дискриминант и результант пары считаются явно, и оба, с точностью до множителей , пропорциональны одному и тому же многочлену
Это совпадение следует из этальности (отсутствия критических точек): два прообраза не могут слиться в обычной точке, потому что в точке слияния якобиан обнулился бы, а он равен . Поэтому листы накрытия сталкиваются только на бесконечности, то есть на множестве, где .
Поверхность (вместе с плоскостью ) — это и есть стены: пересекая их, цель теряет или приобретает пару вещественных прообразов. Вот так это выглядит в проекциях и :
На картинке два плоских среза пространства целей : в красных областях у точки три вещественных прообраза, в синих — один. Звёздочка — это точка из твита: она лежит глубоко внутри трёхлистной области, никакой патологии в ней самой нет.
Обратите внимание на крестик на правой панели — это важная деталь. Отображение не сюръективно: у точки прообразов нет вообще, ни вещественных, ни комплексных (базис Грёбнера соответствующего идеала равен ).
Таких точек мало: они заметают рациональную кривую , , на которой все три корня кубики одновременно налетают на двойной корень . Кривая лежит на поверхности — на картинке крестик находится в точности на острие стены.
Кстати, именно непустота этого множества разрешает топологический “парадокс”: трёхлистных накрытий у односвязного не бывает, как же многочлен выкрутился? Вот так и выкрутился: — накрытие не над всем , там не хватает поверхности и плоскости . Объединение называется множеством Елонека отображения , т.е. множеством точек, в которых не является собственным. А у дополнения к гиперповерхности фундаментальная группа уже нетривиальна, и глобально пронумеровать прообразы — а значит, склеить из локальных обратных глобальное — невозможно. Так что никакого топологического парадокса тоже не возникает.
Что ещё опровергает этот пример
Контрпример в автоматически даёт контрпримеры во всех размерностях : достаточно приписать тождественные координаты, . Двумерный случай — исходный вопрос Келлера — остаётся открытым, и все положительные результаты (начиная с Moh, 1983), конечно, тоже всё ещё верны. Не исключено, что в размерности 2 гипотеза верна, и было бы даже красиво, если бы было так.
По цепочке эквивалентностей падают и некоторые соседи. Из гипотезы Диксмье для алгебры Вейля следует гипотеза о якобиане в размерности ; значит, гипотеза Диксмье неверна при : у алгебры Вейля есть эндоморфизм, не являющийся автоморфизмом (его можно попробовать выписать по нашему , но в чём смысл этого упражнения, для меня неясно). Для и — то есть в том числе для исходного вопроса Диксмье 1968 года — всё по-прежнему открыто, и аналогично обстоит дело с пуассоновской версией. А гипотеза Матье, из которой следовала гипотеза о якобиане, теперь опровергнута как общее утверждение.
Наконец, по редукции Басса–Коннелла–Райта–Ягжева мы теперь знаем, что в какой-то размерности существует контрпример вида с однородным кубическим ; найти его явно (и минимальную размерность) — ещё одна открытая задача. Как и вопрос о минимальной степени: в размерности 3 контрпример есть в степени 7, а степень 2 невозможна по теореме Вана; что происходит между — неизвестно.
Задача Смейла номер 16, таким образом, решена. Из восемнадцати задач списка это уже не первый случай, когда с ответом помогли компьютеры: например, в решении проблемы Смейла номер 14 (про аттрактор Лоренца) ключевую роль сыграло строгое computer-assisted доказательство. Но здесь, конечно, у LLM уже совсем другой уровень самостоятельности.
Как это было найдено, и что говорят люди
В отличие от истории с CDC, где OpenAI опубликовала препринт и полный промпт, здесь пока нет ни статьи, ни логов рассуждений, ни даже промпта — только твит, из которого мы знаем, что вопрос задал “друг Ахил” (по-видимому, Akhil Mathew). Левент Алпёге — серьёзный теоретико-числовик, ныне работающий в Anthropic. Если верить твиту, контрпример нашёл именно Claude Fable, хотя на промпт всё равно было бы интересно посмотреть.
Но, конечно, к истинности и важности результата всё это не имеет отношения. Проверка — минутное дело, и на GitHub уже лежит репозиторий jacobian-anatomy с проверками на sympy, Singular и PARI/GP и даже с сертификатом на Lean 4. MathWorld и Wikipedia обновились за сутки. Это, конечно, не то чтобы “новый ритм математики”, а свойство конкретного результата: когда проверка сводится к тому, чтобы подсчитать определитель , действительно не нужно долгое рецензирование.
А насчёт разных [по]следствий из этого яркого результата прямо сейчас могу дать только одну ссылку: Zihan Zhang начал выписывать разные следствия из найденного контрпримера. Думаю, этот список ещё не раз пополнится.
Кстати, этот пост тоже написан вместе с Claude Fable 5 — той самой моделью, которая нашла контрпример. В моём случае она независимо перепроверила все выкладки, посчитала базисы Грёбнера, на которые я ссылался, и нарисовала картинки выше. Предлагаю считать это не конфликтом интересов, а воспроизводимостью.
Заключение
Математика меняется. Три знаменитых открытых проблемы закрылись в последние пару месяцев. Опровержение, доказательство и снова опровержение; OpenAI, опять OpenAI и вот теперь Anthropic. Причём кажется, что это становится всё более обыденным: от “закрытой экспериментальной модели” мы перешли к обычному промпту для Fable.
В прошлый раз я писал, что решения такого сорта — это неожиданный поворот, найденный там, куда эксперты не смотрели. А здесь, похоже, другой случай, и в каком-то смысле более впечатляющий: конкретный объект, который прицельно искали многие лучшие специалисты на протяжении 87 лет, оказался многочленом седьмой степени от трёх переменных, который помещается в твит. Даже удивительно, что никакой более прямолинейный компьютерный перебор до этого на него не наткнулся.
Как именно Fable его нашёл, мы пока не знаем; надеюсь, статья с подробностями воспоследует, и будет не менее интересной, чем сам результат. А пока отмечу только, что мои слова из прошлого поста подтверждаются: “Если у вас есть любимая гипотеза, в которую вы верите, самое время написать про неё хороший промпт”.
Что дальше, коллеги?
Сергей Николенко
P.S. Прокомментировать и обсудить пост можно в канале «Sineкура»: присоединяйтесь!