Бальный зал наполняется гостями. Каждое появление нового человека — это запрос, и задача распорядителя танцев — найти подходящую пару. Можно свести двоих сразу, как только они окажутся недалеко друг от друга, и тогда пара сложится точно, но вдруг через минуту появится идеальный партнёр? Если же медлить, копится усталость ожидающих: кто-то начинает скучать, кто-то теряет терпение. Этот танец алгоритмических решений лежит в основе многих современных систем — от сервисов знакомств до распределения задач в облачных вычислениях.
Математическая модель этого бала называется Min-Cost Perfect Matching with Delay (MPMD). Пространство танцпола заменяют метрическим пространством — просто набором точек с известными расстояниями. Каждый новый запрос появляется в случайной точке, а распорядитель должен решить: соединить ли его с кем-то из уже ожидающих, заплатив цену, равную расстоянию между ними, или позволить подождать, накапливая штраф за задержку. Ключевой мерой успеха выступает конкурентный анализ (сравнение с идеальным решением задним числом), идею которого ввёл Джон фон Нейман для теории игр. Алгоритм соревнуется с воображаемым соперником, который знает будущее и всегда делает оптимальный выбор.
Но стоит изменить природу нетерпения — и бал преображается. Вместо того чтобы штраф рос пропорционально длине очереди (масштабная задержка), можно учесть индивидуальное недовольство, которое нарастает непропорционально долго: минута ожидания терпима, но вторая минута бесит гораздо сильнее. Такое поведение описывается выпуклой функцией (с ускоряющимся ростом), например, f(t)=$t^k$/k + t. Исследователи доказали: если в нуле производная этой функции положительна, т.е. даже в первый миг задержка причиняет осязаемую боль, то задача решается с константной эффективностью. Достаточно применить «нетерпеливый» алгоритм, который принудительно соединяет запросы, ждущие дольше порога 4δ.
Работа выявила неожиданный фазовый переход: малейшее изменение локального поведения функции в нуле переворачивает сложность задачи. Это напоминает динамическую систему, где одна невидимая пружинка меняет весь режим колебаний. Для масштабных задержек детерминированный коэффициент конкурентоспособности составляет O($2^n$) — экспоненциальный рост от размерности метрики, что всё же лучше прежней оценки через число запросов, которое могло быть сколь угодно большим. А рандомизированный алгоритм, словно распорядитель, подбрасывающий монетку, даёт O(n²). Контраст становится особенно ярким в выпуклом случае с положительной производной: 13·$2^{k+1}$((4δ)^{k-1}+1) — константа, не зависящая от числа гостей.
Бал продолжается. Каждый новый танец может стать точнее, если распорядитель усвоит урок: иногда лучше немного подождать, но не давать ожиданию превратиться в пытку. Эти математические танцы уже сегодня помогают проектировать логистические цепочки и облачные сервисы, а завтра, возможно, подскажут, как устраивать идеальные вечеринки — и не только.
При выпуклой задержке f(t)=t² ожидание в 2 минуты в 4 раза «дороже», чем минута, но если добавить к ней крошечную линейную добавку εt, задача из почти неразрешимой становится простой — вот что значит f'(0)>0!
Отсылка к фантастике: в сериале «Чёрное зеркало» (эпизод «Hang the DJ») система знакомств моделирует множество параллельных симуляций отношений, что перекликается с идеей многократного моделирования задержек и совпадений.