Алгоритмы для жизни: Простые способы принимать верные решения (Гриффитс, Кристиан) - страница 148

Даже мощный лабораторный компьютер и 36 часов обработки данных не позволили программе оценить и крошечной части возможных вариантов рассадки. Шансы на нахождение одного-единственного оптимального решения, которое получило бы максимальное количество очков, так и не появились. И тем не менее Беллоуз была довольна результатами компьютера. «Он выявил отношения, о которых я и забыла», – сказала Беллоуз, предложив удивительные безусловные возможности, которые даже в голову не пришли бы живым организаторам. Например, компьютер предложил убрать родителей из-за семейного стола и посадить их вместе со старыми друзьями, с которыми они давно не виделись. Рекомендация была просто находкой, по мнению всех сторон, хотя мать невесты все же не удержалась от нескольких манипуляций в ручном режиме.

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

Сложность оптимизации

Прежде чем вести страну через Гражданскую войну, до составления Манифеста об освобождении рабов и произнесения Геттисбергской речи, Авраам Линкольн работал адвокатом прерии в Спрингфилде, штат Иллинойс, и путешествовал по Восьмому судебному округу дважды в год на протяжении 16 лет. Служить окружным юристом действительно означало делать своеобразный круг – колесить по городам четырнадцати разных округов, проводя судебные разбирательства. Спланировать такую поездку представляло собой настоящую задачу: как посетить все нужные города, проехав как можно меньшее расстояние и не заезжая в один и тот же город дважды.

Это пример известной математикам и программистам задачи по оптимизации с заданными ограничениями: как найти единственный лучший вариант с рядом переменных при определенных заданных правилах и системе ведения счета. По сути, это самая известная задача по оптимизации из всех. Если бы ее изучали в XIX веке, она наверняка получила бы название «задача адвоката прерий», а если бы с ней впервые столкнулись в XX веке, то ее окрестили бы задачей по перемещениям беспилотника. Но, так же как и задача о секретаре, она появилась в середине XХ века под названием «задача о коммивояжере».