Это база: Зачем нужна математика в повседневной жизни - Йэн Стюарт
Как бы то ни было, та показательная чепуха, которая вдохновила меня на эту главу, берет свое начало в одной полезной книге для – как вы, наверное, уже догадались – коммивояжеров. Тех, что обходили дома и предлагали свой товар. Я еще помню их, даже если вы не помните. Они часто продавали пылесосы. Как любые разумные деловые люди, немецкие коммивояжеры в 1832 году (а в те времена все они, конечно, были мужчинами) очень трепетно относились к эффективности использования своего времени и снижению расходов. К счастью, помощь всегда была под рукой в виде руководства: «Коммивояжер. Каким ему следует быть и что ему следует делать, чтобы получать заказы и быть уверенным в успехе своего дела. Советы старого коммивояжера» (Der Handlungsreisende – wie er sein soll und was er zu thun hat, um Aufträge zu erhalten und eines glücklichen Erfolgs in seinen Geschäften gewiss zu sein – von einem alten Commis-Voyageur). Этот пожилой странствующий торговец указывал, что:
Бизнес приводит коммивояжера сегодня сюда, завтра туда, и ни про какие маршруты невозможно точно сказать, что они годятся для всех случаев. Однако иногда рациональная организация маршрута позволяет сэкономить столько времени, что полезно познакомиться с правилами его определения… Главная цель всегда состоит в том, чтобы посетить как можно больше мест, не возвращаясь в них второй раз.
Руководство не предлагало математических принципов решения этой задачи, а приводило примеры пяти предположительно оптимальных маршрутов по Германии (один из них проходил через территорию Швейцарии). Большинство маршрутов содержали подциклы, предусматривавшие посещение одних и тех же мест дважды, что вполне естественно, если вы останавливаетесь на ночь в гостинице, а днем объезжаете окрестности. Но в одном из маршрутов не было повторных визитов. Современное решение этой задачи показывает, что предложенный руководством ответ достаточно хорош, как видно на рисунке.
Маршрут (1285 км) по 45 немецким городам из руководства 1832 года, показанный сплошными (толстыми и тонкими) линиями. Сплошными толстыми и пунктирными линиями показан кратчайший маршрут (1248 км), найденный современными методами
Задача коммивояжера – а именно такое название она получила – стала первым фундаментальным примером математической области, известной сегодня как комбинаторная оптимизация, что означает «нахождение лучшего варианта среди множества возможностей, слишком большого, чтобы проверять их последовательно». Забавно, но название «задача коммивояжера» не использовалось явно ни в одной публикации на эту тему до 1984 года[4], хотя в неформальных дискуссиях математиков оно вовсю фигурировало и до этого.
Несмотря на свое приземленное практическое происхождение, задача коммивояжера завела математическое сообщество в реальные глубины, вплоть до одной из «задач тысячелетия» «P ≠ NP?», приз за решение которой размером $1 млн до сих пор ожидает своего получателя. В задаче спрашивается в строгой математической форме: если имеется задача, предполагаемый ответ на которую – догадка, если угодно, – может быть эффективно проверен, то может ли этот ответ быть эффективно найден во всех случаях? Большинство математиков и компьютерщиков считают, что ответ должен быть «нет»: безусловно, проверка любой конкретной догадки может быть проведена намного быстрее, чем поиск корректного ответа. В конце концов, если кто-то показывает вам собранный пазл из 500 элементов, то быстрого взгляда, как правило, хватает, чтобы понять, все ли правильно собрано, но собрать весь пазл с самого начала – совершенно другое дело. К несчастью, пазлы не дают нам ответа: это всего лишь удобная метафора, строго говоря, они не имеют отношения к вопросу. Так что сейчас никто не может ни доказать, ни опровергнуть предположение о том, что P отличается от NP, – именно поэтому решение вопроса принесет вам круглую сумму $1 млн{21}. Я вернусь к задаче P ≠ NP позже, а сначала рассмотрим первые успехи в решении задачи коммивояжера.
* * *
Время коммивояжеров давно прошло. В век интернета компании редко продают свой товар, отправляя путешествовать по городам и весям человека с чемоданом образцов. Они выставляют свои товары в Сети. Но, как обычно (все та же непостижимая эффективность), задача коммивояжера не устарела из-за этих изменений в культуре. Онлайн-продажи растут экспоненциально, потребность в эффективных способах определения маршрутов и графиков приобретает все большее значение для доставки всего, от посылок до пиццы и заказов в супермаркетах. Задачу коммивояжера можно было бы, наверное, переименовать в задачу курьера-доставщика: какой маршрут будет наилучшим для фургончика, доставляющего заказы?
И здесь на сцену выходит переносимость математики. Применение задачи коммивояжера не ограничивается поездками между городами или по улицам большого города. На стене нашей гостиной висит большой квадрат из черной ткани с вышитым на нем из блесток элегантным спиральным узором, основанным на знаменитых числах Фибоначчи. Дизайнер называет этот узор «блестками Фибоначчи». Изготовлен он был при помощи машины под управлением компьютера, способной вышить все что угодно размером вплоть до покрывала на большую кровать. Игла, делающая стежки, прикреплена к стержню, который перемещает ее в продольном направлении, а сам стержень может еще двигаться в поперечном направлении. Сочетание этих двух движений позволяет переместить иглу в любую точку. По чисто практическим причинам (потеря времени, лишняя нагрузка на машину, шум) никто не хочет, чтобы игла скакала туда-сюда по всему полотну, так что суммарное пройденное ею расстояние необходимо минимизировать. Получается задача, очень похожая на задачу коммивояжера. Родословная таких машин восходит к ранней компьютерной графике и к устройству, известному как плоттер, где перо двигалось примерно так же.
Аналогичных вопросов хватает и в естественных науках. Давным-давно видные астрономы имели собственные телескопы или пользовались ими совместно с несколькими коллегами. Эти телескопы можно было без труда направлять на новые небесные тела и таким образом импровизировать. Теперь все не так, ведь телескопы, которыми пользуются астрономы, громадны, невероятно дороги и доступ к ним осуществляется онлайн. Наведение телескопа на новый объект требует времени, а пока агрегат движется, вести наблюдения невозможно. Выстройте цели в неверном порядке, и зря потратите много времени на то, чтобы повернуть телескоп на большой угол, а потом обратно, если хотите наблюдать объект, расположенный рядом с начальной точкой. При секвенировании ДНК фрагментарные последовательности ДНК-оснований необходимо соединять в определенном порядке, и этот порядок нужно оптимизировать, чтобы избежать напрасных трат компьютерного времени.
Среди других применений можно назвать и эффективное прокладывание авиамаршрутов,