Author: Ареан Луис Фернандо  

Tags: математика  

ISBN: 978-5-9774-0682-6

Text
                    Мир
МАТЕМАТИКИ
43
Существуют
ли неразрешимые
проблемы?
Математика, сложность и вычисление
D^AGOSTINI

Мир математики
Мир математики Луис Фернандо Ареан Существуют ли неразрешимые проблемы? Математика, сложность и вычисление Москва - 2014 KAGOSTINI
УДК 51(0.062) ББК22.1 М63 М63 Мир математики: в 45 т. Т. 43: Луис Фернандо Ареан. Существуют ли неразрешимые проблемы? Математика, сложность и вычисление. / Пер. с исп. — М.: Де Агостини, 2014. — 144 с. Как измерить сложность проблемы? Существуют ли простые решения сложных про- блем? Эти и подобные вопросы лежат в основе теории сложности вычислений. От ответа на них зависят ее очевидные практические применения, такие, например, как криптогра- фия. Кроме того, теория проливает свет на глубокие математические и философские про- блемы, связанные с интеллектом и познанием. ISBN 978-5-9774-0682-6 ISBN 978-5-9774-0774-8 (т. 43) УДК 51(0.062) ББК22.1 © Luis Fernando Arean Alvarez, 2014 (текст) © RBA Coleccionables S.A., 2014 © ООО «Де Агостини», 2014 Иллюстрации предоставлены: Joan Pejoan; Luringen; Dibujo extraido del libro de Arthur Conan Doyle, Los bailarines; Littlejoe; TedColes; Antoine Taveneaux; Age-fotostock; Joe Mabel; Archivo RBA; Maria L; Jiri Janicek; Rama; Solundir. Все права защищены. Полное или частичное воспроизведение без разрешения издателя запрещено.
Содержание Предисловие.......................................................... 7 Глава 1. Как решить загадку.......................................... 9 Краткая история криптографии до Второй мировой войны.............. И Машина «Энигма» и польский криптоанализ.......................... 15 Алан Тьюринг и Блетчли-парк....................................... 25 Глава 2. «Это невычислимо, доктор Тьюринг»: введение в теорию автоматов .............................................. 33 Машины Тьюринга и вычислимость .................................. 40 Вычислимость, проблема остановки и проблема разрешения (Entscheidungsproblem) .......................................... 48 Глава 3. Выбрать лучший путь: теория алгоритмов..................... 55 Дети, постройтесь по росту....................................... 62 Следуя по маршрутам: алгоритмы и теория графов .................. 66 Классы сложности ................................................ 72 Глава 4. Проблема коммивояжера: отношение Р и NP.................... 77 Отношение Р и NP и полнота NP.................................... 82 Следствия из Р = АР.............................................. 89 Другие классы сложности: ЕХР и NEXP.............................. 91 Время и пространство............................................. 92 Глава 5. Взбираясь на восьмитысячник: попытки доказать, что Р Ф NP....................................................... 97 Техника диагонализации........................................... 98 Булевы цепи и нижние границы ..................................... 103 Другие пути: произвольность, интерактивные доказательства, арифметизация ................................................ 106 Глава 6. Последняя граница?........................................ 117 Средняя сложность, эвристики и PNP................................ 120 5
СОДЕРЖАНИЕ Квантовое вычисление и реальное вычисление................ 125 Выводы.................................................... 132 Будущее................................................... 137 Библиография................................................ 139 Алфавитный указатель ....................................... 141 6
Предисловие Не вызывает возражений утверждение, что существуют проблемы более сложные, чем остальные, в том числе такие, к которым невозможно подступиться. При этом на практике разница между неразрешимой проблемой и проблемой, решение кото- рой требует времени, превышающего срок жизни человека и даже Вселенной, не так уж велика. Существует класс внешне сложных проблем, точно оценить сложность которых мы не можем и не знаем, действительно ли они неразрешимы. Суть работы с такими проблемами в математике выражается высказыванием: действительно ли P=NP? Говоря ненаучным языком, Р представляет собой проблемы, которые решить легко, в то время как NP связано со сложными проблемами, решение которых без труда проверяемо. Вопрос «действительно ли P=NP?» на самом деле отража- ет желание найти способ решить даже самые сложные проблемы за разумное время. Проблемы и их алгоритмические решения изучает теория вычислений, в ней выделяется особая дисциплина, которая определяет эффективность алгоритма или класса алгоритмов для решения проблемы, — теория сложности вычислений. Именно ей мы посвятим эту книгу. Вначале мы раскроем вопросы теории вычислений, используя понятный всем пример — историю расшифровки кода знаменитой шифровальной машины «Эниг- ма». Этот пример позволит нам узнать о началах электронных вычислений и их тео- ретике Алане Тьюринге. Далее мы дадим определение базовому понятию теории вычислений, машинам Тьюринга, которые будут нашими инструментами для пони- мания секретов сложности. Мы рассмотрим несколько простых алгоритмов, которые позволят нам более формально подойти к идее асимптотических границ. Затем мы полностью погрузимся в центральные темы теории сложности вычислений, в част- ности подойдем к вопросу, действительно ли P=NP или, как думает большинство экспертов, это не так. Кроме того, мы исследуем способы доказать, что Р ¥= NP, и расскажем, почему эти попытки провалились. В завершение мы перейдем к неко- торым фундаментальным понятиям теории сложности, таким как машины Тьюринга с оракулом или булевы цепи. При этом мы коснемся довольно сложных тем — кван- тового вычисления, сложности алгоритма в среднем случае и РСР-теоремы, а также обсудим будущие направления исследований в теории сложности вычислений. 7

Глава 1 Как решить загадку Осень 1940 года. Битва за Францию выиграна. Немецкие войска сосредоточились на берегу Ла-Манша, от Кале до Шербура, в ожидании момента, чтобы атаковать с западного берега. Начинается блиц над британскими городами, во время кото- рого, пользуясь численным превосходством, воздушные силы Люфтваффе ведут масштабные бомбардировки. Но несмотря на все разрушения, настоящая война раз- горается в тысячах километров от Лондона, в Северной Атлантике. Именно там ре- шается судьба Великобритании. Островное расположение королевства, которое да- вало огромные преимущества в течение веков, может сыграть отрицательную роль. Поставки боеприпасов происходят в основном из Соединенных Штатов медлен- ным морским путем. Следуя давней стратегии Наполеона, Гитлер решил перерезать снабжение. В отличие от корсиканца, немцы располагают сильной армией, противо- стоящей Королевскому флоту: торговые суда страдают от беспощадных немецких лодок, которые месяц за месяцем топят сотни тонн грузов. Ситуация становится невыносимой. Немецкий подводный флот связывается со штабом в Берлине по беспроводному телеграфу. Чтобы эти сигналы не попали в руки врага, используется мощная система шифрования, с которой успешно справляется машина с запоминающимся названи- ем «Энигма». Ее разработчики уверены: шифр «Энигмы» настолько сложен, что не поддается расшифровке. Здесь и начинается наша история: группа блистатель- ных профессоров, сливки британской науки, полны решимости доказать, что вер- махт заблуждается. Блетчли-парк — поместье, каких много в Бэкингемшире. Оно расположено дале- ко от мест сражений, но связано с огромным количеством военных секретов. Именно здесь по инициативе адмирала Аластера Деннистона собралась группа математиков, филологов и других специалистов в различных областях, объединенных заданием разгадать немецкий шифр. В проекте участвовали известные ученые (их ласково называли боффинами), которые получили личное приглашение адмирала, а так- же криптографы, ветераны Первой мировой войны, такие как Альфред Диллвин 9
КАК РЕШИТЬ ЗАГАДКУ Нокс или Дилли Нокс, — один из тех, кто расшифровал знаменитую телеграмму Циммермана, и в результате этого Соединенные Штаты объявили в 1917 году войну Германии. Здесь находились и люди, успешно решившие специально составленный кроссворд в газете «Дейли телеграф» — их пригласили в редакцию на чаепитие, а после успешного прохождения ряда собеседований им предложили поучаствовать в амбициозном проекте. В своих мемуарах Черчилль сказал, что больше всего во время войны он боялся подводных лодок, он всячески скрывал роль Блетчли-парка в разгроме немецкой подводной флотилии, хотя устно признался Георгу VI в конце войны: «Если мы и победили, то только благодаря «У\ьтре» («Ультра» было кодовым названием опе- рации в Блетчли-парке). В то время как пилоты Королевского воздушного флота вызывали восхищение всего мира, молчаливый интеллектуальный героизм дешифровщиков Блетчли-парка держался в секрете во время войны и десятки лет после ее окончания. Однако, пере- фразируя другое известное выражение Черчилля, никогда в истории человечество не было обязано стольким такому небольшому количеству людей. Эта история, счи- тавшаяся совершенно секретной, получила известность в 70-х годах прошлого века, когда время чествования героев осталось далеко позади, а один из самых великих участников проекта, Алан Тьюринг, умер после несправедливого суда и позорных обвинений. Команде Тьюринга удалось расшифровать коды машины «Энигма» и вовремя узнать о планах подводного флота Германии. В результате этих усилий были спасе- ны тысячи жизней, а чаша весов во время битвы за Атлантику склонилась в пользу союзников. Кроме того, методы дешифровщиков предшествовали появлению пер- вых компьютеров, основанных на идеях, сформулированных самим Тьюрингом. Секретный код — это словно ключ от сейфа. Открыть замок может только тот, кто знает комбинацию или у кого есть ключ. Содержимое зашифрованных сообще- ний, как и сейфов, доступно только ограниченному кругу людей — на этом принци- пе и строится вся криптография, наука о шифровании сообщений: разрешить доступ одним и запретить его другим. Однако любой грабитель банков знает, что сейф можно открыть, если взлом- щик располагает достаточным количеством времени. Так что расшифровка кодов — это очень сложная, но разрешимая проблема. Разработчик-криптограф стремится максимально усложнить ее, сделать взлом кода невозможным в разумный период времени. Кратко рассмотрим попытки решить эту задачу, предшествовавшие по- явлению машины «Энигма». 10
КАК РЕШИТЬ ЗАГАДКУ Краткая история криптографии до Второй мировой войны Хотя криптография использовалась уже в Месопотамии и Египте, первые свиде- тельства о ней касаются инструмента под названием скитала (см. рисунок ниже), которым, согласно Аполлону Родосскому, пользовались спартанцы. Скитала состояла из полоски кожи или пергамента, которую плотно наматывали в форме спирали на палочку, следя за тем, чтобы каждый виток прилегал к преды- дущему. Далее отправитель зашифрованного текста писал свое сообщение вдоль палочки так, чтобы каждая следующая буква располагалась на следующем витке. Если бы на нашей скитале на каждом витке помещалось три буквы, получилось бы следующее. А т А К У й Т Е Н А Р А С С В Е т Е Развернув полоску, буквы нельзя прочитать последовательно, и в результате по- лучается бессмыслица: АТСТЕСАНВКАЕУРТЙАЕ. Эта бессмыслица называется зашифрованным текстом. Расшифровывается он наматыванием полоски на палочку тех же размеров, что и исходная. Конечно, это довольно примитивный метод шифрования, известный как шифр транспозиции, 11
КАК РЕШИТЬ ЗАГАДКУ в котором буквы исходного сообщения остаются теми же, но меняется их поря- док — это очень похоже на анаграммы, которые печатают в развлекательных ру- бриках в газетах или используют в некоторых тестах на смекалку. Наука расшифровки сообщений известна как криптоанализ. Существуют раз- личные его методы, наиболее простой — метод грубой силы, или полный перебор. Этот метод предусматривает рассмотрение всех возможностей, пока не получится сообщение, имеющее смысл. Например, в случае со скиталой мы знаем, что сосед- ние буквы сообщения разделены всегда одним и тем же количеством символов, за- данным длиной палочки, поэтому мы сначала попробовали бы читать буквы через одну, затем — через две и так далее. В нашем зашифрованном тексте транспозиция равна трем, так что если мы будем читать буквы через две, то получим исходный текст. Естественно, существуют гораздо более сложные шифры транспозиции, для которых метод прямого перебора не работает, поскольку при достаточно сложном способе шифрования и большой длине сообщения для его расшифровки требует- ся слишком много времени. Представим себе самый наивный метод расшифровки прямым перебором: сделаем все возможные перестановки букв в зашифрованном О тексте. Возьмем зашифрованный текст, состоящий из трех букв: ИРО. Для него возможны следующие перестановки (не считая исходную): ЙОР, ОЙР, ОРЙ, РОЙ, РЙО. о Итого пять плюс исходная. Одна из них — РОИ, единственное слово, имею- щее в русском языке смысл. Число перестановок легко вычислимо. Первая бук- ва может занимать одно из трех положений. Вторая — одно из двух оставшихся. Последняя — только одно. Следовательно, число перестановок (включая исход- ную) равно: 3-21 = 6. Это число известно как три факториал, или 3! Факториалы растут с огромной скоростью: 4! = 4-3! = 24 5! = 5-4! = 120 10! = 10 -9! = 3 628 800. 12
КАК РЕШИТЬ ЗАГАДКУ 100! — это приблизительно один со 158 нулями. Это число практически в гугол (1О100) раз больше, чем возраст Вселенной, измеряемой в наименьших единицах, имеющих физический смысл, — планковском времени. Ясно, что этот подход для сообщения длиной в сто символов неприменим: для анализа всех возможностей ну- жен компьютер немыслимой мощности. Другой тип шифра — шифр подстановки, в котором порядок букв сохраня- ется, но каждая буква заменяется на другую. Подобное шифрование использовал Юлий Цезарь, и оно с тех пор называется шифром Цезаря. Состоит шифр в замене каждой буквы той, которая следует в алфавите через три позиции после нее. Так, А заменяется на Г, Б на Д и так далее, а дойдя до конца, мы переходим к началу ал- фавита, то есть Я становится В. Буква в зашифрованном тексте, заменяющая букву в исходном сообщении, называется буквой подстановки. Это также довольно про- стой метод. В шифре Цезаря наш текст выглядел бы следующим образом: ГХГНЦМХЗРГУГФФЕЗХЗ. Как видите, шифр Цезаря — это всего лишь постоянное смещение. Поскольку в русском языке возможно всего 33 смещения, нам для расшифровки необходимо рассмотреть всего 33 разных текста — это очень просто. Однако не все шифры подстановки отличаются такой же простотой. Предположим, что есть другой шифр, например шифр, в котором мы выберем соответствие между буквами с помощью техники, известной нашему корреспонденту. Например, мы можем найти первую букву на первой странице романа о Гарри Поттере конкретного издания и сказать, что ею мы будем заменять А; вторая буква на второй странице — вместо Б, и так далее. Криптоанализ заключался бы в том, чтобы заменить каждую букву зашифрован- ного текста другой буквой алфавита. Если предположить, что в алфавите 27 букв, существует (27! — 1) способов заменить букву (это снова перестановки, но теперь между буквами алфавита). Результат — единица с 28 нулями. Это, конечно, не так впечатляет, как число, полученное в шифре транспозиции, но все же это довольно много. Компьютер, который может выполнять около ста тысяч миллионов инструк- ций в секунду, начавший анализ в момент появления жизни на Земле, как раз под- ходил бы к его завершению. 13
КАК РЕШИТЬ ЗАГАДКУ К счастью, для решения проблемы можно использовать и другие методы, такие как частотный анализ. Ни в одном языке буквы не имеют одинаковую частот- ность — это знает любой игрок в скрабл. В русском языке чаще всего встречается буква О, ее частотность составляет 10,98% , затем идет Е — 8,48%. В англий- ском языке самая употребительная буква — Е. О том, как можно использовать эти данные, нам расскажет Шерлок Холмс. В одном из рассказов о его приключениях появляются любопытные пляшущие человечки: В конце концов, Холмсу удается расшифровать их: «Первая записка была так коротка, что дала мне возможность сделать всего одно правдоподобное предположение, оказавшееся впоследствии правильным: символ X соответствует букве Е. Как вам известно, буква Е — самая употребительная в ан- глийском алфавите, и мы можем быть уверены в том, что даже в очень корот- ких фразах она будет появляться чаще, чем остальные. Из пятнадцати символов, составлявших первое сообщение, четыре были одинаковыми, так что можно было предположить, что они обозначают букву Е». Холмс применяет этот метод к первым двум буквам. Далее анализ становится сложнее, и детектив вынужден прибегнуть к таким методам, как догадка о том, что одно из слов — «никогда», исходя из контекста. Этот метод называется эвристи- кой, он не гарантирует результатов, но легко осуществим и часто намного эффек- тивнее, чем метод прямого перебора. Не все методы одинаковы: одни эффективнее других, и в этом основная суть теории сложности и анализа алгоритмов. В криптоанализе наиболее мощные шифры обычно не поддаются простым методам, а требуют комбинирования множества методов и подходов. Поэтому в Блетчли-парке, кроме математиков, таких как Алан Тьюринг, работали также филологи и обычные любители головоломок. Очевидно, что у сообщений «Энигмы» был военный лексикон, и это предположение в значительной мере позволило раз- гадать шифр. 14
КАК РЕШИТЬ ЗАГАДКУ Анализ Холмса продолжался до тех пор, пока он не дошел, как в игре в «Поле чудес», до фразы: ИЛСИ ГО. ОВЬСЯ К С. ЕР. и. На этом этапе любому человеку было бы очень просто дополнить фразу: идеи, ГОТОВЬСЯ К СМЕРТИ. Это явная угроза. Основываясь на этом и других элементах сообщений, Холмс пришел к некоторым предположениям о личности преступника и сам написал не- сколько зашифрованных сообщений для его поимки. Чтобы защититься от атаки частотным анализом, в эпоху Возрождения на ос- нове шифра подстановки был придуман полиалфавитный шифр. Его создателем был великий гуманист Деон Баттиста Альберти (1404—1472). Суть метода состо- яла в циклическом применении нескольких моноалфавитных шифров к шифруемому тексту. Например, при появлении в первый раз буква А заменяется на D, а во вто- рой раз — на Q. В результате, поскольку две буквы в зашифрованном сообщении на самом деле — одна и та же, частотный анализ оказывается невозможным. После эпохи Возрождения появилось много полиалфавитных шифров, одним из примеров которых является шрифт, популяризованный Блезом де Виженером (1523—1596). Он был представлен в 1586 году Генриху III Французскому, и в нем использовалась таблица для выбора буквы подстановки из 26 разных вариантов. В XIX веке великий предшественник компьютерного вычисления Чарльз Бэббидж (1791—1871) посвятил часть исследований криптоанализу. Несколькими годами позже прусский офицер Фридрих Вильгельм Касиски (1805—1881) дока- зал, что шифр Виженера, который считали неуязвимым, поддается расшифровке. Машина «Энигма» и польский криптоанализ В «Энигме» использовался полиалфавитный шифр подстановки. Машина представ- ляла собой электромеханическое устройство, похожее на печатную машинку. Над ее клавиатурой находилась подсвеченная панель с буквами и тремя большими вращаю- щимися дисками — роторами (см. рисунок на следующей странице). 15
КАК РЕШИТЬ ЗАГАДКУ Роторы Клавиатура По краю диска каждого ротора были написаны буквы алфавита. Оператор кру- тил ротор, пока в предусмотренном для этого окошке не появлялась необходимая буква. Каждый ротор был оснащен двумя группами контактов с каждой стороны, они были связаны между собой особым образом, зависящим от типа ротора и до- статочно сложным. Ротор Ротор Ротор 1 2 3 Пример связи между тремя роторами. 16
КАК РЕШИТЬ ЗАГАДКУ Так как порядок роторов периодически менялся, а кольцо на роторе можно было передвинуть, изменив положение букв относительно контактов, было невозможно определить цепь, по которой пойдет электрический ток, если только не наблюдать этого своими глазами. В начале войны в машине использовалось пять роторов, ко- торые можно было вставить в любом порядке. Шифр зависел от связи между рото- рами и их положения. На передней поверхности «Энигмы» находилась коммутационная панель, на- поминающая оборудование телефонной станции, с входом для каждой буквы (по- немецки — штекером). При подключении кабеля подстановка усложнялась; если обычно А менялась на Q, то при соединении Q с F «Энигма» заменяла А на F. Замкнутая цепь при нажатии на клавишу Как видно на рисунке, клавиши представляли собой электрические контакты, ко- торые замыкали цепь при нажатии, так что ток шел через батарею к подсвечиваемой клавиатуре. При этом он мог проходить через внешний кабель (если использовалась 17
КАК РЕШИТЬ ЗАГАДКУ коммутационная панель), затем через три ротора к рефлектору, затем обратно раз- ными путями через три ротора, и, наконец, когда цепь замыкалась, загоралась лам- па буквы подстановки, указывая оператору, какая буква вместо исходной будет ис- пользоваться в шифре. Кроме того, каждый раз при нажатии на клавишу ротор двигался на один шаг впе- ред. Это предполагало смену цепи, так что когда эта же буква встречалась повторно, ей соответствовала уже другая буква подстановки, и шифр превращался в полиал- фавитный. Когда ротор совершал полный оборот, на шаг вперед двигался следую- щий ротор. В результате исходная конфигурация роторов повторялась только через 263 = 17 5 76 знаков. Обычно сообщения были короткими, поэтому предполагалось, что в течение одного дня конфигурация не повторится. Коды к машине менялись ежедневно в соответствии со специальными книгами кодов, которые были во всех подразделениях. Подобная сложность делала частотный анализ невозможным. Роторы «Энигмы». Виден номер ротора, выгравированный на диске, и контакты первого ротора, справа. Также на переднем плане видны лампы. Работала машина следующим образом. В начале дня оператор искал в своей кни- ге кодов код на этот день. Код включал нужный порядок трех роторов, начальное положение букв роторов, связи штекера на коммутационной панели и, наконец, 18
КАК РЕШИТЬ ЗАГАДКУ трехбуквенный ключ, который подбирали, вращая роторы, пока ключ не появится в окошках. При угрозе попасть в руки противника книга кодов подлежала немед- ленному уничтожению. Далее оператор набирал трехбуквенный ключ, который он сам придумал, на- пример GUJ. При каждом нажатии загоралась лампа, и оператор записывал бук- ву, соответствующую лампе. Ключ повторялся два раза, чтобы избежать ошибок: GUJGUJ. Допустим, в какой-то конкретный день «Энигма» шифровала его как EIBPQW (вспомним, что когда буква встречается во второй раз, она заменяется новой буквой подстановки). Эту комбинацию из шести букв криптоаналитики на- звали индикатором сообщения. Затем роторы устанавливали в соответствии с выбранным ключом (GUJ) и пе- реходили к печати полного сообщения. Информация передавалась по беспроводно- му телеграфу, и британцы ее успешно перехватывали. Получатель совершал процесс расшифровки в обратном порядке. Для этого он после получения сообщения рас- шифровывал индикатор, устанавливал роторы в соответствии с расшифрованным ключом (GUJ) и печатал зашифрованный текст. При этом он следил за загораю- щимися лампами и тут же записывал их. Как видите, «Энигма» была симметричной шифровальной машиной: один и тот же ключ и один и тот же процесс позволяли и зашифровать, и расшифровать сообщение. Процесс шифровки и расшифровки текста с помощью «Энигмы» — это при- мер алгоритма: оператор должен четко следовать определенным инструкциям. Единственный момент, когда он должен думать, — это при создании ключа из трех букв. Алгоритм требует не изобретательности, а всего лишь выполнения инструк- ций. Оператору даже не нужно понимать, почему он делает то, что делает. Работа по алгоритму идет быстро и эффективно: сообщение может быть зашифровано или расшифровано за несколько минут. Другой пример алгоритма — правило умножения. Суть его состоит в выпол- нении простых, четко определенных шагов для получения нужных результатов. Поскольку алгоритм записан на ограниченном пространстве носителя, серия шагов также конечна. Алгоритм умножения предполагает последовательное выполнение шагов (напри- мер, вспоминаем, сколько будет 2 • 3 и пишем 6). Он также требует выполнения условий (закончили ли мы со всеми цифрами множимого? — при положительном 19
КАК РЕШИТЬ ЗАГАДКУ ответе переходим к следующей цифре множителя), и требует столько повторений, сколько цифр у множимого. Каким бы невероятным это ни казалось, но эти ин- струкции охватывают всю сложность любого алгоритма. Мир полон алгоритмов, причем не только математических: любой конечный на- бор четких инструкций является алгоритмом. Алгоритмы — это и китайская гимна- стика тайцзи с ее элегантными движениями, и описание для сборки шведской мебе- ли, и руководство для постройки макета «Катти Сарк», и любой кулинарный рецепт, и даже сложные инструкции для постройки шаттла. Очевидно, что многие проблемы можно решить с помощью различных алгорит- мов. Например, в умножении мы могли бы воспользоваться методом отбрасывания девяток или индийским алгоритмом, который в Европе ввел Фибоначчи. Есть люди, которые умножают, пользуясь продвинутыми математическими методами. Одной из самых важных задач компьютерного вычисления как раз является поиск наиболее эффективного алгоритма для решения проблемы. Но вернемся к криптографии. Человеку, шифрующему сообщение, нужны алго- ритмы для шифровки и расшифровки, эффективные при известном ключе и устой- чивые перед атаками криптоанализа. В идеале человеку, не знающему кода, для рас- шифровки сообщений должна потребоваться целая вечность, ну а если периодически менять ключи, то все достижения врага будут тут же устаревать. Криптоаналитикам, в свою очередь, необходимо взломать защиту, используя для этого кратчайший путь. Эта комбинация сложности и простоты является ключевой для понимания того, что мы называем проблемами NP. Проще говоря, проблему NP сложно решить, но как только решение найдено, мы понимаем, что оно очевидно. Точно так же, если нам дадут ключ, то мы сможем расшифровать сообщение, но без ключа сделать это будет очень сложно. АЛГОРИТМЫ ВЕЗДЕ Мы научились видеть алгоритмы в процессах, об алгоритмичности которых и не подозревали: в колебательных химических реакциях, таких как реакция Белоусова - Жаботинского (что любо- пытно, она была предсказана Тьюрингом), в синтезе матричной РНК на основе ДНК и так далее. 20
КАК РЕШИТЬ ЗАГАДКУ Высшее немецкое командование очень сильно полагалось на «Энигму». Даже в конце войны оно так и не смогло поверить в то, что союзникам удалось расшифро- вать ее коды. С другой стороны, и союзники не слишком афишировали свои успехи. Каким образом группе из Блетчли-парка удался их подвиг — это захватывающая история, которую мы здесь едва коснемся. Эту историю можно читать как пре- красный шпионский роман, в котором есть и интрига, и двойной агент, и героизм, и огромный талант. Об «Энигме» союзники знали еще до войны: англичане приобрели ее коммер- ческую версию и тщательно проанализировали. Британский криптоаналитик Хью Фосс (1902—1971) вывел базовый механизм атаки на «Энигму», основываясь на предполагаемом достаточно длинном сообщении, содержащем известный текст, называемый по-английски crib (на русский это слово можно перевести как шпар- галка). Дешифровщики практически повторили шаги Шерлока Холмса, но стро- го алгоритмически, почти не прибегая к методам эвристики. Фосс установил, что по шпаргалке из 15 знаков можно определить положение правого ротора, а по шпар- галке из 180 знаков — положение первых двух роторов. Фосс пришел к выводу, что расшифровать код «Энигмы» слишком сложно, и Великобритания на какое-то время оставила эти попытки. В конце 1931 года на связь с французами вышел двойной немецкий агент, чтобы продать им секреты «Энигмы» — описание ее работы и некоторые книги кодов. Франция поделилась информацией с британцами и поляками. Британцы, правда, были разочарованы тем, что шпион не предоставил им самое необходимое — описа- ние коммутации роторов. Поскольку изначально машина была пятироторной и рас- полагаться диски могли в любом порядке, незнание описания их сопряжений порож- дало 10114 возможных конфигураций, а это намного больше, чем общее число атомов в обозримой Вселенной, которое оценивают примерно в 1080. Зная расположение кабелей, число конфигураций можно было сократить до 1023: тоже довольно много, но хотя бы приближается к числу атомов азота и водорода, содержащихся в десяти литровых бутылках. Поляки на основании полученных данных решили опробовать абсолютно новый криптоаналитический подход. До тех пор криптография была практически исключи- тельно предметом интереса лингвистов, но глава польских криптографов понял, что для расшифровки потребуются математики. Он обратился в Познанский универси- тет и связался с молодыми студентами-математиками. После строжайшего экзамена все трое, кто его сдал, были сразу приняты на работу: это были Мариан Реевский 21
КАК РЕШИТЬ ЗАГАДКУ (1905—1980), Ежи Ружицкий (1909—1942) и Генрих Зыгальский (1908—1978). Все трое знали немецкий язык, потому что Познань до конца Первой мировой вой- ны входила в состав Пруссии. Зная, что индикатор — это повторение ключа из шести букв, Реевский решил, что можно определить коммутацию кабелей ротора, проанализировав связь между первой и четвертой буквой сообщения, второй и пятой, третьей и шестой. Кроме того, ни ключи из книг, ни роторы в течение дня не менялись, так что Реевский мог искать модели, согласно теории перестановок, в шести первых знаках сообщений за один и тот же день. ПЕРЕСТАНОВКИ Любую перестановку можно записать как произведение непересекаюшихся циклов (не содер- жащих общих элементов). Возьмем перестановку: ( 1 234567890^ ЯД 9378104256 / Начав с первой позиции, мы видим, что 1 переходит в 9,9 в 5 и так далее. Запишем это так: 1 -> 9 -> 5 -> 1. Это цикл, поскольку он начинается и заканчивается 1. Теперь возьмем число, которого нет в первом цикле (2). Получим, что2->3-»7-»4->8->2. Наконец, 6 -» 0 -> 6. Этим циклом мы завершаем перестановку, которую можем записать как: л=(1,9, 5)(2,3, 7, 4,8)(6,0). Циклы могут быть разного размера. Они могут содержать только один элемент (число, кото- рое не меняет свою позицию) или все элементы перестановки (если мы проходим все числа за один раз). При любой подстановке буквы меняются местами. По существу, это запись алфавита в другом порядке. В «Энигме» все буквы менялись местами, поскольку машина никогда не заменяла одну букву самой собой. Можно доказать, что любая перестановка — это набор циклов. Циклы могут быть разной длины, но в случае с «Энигмой» не может быть циклов длиной, равной одному символу (это означа- ло бы, что буква не меняется), и длиной, большей 13, то есть половины алфавита, поскольку в «Энигме» использовался симметричный код. Циклы — это модели, 22
КАК РЕШИТЬ ЗАГАДКУ которые определил Реевский. Если мы найдем все буквы в одном из циклов, то по- лучим полную перестановку. За один день перехватывалось около 80 сообщений, а поскольку циклы в течение дня не менялись, высока была вероятность найти сре- ди первых шести позиций все буквы алфавита. Реевский нашел три перестановки, одну для каждой буквы ключа, и понял, что число циклов в каждой перестановке всегда одно и то же, и оно зависит не от изменения в коммутации, а только от вза- имного расположения роторов. Это наблюдение позволило значительно облегчить задачу, поскольку сейчас надо было сосредоточиться только на роторах, что сокра- щало число возможных конфигураций с 1023 до 105 456, то есть произведение всех возможных положений трех роторов (263 = 17 576) и числа перестановок роторов местами (6). Затем было достаточно решить систему из шести уравнений с шестью неизвест- ными (одно для каждой буквы ключа) и, опираясь на предположение, что операто- ры в силу своей лени часто набирали один и тот же код (возможно, инициалы неве- сты), повторяли три раза одну и ту же букву или использовали буквы, находящиеся рядом на клавиатуре, Реевский определил связи кабелей в роторах. А поскольку коммутация на передней панели в 30-е годы использовалась относительно редко, он начал расшифровывать сообщения. Все шло хорошо, однако начиная с сентября 1938 года немцы изменили подход. Теперь оператор посылал в начале сообщения три новых знака, не расшифровывая их: ТХО DKGQAF. Три первые буквы описывали начальное положение роторов; шесть остальных были обычным индикатором. Эта пометка о начальной позиции в каждом сообще- нии делала невозможным получение 80 сообщений в день с одними и теми же на- чальными буквами. Поляки приняли вызов. Они начали искать конфигурации, невозможные для «Энигмы», то есть такие комбинации трех роторов, которые не могли встретиться в действительности, — для этого достаточно было найти повторение в индикаторе одной и той же буквы: RTY ADKATO ZVU WPMAPS. Появление и частота этих повторений зависели не от коммутации штекеров, а только от начальных положений роторов и их порядка. Действительно важным 23
КАК РЕШИТЬ ЗАГАДКУ было наблюдение, что только некоторые конфигурации роторов порождают по- вторения. Поляки заметили, что они наблюдаются в 40 % конфигураций. Из 13 разных сообщений, полученных в один и тот же день, повторения появляются 105 456 • (40 %)13 = 0,7 раза; то есть очень вероятно, что возможны только одна или две конфигурации, которые породят эти 13 сообщений. С другой стороны, веро- ятность повторения в сообщении составляла около И %. Должно было потребовать- ся около ста сообщений, чтобы рассчитывать на 13 необходимых. В первом методе атаки применялись листы, похожие на перфокарты, использо- вавшиеся в первых компьютерах (листы Зыгальского), их было разработано 156. На листах записывали возможные комбинации и перфорировали повторы — это был трудоемкий ручной процесс. Второй метод атаки был автоматизированным. Реевский построил машину с шестью роторными установками. Каждая установка анализировала 17 576 ключей, возможных для каждого положения роторов, для всех шести возможных положений одновременно. Найдя конфигурацию, в которой повторение было возможным, установка останавливалась. Трехкратное повторение процесса позволяло получить от пяти до семи возможных ключей, а затем проана- лизировать их вручную. Процесс длился примерно два часа. Установки получили название бомбы. Бомбы не учитывали коммутацию штекеров, в связи с чем су- ществовала возможность ошибки найденного ключа. Однако поскольку в те годы панель коммутации в «Энигме» практически не использовалась, вероятность того, что все три буквы ключа угаданы верно, была достаточно высокой. Задумаемся об огромной важности этого шага: перед нами первое использование электромеха- нического устройства для систематической атаки на шифр. Благодаря шести бомбам полякам удалось расшифровать до 75 % перехваченных сообщений. Однако главной слабостью метода был используемый в нем прямой перебор, рас- сматривающий все возможные ключи. Его эффективность резко падает с услож- нением проблемы — это явление известно как комбинаторный взрыв. И именно такой взрыв произошел всего через пару месяцев после успеха поляков. В машину Реевского можно было установить только три ротора, а немцы добавили в «Энигму» еще два диска, в связи с чем их общее число выросло до пяти, из которых выбира- ли три. Перед поляками встала задача не просто расшифровать еще два варианта связей — проблема была гораздо сложнее. Вместо того чтобы, как раньше, анали- зировать перестановки, возможное количество которых было равно 3! = 3 • 2 • 1 = = 6, криптоаналитикам нужно было выбрать три элемента из пяти и поставить их 24
КАК РЕШИТЬ ЗАГАДКУ в определенном порядке. Первый ротор можно было выбрать пятью разными спо- собами, второй — четырьмя, третий — тремя. Следовательно: 5-4-3 = 60. Как видите, проблема усложнилась десятикратно — с 6 до 60. Нужно было построить еще 54 бомбы и создать еще 1404 листа Зыгальского. При этом крипто- аналитикам было запрещено информировать о своем прогрессе союзников. Ситуация сохранялась до июля 1939 года, когда начало войны было уже неизбежным, и по- ляки наконец поделились своими наработками с англичанами и французами. Через некоторое время Польша была завоевана, и криптоаналитики едва успели бежать из страны. Они обосновались в Париже, откуда им также пришлось бежать после падения Франции. Ученых ждал Блетчли-парк. КАК ВЫГЛЯДИТ QWERTZU? Одна из причин, по которой англичане так мало продвинулись в попытке расшифровать кабель- ные связи роторов, состояла в том, что они не знали, как была связана клавиатура с роторами. Клавиатура старых машин «Энигма» была немецкой - QWERTZU, так же Нокс назвал кабельную связь. Q вела к первому контакту соединения, W - ко второму, и так далее. Но шифровальная машина, созданная для военных целей, отличалась: в ней было 4 1026 возможных кабельных связей. Когда поляки начали работу, первый вопрос Дилли Нокса звучал так: как выглядит QWERTZU? Реевский ответил, что это алфавитный порядок. А шла к первому контакту, В - ко вто- рому. Он предположил это, подумав о том, что немцы любят порядок, так что настоящий не- мец выбрал бы алфавитное соответствие. Нокс побледнел. Как он мог это упустить? Лучшие умы Блетчли-парка, Тьюринг, он сам... - никто до этого не додумался. Но вскоре его досада сменилась радостью, и Нокс возвращался с собрания, напевая: Nous avons la QWERTZU, nous marchons ensemble («У нас есть QWERTZU, мы идем вместе»). Алан Тьюринг и Блетчли-парк Алан Тьюринг начал заниматься криптографией случайно, в сентябре 1938 года. Нокс представлял старую криптографическую школу, но он понял, что для расшиф- ровки «Энигмы» нужна математика. На следующий день после того, как Соединен- 25
КАК РЕШИТЬ ЗАГАДКУ ное Королевство объявило войну Германии, 4 сентября 1939 года, Тьюринг напра- вился в Блетчли-парк, чтобы остаться там вместе с остальными членами «охотни- чьей компании капитана Ридли» — так называли группу мужчин среднего возраста и молодых женщин (последним дали прозвище debs — сокращенно от «дебютантки в обществе»). Эта охотничья компания работала в поместье с июня 1939 года. Тьюринг не был сторонником польской методики, которая становилась бес- сильной каждый раз, когда немцы меняли рабочий процесс. Так и произошло в мае 1940 года, на заре битвы за Францию, когда немцы перестали повторять в сообще- ниях ключ и индикатор и пересылали его один раз в сутки. Польские методы утра- тили эффективность. К счастью, кабельные связи роторов остались прежними, по- этому наработки Реевского все еще можно было использовать. Однако Тьюринг был убежден в том, что «Энигму» может разгромить алго- ритмический подход, основанный на электромеханических машинах, в сочетании с анализом шпаргалок. Приехав в Блетчли-парк, он начал работать над своим изо- бретением, которое также назвал bombe. Первая bombe начала работать в марте 1940 года. Это устройство было создано на основе польских бомб, но, в отличие от них, работало не с индикатором, а со шпаргалками. Найти шпаргалки было почти искусством, которое требовало таланта и умения предполагать содержание сообщений. Поскольку все они касались военных дей- ствий и в большинстве случаев повторялись изо дня в день, в них часто встречалась фраза Keine besondere Ereignisse, то есть «без перемен». Также сообщения содержа- ли метеорологическую информацию: Wetter fuer die Nacht («погода на эту ночь»), а каждый день последним передавалось сообщение: Feuer brannten wie befohlen («сигнальные фонари зажжены согласно указаниям»). Как только группа «шпаргалочников» натыкалась на возможную шпаргалку, она передавала ее группе криптоаналитиков. Предположим, что шпаргалка звучит как Wetter fuer. Зашифрованный текст представлен ниже (X обозначает пробел). 1 2 3 4 5 6 7 8 9 10 11 W Е т т Е R X F и Е R F Z X Е 1 К Р О Т Z А 26
КАК РЕШИТЬ ЗАГАДКУ Криптоаналитик перемещал бы зашифрованный текст, пока не нашел бы совпа- дение со шпаргалкой — букву, которая была бы одинаковой и для известного тек- ста, и для зашифрованного. Это произойдет, если сместить текст на две позиции. 1 2 3 4 5 6 7 8 9 10 11 W Е т Т Е R X F и Е R F Z X Е 1 К Р 0 т Z А Но мы помним, что «Энигма» не шифровала букву самой собой, так что это со- ответствие между зашифрованным текстом и шпаргалкой невозможно — мы его отбрасываем. То, что казалось преимуществом «Энигмы», благодаря Тьюрингу превратилось в ее уязвимость, которая позволяла отбросить множество возможных вариантов шифра. Задняя панель, - без барабанов, на которой видны контакты Самый _ быстрый барабан Средний — барабан Самый — медленный барабан Наборы — ~ барабанов ВотЬе Тьюринга, вид спереди. 27
КАК РЕШИТЬ ЗАГАДКУ И тут в работу вступала bombe. Ее барабаны работали параллельно, воспроизво- дя движения роторов «Энигмы». Каждый барабан соответствовал одному ротору. В начале 1940 года было пять типов роторов в соответствии с их внутренними прин- ципами коммутации, и каждый барабан соответствовал одному из этих пяти типов. Барабаны хранились по три, имитируя «Энигму» с тремя роторами, а всего bombe располагала 36 наборами, часть из них была связана друг с другом согласно меню, то есть графическому представлению подобранной пары между шпаргалкой и за- шифрованным текстом. Эта связь происходила на задней панели машины, на ко- торой размещалось 26 входных и выходных гнезд на набор, по одному для каждой буквы (это упрощенное описание машины). -Быстрый барабан— —Средний барабан — [-Медленный барабан Рефлектор Пример внутренних кабельных связей в наборе барабанов. Предположим, что у нас есть следующие пары. Положение 1 2 3 4 5 6 7 8 9 10 11 12 Шпаргалка А Т т А С К А Т D А W N Зашифрованный текст W S N Р N L К L S Т с S Каждому положению назначается набор барабанов, связанный с другими на- борами согласно меню на рисунке на следующей странице. Пронумерованные 28
КАК РЕШИТЬ ЗАГАДКУ квадратики на диаграмме представляют позицию, которая связывает букву шпар- галки с буквой зашифрованного текста; это положение соответствует набору. Bombe работает одновременно со всеми буквами пары. Барабаны вращаются синхронно и пробуют, одно за другим, 17 576 возможных положений трех барабанов, установ- ленных в определенном порядке, пытаясь определить положение соответствующее трехбуквенному ключу «Энигмы». При начальной скорости 120 об/мин для само- го медленного барабана bombe могла проанализировать все конфигурации за пару часов. Обратим внимание на меню. Там есть три петли — три превращения для букв, например N, Т и S. Эти петли были ключевыми для определения невозможных конфигураций. Мы видим противоречие: буква А превращается в букву W, но W не превращается в А, нарушая симметрию «Энигмы». Обнаружив это противоре- чие, машина отбрасывает его и движется дальше. Остановится она, только найдя непротиворечивую конфигурацию. Тьюринг вычислил, что при наличии шпаргалки 29
КАК РЕШИТЬ ЗАГАДКУ БАНБУРИЗМУС, ТЬЮРИНГИЗМУС И ДРУГИЕ «ИЗМУСЫ» Вклад Тьюринга не закончился на машине bombe. Ученый изобрел другие криптографические методы, большинство из которых применяются вручную. Например, банбуризмус — метод, при котором с помощью последовательного вычисления исключаются возможности среди наиболее вероятных решений. Он, в свою очередь, стал основой другого метода, изобретенного самим Тьюрингом для атаки на гораздо более мощную машину, чем «Энигма», которой верховное немецкое главнокомандование начало пользоваться в середине 1942 года для наиболее се- кретных сообщений, подписанных самим Гитлером, - Lorenz SZ42. Британцы назвали ее так: секретный телетайпный трафик Tunny — «тунец». Тьюринг изобрел метод тьюрингерия, или, шуточно, тьюрингизмус, основанный на банбуризмусе. Его разновидность была использова- на криптоаналитиком Биллом Таттом (1917-2002) и в конце концов вошла в программу для Colossus - первого электронного компьютера в истории. из десяти знаков и меню из трех петель существует примерно одна конфигурация, не противоречащая принципам шифрования, в то время как при одной петле их бы- ло 280, а вообще было возможно 17 576 комбинаций. Непротиворечивая конфигу- рация проверялась на машине «Энигма». Если получалось нечто, похожее на не- мецкий текст, пусть даже с некоторыми ошибками, это означало, что ключ найден. Метод Тьюринга учитывал коммутационные связи штекеров, поэтому был гораздо мощнее польского. Также он позволял одновременно анализировать всю шпаргалку, что подразумевало одновременный анализ всех возможных кабельных связей. В августе 1940 года машины bombe Тьюринга выполняли решающую роль в ра- боте восьмого отдела, который занимался расшифровкой морских кодов. Этап, ког- да немецкие субмарины безнаказанно топили торговые британские суда, закончился через год. В июле 1941 года тоннаж затопленных грузов сократился на две трети. Успехи Королевского морского флота начали беспокоить адмирала Дёница, который заподозрил, что шифр «Энигмы» перестал быть тайной. Однако его подчиненные- криптографы уверили Дёница в том, что это невозможно. Они были склонны объяс- нять неудачи случайностью или шпионами, но мощь «Энигмы» даже не подвергали сомнениям. Британцы в то же время делали все возможное, чтобы сохранить свою тайну, например они посылали самолеты-разведчики туда, где, как уже было из- вестно, находилась подводная лодка, чтобы немцы могли объяснить свои неудачи успешной разведкой противника. 30
КАК РЕШИТЬ ЗАГАДКУ Криптоаналитик Хью Александер (1909—1974) признал теоретический успех методов, разработанных Тьюрингом, и добавил: «Никто не должен сомневать- ся в том, что самый важный фактор успеха восьмого отдела заключался в работе Тьюринга». В мае 1945 года Германия пала. Группа математиков, филологов, шах- матистов и любителей кроссвордов выиграла у Третьего рейха интеллектуальную партию. ВТОРОЙ СЧАСТЛИВЫЙ ПЕРИОД В феврале 1942 года военные Германии ввели четвертый ротор, и машины bombe с тремя бара- банами перестали быть эффективными. Потери грузов за этот год превысили шесть миллионов тонн. Блетчли-парк отреагировал так быстро, как только мог, и разработал новые машины с че- тырьмя барабанами и ускоренными реле, однако проблема не поддавалась. Было рассчитано, что для расшифровки новых сообщений потребуется в 50-100 раз больше усилий. Восьмой отдел на несколько месяцев замолчал. Код сопротивлялся до декабря 1942 года, и немцы на- звали это время «вторым счастливым периодом», когда союзники понесли огромные потери. Однако действия агентуры и помощь США в изготовлении bombe в конце концов помогли выйти из тупика. С этого момента ежегодные потери немецких субмарин начали исчисляться сотня- ми. В битве за Атлантику произошел решительный перелом, и немцы окончательно утратили инициативу. 31

Глава 2 «Это невычислимо, доктор Тьюринг»: введение в теорию автоматов В январе 1944 года начал работать компьютер «Колоссус». Британскому инженеру Томми Флауэрсу (1905—1998) удалось спроектировать первый компьютер, в кото- ром использовалось 2400 электронных ламп. После окончания войны Черчилль от- дал приказ о сворачивании проекта в Блетчли-парке и уничтожении всех устройств и документов. Флауэрс собрал все документы по проекту и сжег их в топочной. Ни одна bombe и почти ни один расшифрованный документ не сохранился — от проекта остались только транскрипции, дневники и хрупкая человеческая память, которые и позволили через 30 лет рассказать о подвиге Ультры. После уничтожения документов Флауэрс потерял право считаться создателем первого программируемо- го компьютера, а эта честь была приписана Джону Пресперу Экерту (1919—1995) и Джону Уильяму Мокли (1907—1980) за созданный ими через два года ЭНИАК. Разница между Колоссусом и его предшественниками, кроме электронных ламп, которые значительно ускоряли вычисления, была в том, что машины bombe и другие изобретения Блетчли-парка были созданы с особой целью. Если бы их попросили сложить 2 + 2, они не смогли бы справиться с этой простой задачей. Флауэрс по- нял, как важно устройство с более общим предназначением. Он хорошо усвоил урок, связанный с введением четвертого ротора «Энигмы», когда за одну ночь потеряли эффективность десятки bombe. Хотя Флауэрс реализовал замысел специфического применения электронных ламп, сама идея принадлежала Тьюрингу — словно не- кая поэтическая справедливость требует от нас вновь и вновь возвращаться к этой фигуре. Алан Мэтисон Тьюринг (1912—1954) проявлял признаки гениальности с дет- ства. Он родился в Паддингтоне, Лондон, 23 июня 1912 года, в семье чиновни- ка гражданской службы в Индии и дочери инженера-железнодорожника, учился в Сассексе и Дорсете, где его интерес к науке вызвал даже некоторое порицание со стороны преподавателей, более заинтересованных в том, чтобы Алан получил 33
ЭТО НЕВЫЧИСЛИМО. ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Colossus был одним из первых компьютеров. На рисунке можно увидеть контрольную панель этого сложного аппарата. классическое образование. В 16 лет он уже познакомился с работами Эйнштейна и разобрался в них до такой степени, что понял сам, что они противоречат законам Ньютона. Потеряв в отрочестве друга, Тьюринг стал атеистом и материалистом. Юношу приняли в Королевский колледж Кембриджа, где проявились его способ- ности к спорту (он был в команде по гребле) и математический гений. Тьюринг до- казал центральную предельную теорему в диссертации, которая принесла ему все- го лишь в 22 года титул действительного члена Королевского колледжа. Тьюринг тогда не знал, что некоторое время назад теорема уже была доказана. Через год, в 1936-м, он опубликовал одну из самых важных статей в истории науки XX века, работу: «О вычислимых числах в приложении к проблеме разрешимости», которая ляжет в основу теории вычислений. В статье Тьюринга, как это ни парадоксально, решалась не задача создания компьютеров, а глубокая проблема логики и философии математики. Чтобы по- нять обстановку, в которой жил и работал Тьюринг, нужно оглянуться назад. До XIX века математическая строгость в доказательствах была не такой уж и обя- зательной. Мыслитель по своему желанию применял либо строгие рациональные доказательства, более или менее понятные интуитивно, либо намеки и примеры, говорящие о справедливости рассматриваемой теоремы. Ярчайшим представителем такого поведения в XVII веке был великий французский математик Пьер Ферма (1601-1665), который оставил нам очень мало формальных доказательств своих 34
ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ результатов, ни одно из которых не опубликовано под его именем. Изучение вычис- лимости с ее парадоксальными понятиями, которые вызвали усмешку у философов, таких как Джордж Беркли (1685—1753), только усложнило проблему. В течение всего XIX века прикладывалось много усилий для того, чтобы сфор- мулировать математические аксиомы и достоверные методы доказательства. Это не- избежно вело к модернизации логики, и здесь огромных успехов добились Джордж Буль (1815—1864), Готлоб Фреге (1848—1925), Георг Кантор (1845—1918) и Бертран Рассел (1872—1970). Похоже, близко было воплощение идеи Готфрида Вильгельма Лейбница (1646—1716) о превращении логики в calculus ratiocinator, рациональное вычисление, которое более или менее механически следует из аксиом или очевидных истин, чтобы, посредством четких шагов, прийти к верному выводу. БУЛЕВА ЛОГИКА Джордж Буль впервые определил символическую логику, алгебраизировав, таким образом, эту дисциплину. Он использовал силлогизмы (утверждения в стиле «Сократ смертен»-, которые могут быть истинными или ложными, но либо одно, либо другое) и операции с ними, которые дают в качестве результата более сложные силлогизмы. Если у нас есть два утверждения р и q, мы определяем их конъюнкцию как г - р л q и гово- рим, что г истинно тогда и только тогда, если и р, и q истинны. В булевых цепях эта функция осуществляется с помощью оператора AND. Аналогично мы определяем дизъюнкцию г - р v q и говорим, что г истинно тогда и только тогда, если по крайней мере одно из двух, р или q, истинно. В булевых цепях эта функция осу- ществляется с помощью оператора OR. Наконец, мы определяем отрицание г = -i р, которое также записывается в виде г=р, и гово- рим, что г истинно тогда и только тогда, если р ложно. В булевых кругах эта функция осущест- вляется с помощью оператора NOT. После того как параллели между исчислением и действительными числами сформулированы, казалось, что математические основания определены со всей строгостью на основе аксиом, четких определений и логических обоснований. Но очень скоро начали проявляться странные парадоксы, и Рассел обнаружил один из них. Парадокс — это утверждение, которое не может быть ни истинным, ни ложным. Он отличается от противоречия, которое всегда ложно. Парадокс, 35
ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ выражаясь техническим языком, нерешим. Мы не можем решить, истина он или ложь. Представим себе пример, далекий от математики. Предположим, что мы приезжаем в деревню, где есть только один брадобрей и никто не носит бороду. Пока он нас бреет, мы спрашиваем, много ли у него клиентов. Брадобрей отвечает: «Ну, да, потому что я брею всех, кто не бреется сам, и только их». Звучит логично, не правда ли? Но теперь зададимся вопросом: кто бреет самого брадобрея? Если он бреется сам, то он не может брить себя, потому что это противоречит его утвержде- нию. А если он не бреет себя сам, значит, он может брить себя, согласно своему же утверждению. Перед нами парадокс. Эти парадоксы берут начало в автореференции — утверждении, в котором со- держится отсылка к самому себе. Всем известен парадокс Эпименида, который, бу- дучи критянином, сказал, что все критяне лжецы. Мы находимся в той же ситуации с брадобреем. «Сам себя» для цирюльника и утверждение критянина о критянах — все это автореференции. Или вот еще один пример автореференции: на банке сухих дрожжей, изображенной ниже, нарисована этикетка к той же банке, на этикетке которой изображена банка, и так до бесконечности. Бертран Рассел и Альфред Норт Уайтхед (1861—1947) хотели искоренить эти парадоксы, которые обрушивали строгость самих основ математики. Они были убеждены, что смогут сделать это и свести математику к логическим манипуля- циям, как у Буля и Фреге. Ученые посвятили этому немало сил и в конце концов 36
«ЭТО НЕВЫЧИСЛИМО. ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ написали труд под названием Principia Mathematica, который явно содержал отсыл- ку к Ньютону. Эти усилия встретили большое сопротивление группы математиков, которые предпочитали интуитивный подход. Как известно, Леопольд Кронекер (1823— 1891) заявил, что натуральные числа созданы Богом, а остальное — дело рук че- ловека. Сторонники интуитивного подхода утверждали, что попытки рассуждать о бесконечных множествах ведут к парадоксам, следовательно, бесконечности должны быть исключены из математики или, по крайней мере, сведены к тому, что- бы говорить о них условно, как о чем-то, к чему мы постоянно движемся, но никогда не достигаем. Была и третья школа, формалистов. В 1928 году Давид Гильберт (1862—1943), преподаватель Гёттингенского университета и один из самых влиятельных ма- тематиков XX века, в 1900 году сформулировавший список проблем, которые, по его мнению, должны были стать предметом математических исследований в по- следующие годы, предложил вариацию одной из указанных проблем. Это была Entscheidungsproblem, или проблема разрешения, которая несколько лет спустя при- влекла внимание Тьюринга. Проблема звучала следующим образом: Существует ли алгоритм, который принимает в качестве входных данных лю- бое утверждение логики первого порядка и после конечного числа шагов мог бы определить, является ли указанное утверждение истинным или ложным? Сказать, что утверждение истинно или ложно — это то же самое, что сказать, что оно выводится из аксиом. Таким образом, проблема посвящена тому, можно ли механически определить истинность или ложность теоремы на основе заданной группы аксиом. Вся математическая теория основывается на наборе аксиом, кото- рые, как предполагается, истинны, и, базируясь на них и на уже доказанных теоре- мах, пытается доказать другие теоремы с помощью логических шагов. Эта древо- видная структура, корни которой лежат в аксиомах, а ответвления — это теоремы, и составляет собой науку. Entscheidungsproblem — это, по сути, та же проблема, что и беспокоившая Лейбница. Речь идет об автоматизации математических доказательств. На самом деле Гильберт задавался вопросом, может ли математик быть заменен машиной. Более того, речь идет о том, чтобы доказать, что не существует проблем, не име- ющих решения. Сам Гильберт в 1930 году читал знаменитую лекцию, в которой утверждал: 37
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ «Мы не должны верить тем, кто сегодня, рассуждая с философским видом, про- рочествует падение культуры и провозглашает ignorabimus (будущее незнание). Для нас не существует ignorabimus, на мой взгляд, его не существует ни в какой из естественных наук. В противоположность этому неразумному ignorabimus на- шим девизом будет: Wir mussen wissen, wir werden wissen! Мы должны знать — мы будем знать!» В своем первоначальном списке 1900 года Гильберт сформулировал большую про- блему: доказать, что аксиомы арифметики не ведут к противоречиям. Действительно, Гильберт к тому времени уже доказал, то евклидова геометрия является непротиво- речивой, теперь он хотел распространить это доказательство на арифметику. И вот в 1931 году произошла катастрофа: молодой математик родом из Брюнна (сегодня город Брно в Чехии) доказал две теоремы, которые навсегда изменили математику. Этого ученого звали Курт Гёдель (1906—1978). Гёдель доказал, что существуют истинные утверждения, которые нельзя дока- зать в рамках аксиоматической системы арифметики. Тот факт, что не все теоремы выводятся из непротиворечивого набора аксиом, следует из неполноты системы — в этом состоит первая теорема Гёделя о неполноте. Вторая теорема о неполноте на- носит серьезный удар по аксиоматике Гильберта. Мы не можем доказать непротиво- речивость аксиоматической системы Т, пользуясь утверждениями только из Т. Для доказательства своей первой теоремы Гёдель воспользовался математиче- ским методом диагонализации, который затем повторил Тьюринг и который являет- ся одним из важных инструментов теории вычислимости и теории сложности. Гёдель понял, что ему нужно создать некий вид парадокса, и для этого ему при- шлось воспользоваться автореференцией. Поскольку речь шла об арифметике, Гё- дель каждому утверждению теории арифметики Т присвоил число. Для этого до- статочно пронумеровать символы теории. Предположим, что у заданной теории есть десять символов: числа 0, 1, 2 и 3, базовые операции +, —, и знак равенства =, плюс символ, обозначающий конец формулы (®)- Пронумеруем символы от нуля до девяти и запишем любое утверждение в следующем виде. 38
ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ 0 1 2 3 + — X 4- = 0 1 2 3 4 5 6 7 8 9 Тогда мы можем записать любую формулу, например 1 + 1 = 2, как 141829. Число 9 необходимо для указания на конец формулы. ДИАГОНАЛИЗАЦИЯ Первым этот метод использовал Георг Кантор в рамках своих исследований о бесконечности. Кантор доказал, что есть столько же четных чисел, сколько и натуральных (мы пользуемся ими при счете). Действительно, любому натуральному числу можно поставить в соответствие четное число, которое в два раза больше него, следующим образом: п<->2п. Любому четному числу, согласно этой формуле, находится соответствие, равное его половине. Если нам удастся установить пары между всеми элементами двух множеств, мы говорим, что у них одинаковая мощность, то есть одно и то же число элементов. В этом случае множество бес- конечно, обозначим его как Ко. О множествах, имеющих такую мощность, мы говорим, что они счетные. Затем Кантор доказал, что множества целых чисел, натуральных плюс соответствующих им отрицательных также имеют мощность Ко. Готов ли читатель к доказательству? Для этого достаточно найти лишь пару формул, подобных написанной выше. Наконец, Кантор доказал, что мощность всех дробей также равна 8(). Но если дойти до действительных чисел, которые соответствуют всем точкам на числовой прямой, дело меняется - их мощность больше Ко! Суще- ствуют тание бесконечности, которые больше других. Чтобы доказать это, Кантор предположил, что может представить все действительные числа в виде списка. 1 3 0 4 3 9 2 5 5 3 4 8 8 4 5 7 > 1947... ---------> 2058... Затем он составил число, в котором отличалась ья цифра числа, расположенного в ьм ряду (по диагонали), и сделал то же самое для всех чисел списка (в примере пропущено много ря- дов). Составленное число не могло входить в список, поскольку отличалось от первого числа первой цифрой (1 и 2), от второго - второй (9 и 0) и так далее. Следовательно, действительные числа нельзя представить в виде списка; значит, действительных чисел больше, чем рядов, а так как число рядов то же, что и число натуральных чисел, Ко, то мощность множества действитель- ных чисел больше, чем ко. 39
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Это число уникально для этой формулы, мы назовем его числом Гёделя. Далее Гёдель также присвоил число доказательствам утверждений. Действительно, любое доказательство — также последовательность символов. Символы можно закодировать, как только что было показано, и любое доказательство, каким бы длинным оно ни было, будет иметь число Гёделя. Следующий шаг — построение функции доказуемости. В функции говорится, что утверждение с числом Гёделя z доказуемо, если существует число Гёделя х, которое представляет собой его доказа- тельство. Наконец, Гёдель осуществил диагонализацию, подобную диагонализации Кантора, хотя концептуально намного более сложную. Излагая очень обобщенно, на основе одного утверждения строится его число Гёделя, и это число Гёделя гово- рит о себе, что это число утверждения, которое невозможно доказать. Гёдель ввел автореференцию через черный ход и сделал это так, что ее невозможно устранить. Идеи Гёделя не только вызвали настоящее землетрясение в математике, но и при- вели других мыслителей к подобным проблемам. Среди них был и Алан Тьюринг. Машины Тьюринга и вычислимость В своей статье 1936 года Тьюринг, как уже было сказано, затронул Entscheidungsproblem. Он сделал это, дав определение машине, известной сегодня как машина Тьюринга, — это одно из самых важных понятий в математике XX ве- ка. Тьюринг был заинтересован в том, чтобы смоделировать, то есть вычислить в том смысле, в каком этот термин понимал Гильберт, набор конечных шагов, ко- торые приводят к некоторому результату. Для этого он представил себе полностью механический процесс, осуществляемый с помощью машины (см. рисунок). Таблица Прочитанный Символ О 1 Текущее состояние АТекущее состояние В Текущее состояние С Написать Пере- След. Написать Пере- След. Написать ПеРе- । След. Символ двинуть Ленту Сост. Символ двинуть Ленту Сост. Символ двинуть Ленту Сост. 1 п В 1 Л А 1 Л в 1 л с 1 п В 1 N стоп Лента jo I О I О I О I О I О I О I [о о|о|о|о|о|о|о|о|о|о|о$ 1 = Написать 1 на ленте О = Написать 0 на ленте Л = Передвинуть ленту влево П = Передвинуть ленту вправо 40
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Машина состоит из бесконечной ленты (или, другими словами, ленты неограни- ченной длины). Это требование важно: поскольку ограниченные ресурсы (лента) могли бы повлиять на само определение вычислимости, то машина Тьюринга рас- полагает неограниченными ресурсами. Лента разделена на ячейки. В каждой ячейке можно написать символ, взятый из конечного алфавита. Параллель с некоторыми идеями Гёделя становится очевидной: вместо чисел Гёделя мы копируем символы алфавита. У машины есть внутреннее состояние, которое можно запомнить и кото- рое, как правило, изменяется каждый раз, когда машина осуществляет какую-либо операцию. Мы можем представить себе это состояние как конфигурацию, в которой находится машина «Энигма» или bombe в заданный момент. Естественно, поведе- ние машины зависит от того или иного текущего ее состояния. Считывающая головка идентифицирует один и только один символ ленты (кото- рый под ней) и на основе этой идентификации совершает одно из трех возможных действий. 1. Написать другой символ, стерев предыдущий или оставив его без изменений. 2. Передвинуть ленту на шаг влево или вправо или не двигать ее. 3. Изменить состояние или остаться в текущем состоянии. Если этого требует состояние, машина может остановиться. Поведение машины определяется исключительно считанным символом и состоя- нием машины в этот момент времени. Существует таблица, с которой машина сверя- ется и в которой для каждого возможного состояния и возможного считанного сим- вола описано три возможных варианта действия — назовем ее таблицей переходов. Также существует специальный символ алфавита, обозначающий пустую ячейку, исходное состояние и множество терминальных состояний, в которых машина оста- навливается, завершив алгоритм. Важно заметить, что машина может и не остановиться, а продолжать выполнять свою программу неограниченное время. Любому программисту знакомо это ужасное ощущение, когда программа выходит на бесконечный цикл, снова и снова выполняя одни и те же инструкции, как правило с незначительным изменением, пока не будет достигнуто конечное условие. Каждый из шагов машины называется итерацией. 41
ЭТО НЕВЫЧИСЛИМО. ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Создавать бесконечные циклы очень легко; достаточно того, чтобы условия для остановки машины, то есть ее терминальные состояния, — никогда не были соз- даны. Конечно, машина могла бы совершать один и тот же цикл, пока некий счетчик не дошел бы до нуля. Но если при каждой итерации показания счетчика не меняют- ся, то машина никогда не остановится. Мы уже понимаем, что операции этой машины представляют собой выполнение алгоритма. Живительно, что эта абстрактная вычислительная машина оказывается такой же мощной, как и самый большой суперкомпьютер. При достаточном коли- честве времени машина Тьюринга способна выполнить любой известный алгоритм. Все языки программирования, какими бы сложными они ни были, должны быть переведены на язык, который понимает процессор. Этот язык называется машин- ным языком, и речь идет о наборе инструкций, которые передаются центрально- му процессорному устройству (ЦПУ) в виде двоичных чисел, состоящих из нулей и единиц. Каждое десятичное число может быть записано в двоичном виде. Для этого следует разложить десятичное число на сумму степеней числа два. Например, 225 — это 128 + 64 + 32 + 1, что можно записать как: \-27+\-2в+\-25 + 0-24+0-23+0-22+0-21 + \-2°. Если мы возьмем каждую единицу и каждый нуль и запишем их последователь- но, то получим двоичное число 11100001. Двоичные знаки также называют битами. Машинные языки различаются между собой, но все они основаны на одних и тех же базовых инструкциях, которые эквивалентны инструкциям для машины Тьюринга. Часто все действия компьютера в упрощенной форме можно изложить в таблице вроде той, что приведена ниже, — в сравнении с соответствующей опера- цией машины Тьюринга. Компьютер Машина Тьюринга Прочитать следующий шаг программы в памяти. Прочитать содержимое ячейки на ленте. Назначить значение некоторому участку памяти. Записать значение в ячейку на ленте согласно таблице переходов. Сложить два числа или применить к ним OR. Сложить два числа или применить к ним OR согласно таблице переходов. Умножить два числа или применить к ним AND. Умножить два числа или применить к ним AND согласно таблице переходов. 42
ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Применить NOT. Применить NOT согласно таблице переходов. Остановиться, если это требуется из прочитанной инструкции. Остановиться, если достигнуто конечное состояние. Перейти к следующему шагу программы в любом случае. Передвинуть считывающее устройство вправо или влево и при необходимости изменить состояние согласно таблице переходов. Перейти к следующему шагу программы, в зависимости от значения участка памяти. Передвинуть считывающее устройство в зависимости от состояния и считанного символа. Посмотрим, например, как машина Тьюринга умножила бы два бита, начиная с состояния 50 на ленте, на которой эти биты находятся в текущей ячейке и в сосед- ней ячейке слева. Результат пишется в третьей клетке, данные из двух предыдущих ячеек стираются. Текущее состояние Прочитанный символ Написать символ Передвинуть ленту Следующее состояние So 0 Стереть Налево s4 So 1 Стереть Налево s. sx 0 Стереть Налево S2 St 1 Стереть Налево S3 S2 0 или 1 0 Не двигать S5 S3 0 или 1 1 Не двигать S5 S4 0 или 1 Стереть Налево S2 S5 стоп Естественно, существуют сложные разработки, которые повышают эффектив- ность компьютера, но анализ всего компьютерного вычисления сводится к этим про- стым операциям, и, следовательно, компьютер равнозначен машине Тьюринга. Естественно, между этими устройствами есть некоторые различия: на ленте ма- шины Тьюринга записан произвольный конечный набор символов, а компьютер ра- ботает только с двоичными числами. Но влияет ли это на его мощность? Нет. Любой символ может быть записан как двоичное число. Если у нас есть алфавит из пример- но 200 символов, мы можем назначить каждому символу число, меньшее 28, то есть число из восьми битов. Именно так и поступили первые американские разработчики 43
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ-: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ ЛЕЙБНИЦ И ДВОИЧНЫЕ ЧИСЛА На Западе первым человеком, который задумался о двоичных числах, был Лейбниц, предста- вивший себе механическое устройство для вычисления алгоритмов. Идею он позаимствовал у священника-иезуита, который проповедовал в Китае и познакомился там с И-Цзин, Книгой Перемен. Как известно, даосизм основан на двух началах, инь и ян, которые словно ноль и еди- ница в двоичной системе; гексаграммы и триграммы в И-Цзин напрямую связаны с двоичными числами. Пример триграммы представлен на флаге Республики Корея, где они появляются, окружая символ инь и ян. компьютеров, которые присвоили каждой букве латинского алфавита число, так на- зываемый код ASCII. Но разве не лучше использовать один символ X, чем двоичное число 1011000, соответствующее ему в коде ASCII? Ведь это число в семь раз длиннее, чем один символ X! Как ни странно, нет. Лента машины Тьюринга бесконечна, поэтому для нее неважно, записан ли один символ в одной ячейке или равнозначные ему семь или восемь символов в семи или восьми ячейках. Конечно, на саму запись в двоич- ном коде мы будем тратить времени больше, но с точки зрения теории вычислений эти потери незначительны. А с помощью самой простой системы записи — двоич- ной — можно передать любую информацию. Иначе говоря, самая сложная машина сводится к самой простой. Мы должны убедиться в том, что машина Тьюринга сопоставима по своей мощ- ности с компьютером. В теории машина Тьюринга даже мощнее компьютера, по- тому что располагает неограниченными ресурсами, хотя создание для нее программ требует времени. Собственно, эта машина — абстрактный вычислитель, всего лишь модель, позволяющая поразмышлять о вычислениях. Тьюринг в своей машине фор- мализовал поведение человека, который осуществляет расчеты на основании вход- ных данных в тетради, пользуясь при этом карандашом и стирательной резинкш . Но если машина Тьюринга не уступает по мощности компьютеру, существу- ют ли машины, еще более мощные, работающие независимо от используемого языка 44
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ программирования? Возможно, машину можно оснастить дополнительными лента- ми и головками: например, одна — для входных символов, вторая — для осущест- вления вычислений, а третья — для записи результата. Безусловно, такая машина будет гораздо мощнее машины Тьюринга с одной лентой... Но на самом деле машина Тьюринга с одной лентой вполне может смоделиро- вать работу машины с тремя лентами, первую из которых мы будем использовать для входных символов, вторую — как черновик для промежуточных расчетов, а третью — для записи результата. Мы вполне можем считать и записать симво- лы со всех трех бесконечных лент на одной. Кантор доказал, что для бесконечного счетного множества можно установить соответствия с двумя, тремя и более беско- нечными счетными множествами. Гильберт проиллюстрировал это в известном при- мере с отелем, в котором есть бесконечное число комнат, уже занятых постояльцами, но при этом отель может принять бесконечное количество новых постояльцев, если просто переместить одновременно всех уже имеющихся гостей в комнаты с номера- ми в два раза больше, чем предыдущие, а всех вновь прибывших расселить в осво- бодившиеся номера. Если у нас есть три ленты, мы можем перенести символы из их ячеек на одну ленту следующим образом. Возникнут некоторые сложности с движением ленты, которую нужно будет перемещать на постоянный коэффициент, но мы свели машину Тьюринга с тремя лентами к машине с одной лентой. Становится все яснее, что с машинами Тьюринга мало что может сравниться по мощности. Гёдель в 30-х годах прошлого века определил понятие частично рекур- сивных функций. У них в качестве переменной стоит натуральное число, а в качестве результата — другое натуральное число. Рекурсивная функция — это функция, которая определяется в собственных терминах. Например, факториал рекурсивно можно определить следующим образом: 45
"ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ 1! = 1 п! = п-(п~ 1)! Мы снова вспоминаем этикетку банки сухих дрожжей. Рекурсивность — это также автореференция. Термин «частично» означает, что хотя это функции, превра- щающие одно натуральное число в другое, они не определены в целом для всех на- туральных чисел. Примером может быть функция квадратного корня, определенная только для таких квадратов, как 4, 9 или 36. Одновременно или даже немного раньше Тьюринга Алонзо Чёрч (1903—1995) сформулировал так называемое лямбда-исчисление — математический инструмент, позволявший оперировать функциями и переменными в абстрактном виде. Чёрч пре- следовал ту же цель, что и Тьюринг: он хотел создать модель вычислимости. Однако потребовалось много времени, прежде чем авторы поняли, что все три модели — ча - стично рекурсивных функций, лямбда-исчисления и машин Тьюринга — полностью эквивалентны, как и другие инструменты, разработанные позднее. Гёдель дал определение модели частично рекурсивных функций. Алонзо Чёрч, автор модели лямбда-исчисления. Итак, ни Чёрч, ни Гёдель не нашли инструмента более мощного, чем машины Тьюринга. Также сам Тьюринг и Чёрч независимо друг от друга сформулировали тезис Чёрча — Тьюринга: Если существует алгоритм для решения проблемы X, этот алгоритм может быть выполнен машиной Тьюринга (или другими аналогичными механизмами). 46
ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Все вычислимое вычислимо с помощью машины Тьюринга. То, что нельзя вы- числить с ее помощью, в принципе невычислимо. Исходя из этого, мы больше не де- лаем различий между алгоритмами и машинами, их выполняющими, — концепту- ально они идентичны. Нам осталось сделать еще один шаг для понимания значительности вклада Тью- ринга. Британец понял, что алгоритм — это цепочка символов, по аналогии с идеей формализации Гильберта и превращением математических доказательств в вид чи- сел, как это сделал Гёдель. «Но, — сказал он себе, — если это цепочка символов, то я могу закодировать ее в ленте машины Тьюринга». Машину можно полностью описать с помощью ее же языка, множества состояний, включая начальное и ко- нечное, а также таблицы переходов. Все команды можно последовательно записать на ленте, пользуясь метками для отделения групп символов, как видно на рисунке. Назовем каждую цепочку описанием машины Тьюринга JVC. Текущее состояние — Прочитанный символ — Написать символ П Передвинуть ленту ------Перейти в состояние |0|1|В |1|2|3|4| 11112I4 ДЯ 1 |0|0|Р|4| 1111 I |3|2|0|0|Р|4|..Л L_____J L__________I L_I I_____I I____________________________________I Алфавит Состояния Нача- Конеч- Таблица переходов льное ные состо- состо- яние яния Это не сильно отличается от того, что сделал Гёдель, пронумеровав теоремы и доказательства. Следующий шаг — составить таблицу переходов, которая бу- дет интерпретировать эту ленту и смоделирует машину JVC, то есть создаст алго- ритм машины JVT. Если мы этого добьемся, то создадим универсальную машину Тьюринга. Вместо того чтобы работать по специальной программе, заданной табли- цей переходов, как bombe, в которой шаги определялись электрическими связями, можно создать машину, способную выполнить любую программу. Это основная идея современного компьютера: машина общего назначения, в память которой за- гружаются программы, там же хранятся входные данные, рабочие данные и условия завершения программы. Универсальная машина Тьюринга 'll моделирует любую машину Тьюринга JVC, если для входной цепочки х машины JVC машина И выдаст тот же результат, что и JVC. Представим себе, что И оснащена пятью лентами. Три из них похожи на те, 47
ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ что были установлены в машине Тьюринга с тремя лентами: одна с входными дан- ными, другая — для записи результата, и третья — для промежуточных расчетов. Еще на двух лентах содержится описание М, как можно видеть на предыдущем ри- сунке, и текущее состояние М. Описание JVC — это то, что мы привыкли называть программой. Теперь, поскольку мы определили все символы, их можно записать как цепочку двоичных чисел. Мы можем забыть о привычном алфавите и ограничиться цепочками двоичных чисел. Именно это делает компьютер. Вычислимость, проблема остановки и проблема разрешения (Entscheidungsproblem) Как только была формализована вычислимость, Тьюринг столкнулся с проблемами, подобными тем, которые сформулировал Гёдель. Если последний задавался вопро- сом об утверждениях, истинность которых не может быть доказана, Тьюринг иссле- довал, имеет ли проблема разрешения (Entscheidungsproblem), сформулированная Гильбертом, положительный ответ, то есть можно ли найти алгоритм, с помощью которого на основе набора аксиом можно доказать утверждение в рамках логики первого порядка. Большинство последователей Гильберта верили в то, что такой алгоритм существует. Но, например, Джон фон Нейман (1903—1957) и другие на- чали выражать пессимизм, заметив, что положительный ответ сведет работу мате- матика к работе машины. Результат, полученный Гёделем, еще больше увеличил беспокойство. На самом деле ответ содержался в самой статье Гёделя, в которой тот доказал две свои теоремы. Именно Чёрч и Тьюринг предложили окончательный ответ, который оказался отрицательным: такого алгоритма не существует, и некоторые утверждения нельзя доказать. В компьютерном вычислении существует набор проблем, называемых проблема- ми разрешения. Они решаются с помощью алгоритма (машины Тьюринга), кото- рый дает ответ: да или нет, истина или ложь, один или ноль. Входная цепочка Алгоритм 1 — ДА = Истина 0 = НЕТ = Ложь 48
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Мы различаем проблемы разрешения и более общие проблемы, которые пред- полагают поиск результата. Например, мы можем задаться вопросом, является ли число простым или составным. Вспомним, что простое число — это число, которое делится только на само себя и на единицу, в то время как составное число — это результат умножения простых чисел. Этот вопрос, названный проблемой просто- ты чисел, является проблемой разрешения, если его сформулировать следующим образом: является ли /V простым числом? Ответ здесь может быть только да или нет. Но мы можем сформулировать очень похожий вопрос: каковы множители /V? Множитель может быть один (если число простое) или несколько (если оно состав- ное). Мы видим перед собой проблему разложения на множители, что не то же самое, что проблема простоты чисел, хотя они и связаны друг с другом: в обоих случаях мы так или иначе решаем проблему простоты чисел. Обратное неверно: про- блему разложения на множители решить намного сложнее, чем проблему простоты чисел. Проблемы, ответ на которые сложнее, чем да или нет, называются пробле- мами функции, которые делятся на типы: проблемы поиска, оптимизации, подсчета и так далее. Все проблемы функции можно преобразовать в соответствующую проблему раз- решения. В связи с этим, а также поскольку проблемы разрешения образуют класс проблем, относительно легко поддающийся анализу, теория вычислений сосредота- чивается почти исключительно на проблемах разрешения. Еще одна очень известная проблема — эта проблема остановки. Она состо- ит в следующем вопросе: если даны описание процедуры и ее начальные входные данные, то завершится ли когда-либо выполнение процедуры с этими данными или машина Тьюринга будет работать без остановки? Важно подчеркнуть, что проблема касается любого алгоритма. Недостаточно, чтобы машина останавливалась при вы- полнении одних алгоритмов и не останавливалась при выполнении других. У вас еще не закружилась голова из-за рекурсии, автореференции, когда на этикетках банок изображаются те же банки с теми же этикетками, или алгоритмов, анализирующих другие алгоритмы? Универсальная машина Тьюринга в какой-то степени может ана- лизировать саму себя и другие машины. И это, возможно, первый шаг к искусствен- ному интеллекту. Так как ясно, что алгоритм — это цепочка символов, должно быть очевидно, что машина Тьюринга может анализировать эту цепочку и делать соответствующие выводы. К сожалению, этот анализ не всегда ведет к нужному результату. Есть 49
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ МАШИНЫ И ЯЗЫКИ Можно подумать, что машина Тьюринга пользуется языком, образованным всеми подходящими символами, которые может распознать эта машина, словно это были бы грамматически пра- вильные предложения какого-то языка. Великий лингвист Ноам Хомский (1928) воспользовался этой параллелью между машинами Тьюринга и языками, которые называются формальными, и применил ее ко всем типам автоматов, создав иерархию формальных языков и автоматов, которые их распознают. Как становится очевидным из тезиса Чёрча - Тьюринга, самую высо- кую точку в иерархии занимают рекурсивно счетные языки, которые распознаются машинами Тьюринга. Хомский воспользовался этими идеями для того, чтобы предположить, что в челове- ческих языках также существует глубинная структура с элементами, общими для всех языков: глагольные и именные синтагмы с различными функциями - подлежащее, прямое и косвенное дополнение, обстоятельства времени, образа действия и места. Грамматика всех этих языков в этом случае имела бы одни и те же элементы с минимальными вариациями, генетически за- программироваными в мозге, и это противоречило бы более привычной идее о том, что при рождении человек - tabula rasa, и он изучает язык с его структурой. рекурсивно счетцу (машина ТьюрИ//г^ ,^ельный к ^оНт *с: с,^ыйотко«^. Иерархия языков Хомского. проблемы, которые мы называем неразрешимыми. Проблема остановки — одна из них. Чтобы подтвердить это, сначала проведем доказательство, очень похожее на до- казательство диагонализации Кантора. Будем исходить из того, что любая машина Тьюринга — это описание цепочки символов и, следовательно, ее можно представить 50
-ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ как входную цепочку для другой машины Тьюринга. Пронумеруем все эти описания в алфавитном порядке: 0,1, 00, 01,10, И, ООО, 001 и так далее (опустим небольшую техническую деталь, касающуюся того, что хотя любая машина Тьюринга может быть представлена в виде цепочки символов, не все цепочки символов представляют собой машину Тьюринга). Пронумеруем в том же порядке все возможные входные цепочки. Теперь построим таблицу, или бесконечную матрицу К, следующим образом: ес- ли i-я машина Тьюринга допускает j-ю входную цепочку (то есть останавливается при этой цепочке), мы поставим единицу в ячейке, соответствующей ряду i и колон- ке /, называемой К... В противном случае мы поставим ноль, как показано в таблице ниже. В этой таблице машина Тьюринга номер три допускает входную цепочку но- мер один, обведенную в кружок (ячейка К31), а машина номер четыре не допускает цепочку номер два, обведенную в ромбик (ячейка К42). Обратим внимание на диагональ: это машины i, допускающие свое собственное описание i в качестве входной цепочки (клетки К^, К22, и так далее). Теперь по- строим дополнение к диагонали, поменяв все ее ячейки на противоположные. Там, где стоит единица, поставим нуль, и наоборот. В примере с предыдущей картинки это дополнение будет следующим: 001101... (многоточие связано с тем, что матрица бесконечна). Что характерно для него? Мы можем задумать дополнение как функ- цию Diag, где ставится ноль, если i-я машина Тьюринга допускает свое собственное описание в качестве входа, и единица — в противном случае. Теперь предположим, что Diag вычислима машиной Тьюринга. Это означает, что существует такая маши- на ЛС, которая для всех входных цепочек а М дает тот же результат X, что и Diag, как показано на следующей странице. 51
«ЭТО НЕВЫЧИСЛИМО, ДОКТОР ТЬЮРИНГ»: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ Машина Mi Г^патетическая машина JVCj, которая осуществляет функцию Diag. Представим себе, что М — это i-я машина АГ. Среди всех цепочек АГ. может допустить или не допустить цепочку ОС., которая является ее собственным описанием. Но если она ее допустит, на диагонали в позиции К.. получается единица, в то время как Diag в этой позиции равна нулю. Аналогично, если она ее не допустит, в этой позиции получается нуль, в то время как Diag равна единице. Делаем вывод, что существование машины М., способной вычислить Diag, невозможно. Эта функция невычислима. Мы доказали, что существуют невычислимые функции. Этот резуль- тат похож на результаты Гёделя и Кантора и получен подобным образом. МОЩНОСТЬ МНОЖЕСТВА АЛГОРИМОВ Сделаем интересное замечание: множество алгоритмов счетно, его мощность равна Ко. Из это- го следует удивительный вывод. Как доказал Кантор, на числовой прямой существует больше чисел - можно доказать, что намного больше, - чем Ко. Эти числа неописуемы, потому что если бы мы могли описать их конечным числом шагов, это описание представляло бы собой алгоритм для определения числа, и тогда мощность множества алгоритмов не была бы равна Ко. Существует бесконечное множество чисел, которые мы никогда не сможем записать с точностью до последнего знака после запятой - мы всегда должны будем удовлетворяться приближением. И существует намного больше невычислимых проблем, чем вычислимых. Теперь перейдем к проблеме остановки. Представим себе, что существует маши- на Тьюринга, которая вычисляет функцию ОСТАНОВКА, определенную следую- щим образом: 52
«ЭТО НЕВЫЧИСЛИМО. ДОКТОР ТЬЮРИНГ-: ВВЕДЕНИЕ В ТЕОРИЮ АВТОМАТОВ ОСТАНОВКА (ОС., х) = 1, если машина, описанная ОС., останавливается при входе х. ОСТАНОВКА (ОС., х) = 0, если машина, описанная ОС., не останавливается при входе х. Теперь построим машину Тьюринга Т, для которой в качестве входных значений используется алгоритм а и которая ведет себя, как показано на рисунке. Осуществи г- п А-> ОСТАНОВКУ получится О (<Xi,<Xi) Если получится О Осуществи а;, пользуясь универсальной получится 1 машиной Если получится 1 Машина F. Машина Т идентична машине АГ., которая вычисляла Diag. При заданной вход- ной цепочке а она выдаст те же результаты, что и АГ.. Но это невозможно, посколь- ку АГ. не существует, ведь Diag невычислима. Это означает, что Т также не может существовать. Мы свели проблему вычисления Diag к проблеме остановки и таким образом доказали, что проблема остановки нерешаема. Это один из наиболее рас- пространенных методов в теории вычислений: сведение проблемы X к проблеме Y, что предполагает, что Y настолько же сложна, как и X. Заметим, что первую теорему Гёделя о неполноте очень просто доказать с помо- щью машины Тьюринга. Речь идет о том, чтобы свести теорему к проблеме останов- ки, что можно сделать, записав математическую формулу ф для каждого алгоритма и каждой входной цепочки, которая истинна тогда и только тогда, если выполне- ние алгоритма прекращается. В этом случае теорема Гёделя сводится к проблеме остановки, при этом все цепочки доказательств конечной длины используются как инструкции к машине Тьюринга, пока формула не будет признана истинной или ложной. По стечению обстоятельств подобный метод мог бы решить проблему оста- новки, из этого можно сделать вывод, что формулы ф не существует: есть формулы, которые невозможно доказать. Так звучит теорема Гёделя, выраженная в терминах проблемы разрешения. 53

Глава 3 Выбрать лучший путь: теория алгоритмов К югу от Аргоса находится озеро Лерна, где, согласно мифу, Геракл выполнил вто- рое из заданий, данных ему царем Еврисфеем: убить Гидру — змею с ядовитым дыханием и многочисленными головами, которую Гера послала, чтобы покончить с героем. Вначале Геракл пытался отсекать ей головы одну за другой, но, к его удив- лению, каждый раз, когда он отсекал голову, на ее месте сразу же вырастало еще три. Было ясно, что таким образом задачу не решить, поскольку она постоянно ус- ложняется. Итак, Геракл был первым человеком, который столкнулся с экспоненци- альным ростом. Если изначально у Гидры было три головы (не будем брать в расчет четвер- тую голову, которая была бессмертна), на следующем этапе (n = 1) у нас будет 9 голов; после восьмого этапа (п = 8) — 19683, а после семнадцатого — почти 40 миллионов. Это яркий пример экспоненциального роста. Экспоненциальный рост очень бы- стрый, хотя и не самый быстрый из существующих. Математически он определяется функцией, которая носит название показательной функции: Кп) = а", где а — константа, известная как основание. В науке о вычислениях она обычно равна двум из-за особенностей двоичной системы счисления, но вообще может быть любым числом. Так, Лернейская гидра воспроизводила свои головы в соответствии с формулой: /(п) = Зп+1. Заметим, что, действительно, когда п = 0, начальное состояние — /(0) — З1 = 3, когда п — 1, /(1) = З2 = 9, /(2) = З3 = 27, и так далее. Время выполнения некоторых алгоритмов растет экспоненциально, как функция длины входных команд. Какой бы длины ни была эта цепочка, времени на ее вы- 55
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ полнение каждый раз потребуется все больше и больше, так что очень скоро нашему компьютеру, даже очень быстрому, для выполнения алгоритма будет необходимо не- сколько веков. С подобным столкнулись поляки, когда в «Энигму» были вставлены еще два сменных ротора, и Блетчли-парк, когда машина начала работать с четырь- мя роторами. Это фундаментальная проблема вычислительной сложности, только в случае с «Энигмой» поведение было не просто экспоненциальным — оно было комбинаторным. Комбинаторный рост — это настоящий кошмар, с которым может быть связано решение алгоритмов. п 5П п! 0 1 1 1 5 1 2 25 2 3 125 6 4 625 24 5 3125 120 6 15625 720 7 78125 5040 8 390625 40320 9 1953125 362880 10 9765625 3628800 11 48828125 39916800 12 244140625 479001600 13 1220703125 6227020800 14 6103515625 87178291200 15 30517578125 1307674368000 16 152587890625 20922789888000 17 762939453125 355687428096000 18 3814697265625 6402373705728000 19 19073486328125 121645100408832000 20 95367431640625 2432902008176640000 21 476837158203125 51090942171709440000 22 2384185791015625 1124000727777607680000 23 11920928955078125 25852016738884976640000 24 59604644775390625 620448401733239439360000 25 298023223876953125 15511210043330985984000000 56
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Показательная функция вначале выигрывает у комбинаторной, но ненадолго; в конце концов комбинаторная функция показывает больший рост. Мы не можем основываться на первых значениях, чтобы решить, какая функция возрастает бы- стрее. Надо мыслить масштабно, в математике это называется стремиться к бес- конечности и наблюдать асимптотическое поведение. Только тогда мы увидим различия между разными типами функций. Мы хотим найти функцию, которая всегда была бы больше, чем функция /, ко- торую мы анализируем начиная с некоторого момента. Эту функцию мы назовем высшей асимптотической границей / и обозначим ее как О(/(п)) — О большое. Но нас интересует не то, что О(/(п)) намного больше /. Мы хотим, чтобы она про- сто немного росла. На следующем графике показано, как асимптотическая граница доминирует в течение долгого периода, хотя до сих пор график функции был коле- бательным. O(f(n)) доминирует над (п). В предыдущем примере мы говорили о границах О(5П) и О(п!), и можно ска- зать, что 0(5") < О(п!). Это легко доказать, пользуясь формулой Стирлинга: Теперь мы знаем, почему факториал так быстро растет. Он немного больше, чем п", что явно больше, чем ап для значений п, больших а. 57
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ В предыдущей главе мы говорили о нерешаемых проблемах. Мы предположили, что у нас есть все время Вселенной, а в нашем распоряжении — неистощимые ре- сурсы для выполнения наших алгоритмов. Следовательно, мы не беспокоились об их эффективности. Но эффективность все-таки была жизненно важной для криптогра- фов Блетчли-парка: они должны были расшифровать сообщения в разумное время, так, чтобы не терялась их актуальность. Очевидно, что алгоритмы должны были ра- ботать, используя наименьшее количество ресурсов, особенно это справедливо для такого невозобновляемого ресурса, как время. Сейчас нас интересует классификация алгоритмов, которые бы решали задан- ную проблему, относительно высших асимптотических границ указанных алгорит- мов. Границы, в свою очередь, могут быть классифицированы согласно их росту. Наименьшая существующая — это горизонтальная линия, которая по определению не возрастает. Обозначим ее через 0(1), поскольку нам не важны различия, ко- торые могут быть между /(n) = 1 и /(п) = 50 321 234 458. Эти различия зависят от шагов алгоритма и работы компьютера, а мы заинтересованы в том, чтобы соз- дать общую теорию вычислительной сложности, поэтому не будем останавливаться на обсуждении каждого возможного различия в конструкции компьютера и струк- туре алгоритма. Следующая часто используемая граница — это логарифм п, О (Inn). Логарифм — это функция, обратная показательной. Логично сделать вывод, что если показа- тельная функция растет очень быстро, обратная ей делает это довольно медленно. В конце концов, обе функции, если применить их последовательно одну за другой, должны компенсироваться, чтобы получить п. Действительно, наша догадка верна: логарифм возрастает очень медленно, гораздо медленнее, чем О(п), — мы назы- ваем такое поведение линейной сложностью. Существуют сложные функции, такие как О(1п(1пп)), применяя к ним логарифмическую функцию последовательно и не- определенно долго, мы будем получать функции, которые растут все медленнее. Итак, у нас есть все функции, называемые полиномиальными. Полином — это функция вида: /(n) = aknk + ak _ tnk-'+...+ а0. Примеры полиномов: /(и) = и, /(и) = Зп2 —и —4, /(n) = п4 + 2п2 —1 и так далее. Естественная граница степеней любого полинома — это его член с самой большей степенью, O(nfe), потому что этот член доминирует над всеми остальными, возрас- тает быстрее. Так, для предыдущих полиномов у нас будут границы О(п), О(п2) 58
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ ЛОГАРИФМИЧЕСКАЯ ФУНКЦИЯ Именно Леонард Эйлер (1707-1783) определил логарифмическую функцию. Логарифмы - это функции, обратные показательной. Если в показательной функции мы возводим число а в сте- пень п, мы можем записать это следующим образом: f (пТ=а а.... -а = ап. п раз Естественно задаться вопросом, существует ли обратная функция, которая при заданном /(л) возвращает нас к п. Эта функция - логарифм, так что мы записываем л - g(k) = 1пак тогда и только тогда, если к ~ agw**an. В компьютерном вычислении обычно используется основа- ние 2 - благодаря использованию двоичной системы. На рисунке отражена прогрессивная медлительность, с которой растет логарифмическая функция. Джон Непер (1550-1617) был первым, кто подумал про логарифмы. С их помощью он мог пре" ратить умножение в сложение, упростив расчеты и воспользовавшись тем свойством, что: Ху = а1пач'“а,па*+|па>'. Это тот же самый принцип, что и в исчезнувшем правиле вычисления, когда длины суммиро- вались с помощью отрезков, выраженных на логарифмической шкале. In (3) In (2) In (6) 59
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ и О(п4) соответственно. В качестве промежуточного положения у нас могут быть произведения и составные варианты полиномов и логарифмов, такие как O(nln(n)), O(n2ln(ln(n)) и так далее. Теперь вспомним машины Тьюринга из предыдущей главы. Мы говорили, что они эквиваленты в том, какие функции могут вычислить. Но между ними есть раз- ница в эффективности алгоритма, хотя они все равно относительно мало различа- ются между собой. Некоторые машины отличаются только на константу, то есть ФУНКЦИИ АККЕРМАНА Рекурсивный процесс можно обобщить. А если говорить об операциях, которые не являются привычными в арифметике, а о более сложных операциях, которые включают в себя больше рекурсивности? Для начала подумаем о том, что любая итерация - это рекурсия. Если мы прибавим единицу к заданному числу л с итерацией в к раз, мы получим сумму л + к. Если мы суммируем с самой собой заданную величину л с итерацией в к раз, мы получим произведение л к, и это также можно выразить рекурсивно. А если мы умножим число п само на себя к раз, мы возведем л в степень к. К если мы не будем останавливаться на этом? Эти размышления приводят к функциям, предложенным Вильгельмом Аккерманом (1896-1962), учеником Гиль- берта. Они имеют рекурсивное определение, но, по сути, только обобщают предыдущие шаги. Хотя существует целая группа функций Аккермана, остановимся на наиболее простой: Ф (л, к, 1) = п+к у (п,к,2) = п-к <р(п,к, 3) = пК=п^к rfP k veres у(п,к 4)=п 1 -nf2k Знак стрелки, введенный Дональдом Кнутом (1938), используется для выражения обобщения возведения в степень. Функция Аккермана возрастает так быстро, что ее нельзя вычислить с помощью элементарных арифметических операций, кроме возведения в указанную степень. Это означает, что может су- ществовать связь между вычислимостью и вычислительной сложностью: грубо говоря, кажется, что функции, которые возрастают очень быстро, становятся менее вычислимыми. Мы можем считать эту функцию суперрекурсией, чем-то более рекурсивным, чем «нормальные» функции, поскольку она рекурсивна не в элементарных операциях (сложение, вычитание, умножение, деление, возведение в степень), а имеет гораздо более глубокий уровень рекурсии. 60
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ 0(1); при 0(л2) наблюдается гораздо большая скорость расхождения. Это означа- ет, что в первом случае машины имеют равную эффективность, а во втором вступает в действие полиномиальный фактор. Именно поэтому нас не интересует, кто выпол- няет алгоритм: человек, машина Тьюринга, ноутбук или супермощный компьютер. Различия между ними, с точки зрения сложности, минимальны в сравнении с асим- птотическими различиями между алгоритмами. Следуя этой иерархии, существуют функции показательные и комбинаторные. Есть ли алгоритм, сложность которого растет даже быстрее, чем при комбинатор- ном взрыве? Да. Более того, мы никогда не найдем функцию, которая растет бы- стрее всех. Если посмотреть на формулу Стирлинга, нам сразу же приходит в голову функция, которая растет быстрее, чем факториал: /(п) = пЛ Естественно, этот процесс можно продолжать до бесконечности, так что не су- ществует функции, которая росла бы быстрее остальных. Что нам напоминает эта последовательность степеней? Конечно, рекурсию на банке дрожжей из предыду- щей главы. Кажется, есть глубокая связь между тем, насколько рекурсивна функ- ция, и тем, насколько быстро она растет. На следующем графике мы можем сравнить рост различных функций, о кото- рых мы говорили. Логарифмическая функция кажется в сравнении с ними почти постоянной. 61
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Числа, которые получаются даже из небольших параметров таких функций, как функция Аккермана, невообразимо большие, они намного больше, чем числа, кото- рые обычно мы имеем в виду, говоря «большое число» — такое как гугол 10100 или гуголплекс 1010 , которые дали название известному интернет-поисковику. К сча- стью, эти функции почти никогда не возникают при решении практических проблем. Самое большее, на что мы можем рассчитывать в обычной жизни, это факториал. Дети, постройтесь по росту Представим, что у нас есть группа детей, которых надо построить по росту. Обычно детей просят выстроиться самих, после чего следует хаотический процесс, когда они все одновременно ищут свое место, сравнивая себя с другими детьми. В компьютер- ном вычислении мы должны сравнивать пары детей последовательно. Посмотрим, как это можно сделать. Представим себе, что дети стоят в одном ряду в произвольном порядке. Скажем первому ребенку, чтобы он сравнил себя со вторым. Если он выше него, они должны поменяться местами. Теперь переходим ко второму месту в ряду. Ребенок, который стоит на этом месте, должен сравнить себя с третьим и поменяться с ним места- ми, если он выше. Повторяем этот процесс, пока не дойдем до конца. Но мы еще не закончили; теперь придется вернуться в начало и повторить процесс столько раз, сколько это необходимо. Мы закончим только тогда, когда пройдем по всему ряду и при этом не последует ни одной перемены мест. Этот алгоритм сортировки, называемый сортировка пузырьком, достигает це- ли, хотя он и не слишком эффективен. Предположим, что у нас есть список, состав- ленный задом наперед. Это наихудший случай для сортировки пузырьком, потому что здесь потребуется максимальное число этапов, и на каждом этапе будет одно и то же число сравнений. 5 4 3 2 1 После первого этапа поменяем числа местами следующим образом. 4 3 2 | 1 5 Всего мы сделали четыре сравнения и четыре перестановки. После второго этапа ситуация будет следующая. 3 I 2 I 1 I 4 I 5 62
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Мы сделали четыре сравнения и три перестановки. После третьего этапа у нас получится: 2 13 4 5 Это всего четыре сравнения и две перестановки. Последний этап перестановок даст нам: 1 2 3 4 5 Получаются четыре сравнения и одна перестановка. Затем нужен еще один этап, в котором не будет перестановок, но будут четыре сравнения. Общее число шагов следующее: 4 + 3 + 2 + 1 + 4-6, где первые четыре члена — это перестановки, и их число равно сумме первых на- туральных чисел до 4. Последний член — это общее число сравнений, по четыре на этап при шести этапах. Поскольку сумму всех натуральных чисел до п можно записать как: и (и — 1) 2 общее время, которое требуется для исполнения алгоритма, в худшем случае равно: n(n-i) , Зи2 п л где первый член — это число перестановок, а второй — число сравнений. Это опре- ** 2 деленно полином, доминантный член которого равен и , значит, высшая асимпто- тическая граница указанного алгоритма — О(п2). Часто полезно также вычислить средний случай. В этом случае можно доказать, что он того же порядка, О(п2). Заметим, что и — это число сортируемых элементов, а предыдущая формула пред- ставляет собой время, которое требуется на исполнение алгоритма как функции с входным показателем п. Время чрезвычайно важно, поскольку это невосполни- мый ресурс. Эффективность обычно означает «за наименьшее возможное вре- мя», но это не то время, которое мы измеряем в секундах. Мы посчитали число шагов алгоритма, предположив, что эти шаги имеют более или менее одинаковую длительность. Время, которое требуется алгоритму, обозначим как его временную сложность. На самом деле можно найти алгоритмы и получше, поскольку сортировка пу- зырьком считается неэффективным алгоритмом. Выбирая среди лучших, сосредо- точимся на алгоритме, который легко описать. 63
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Сортировка слиянием, или mergesort, базируется на двух идеях: легче сорти- ровать маленький список, чем большой («разделяй и властвуй»)', и легче ском- бинировать два сортированных списка, чем два несортированных списка. Так что сортировка слиянием делит входной массив на два массива равных размеров (плюс- минус один элемент при нечетном количестве). К двум оставшимся массивам снова применяется та же процедура, то есть они делятся на два до тех пор, пока у нас не останутся списки с нулем элементов или с одним элементом. Этот алгоритм пред- ложил Джон фон Нейман. Посмотрим, как он работает. На первом этапе мы рекурсивно опускаемся до массива единичного размера. Затем мы поднимаемся, сливая массивы одного уровня. Начиная с первого эле- мента каждого списка мы сравниваем элементы и записываем меньший в массив следующего уровня, одновременно продвигаясь на одну ступень вверх. В другом массиве мы остаемся в той же позиции. 64
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Подъем сложнее, чем спуск, поэтому сосредоточимся на этом этапе. Рассмотрим сравнения, которые нужно осуществить. В худшем случае все п элементов уровня бу- дут участвовать в сравнении, то есть общее число сравнений на уровень будет О(п). Обратим внимание, что структура имеет древовидную форму. В нашем приме- ре надо сделать максимум четыре шага, это глубина дерева, обозначаемая через р. Сколько шагов нам пришлось бы сделать, если бы вместо 10 элементов у нас было 100? Сначала мы бы скомбинировали списки из одного элемента, затем — из 2, затем — из 4, из 8, 16, 32, пока не дошли бы до двух списков из 64 элементов, которые в итоге слили бы в один список. Что нам напоминает эта последователь- ность? Мы возводим два в степень, равную числу уровней. Мы немного схитрили, поскольку точность нас не интересует. На самом деле на каждом уровне у нас будут степени количества элементов, находящихся на этой ступени (конечный массив со- держит 100 элементов, а не 128), поэтому вычисленное число уровней также при- близительно. Итак, глубина связана с числом элементов следующей формулой: п = 2р. Отсюда следует, что р = Inn. В этот раз мы не посчитали количество перестановок. Легко увидеть, что в сор- тировке будет максимум п перестановок на один уровень, поэтому границей каждого уровня останется О(п). Следовательно, граница всего алгоритма — это число срав- нений на уровень, умноженное на число уровней: O(np) = O(n Inn). Эта граница справедлива как для самого худшего случая, так и для среднего. Так как Inn растет медленнее, чем п, то nlnn лучше, чем п2. Сортировка слиянием лучше сортировки пузырьком, и действительно, это один из лучших алгоритмов сортиров- ки общего назначения. Кажется, что средний случай и худший случай равны, но это не так: существуют такие алгоритмы, как быстрая сортировка (quicksort), при которой худший случай предполагает работу с уже отсортированным массивом, и тогда алгоритм исполня- ется согласно О(п2), в то время как в среднем случае он похож на сортировку сли- янием, O(n Inn). 65
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Следуя по маршрутам: алгоритмы и теория графов Кёнигсберг, ныне Калининград, был древней столицей Пруссии и городом, где родился, жил и умер великий философ Иммануил Кант. Город пересекает река Преголя, омывающая два острова; в XVIII веке они были связаны семью мостами, шесть из которых соединяли острова с одним из берегов реки, а седьмой соеди- нял острова друг с другом. Представим себе, что Кант однажды решил совершить прогулку, во время которой он поставил себе задачу пройти через все мосты, при- чем через каждый из них — только один раз. Возможно ли это? Кант ответа так и не получил, но зато это сделал Леонард Эйлер (1707—1783). Он представил бе- рега и острова в виде четырех точек — узлов, а мосты — в виде ребер и доказал, что для того чтобы пройти по каждому ребру только один раз и вернуться в исход- ное место, необходимо четное число ребер на каждый узел (для входа и выхода). Но в Кёнигсберге было четыре нечетных узла, так что решить проблему оказалось невозможным. Мосты Кёнигсберга и их граф. Это решение очень простое. Удивительно, что если мы немного изменим про- блему и зададимся вопросом о маршруте, который проходил бы через каждый узел, а не по каждому ребру (что известно как гамильтонов граф, в противоположность эйлерову), вопрос становится намного сложнее: насколько мы знаем, его сложность возрастает экспоненциально. Проблема мостов Кёнигсберга считается первой проблемой теории графов, ма- тематической дисциплины, которая находит широкое применение в компьютерном вычислении, естественных науках и социологии. Концептуально граф — это мо- дель, которая помогает нам визуализировать проблему с помощью различных марш- рутов между узлами. В графе ребра могут идти в обоих направлениях или только 66
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ в одном, в последнем случае мы говорим об ориентированных графах. Мы также можем назначить ребрам свойства, обычно в виде чисел (например, для обозначения длины ребра). Теперь подумаем о Facebook. Это социальная сеть, которую также можно смо- делировать с помощью графов. Каждый пользователь — это узел, соединенный с другими узлами отношениями дружбы, или ребрами. Узел Пепе имеет ребро с уз- лом Мария тогда и только тогда, если на Facebook существует отношение дружбы между Пепе и Марией. Теперь представим себе, что мы хотим сгруппировать людей на Facebook в соответствии с их общими интересами и отношениями дружбы, кото- рые представлены ребрами. Подумаем, что каждому ребру можно присвоить число. Это число — количество страниц на Facebook, которые являются общими для обоих узлов. Если Пепе подписан на музыкальную страницу группы Grateful Dead, еще на одну музыкальную страницу Нила Янга, а также на страницу Майлса Дейвиса, а Мария подписана на первые две и на страницу группы Beatles, то число их общих музыкальных интересов равно двум. Задача в том, чтобы найти, скажем, 500 раз- личных групп пользователей Facebook, в каждой из которых было бы наибольшее количество общих вкусов. Это позволяет нам делать пользователям предложения, или так называемый индивидуализированный маркетинг. На следующем рисунке мы видим граф, который состоит из пяти групп, три из них довольно большого раз- мера и две состоят из одного-единственного узла. Обратим внимание, что эти группы являются связными графами, а не ориенти- рованными: не существует замкнутого маршрута, который выходил бы из одного узла и возвращался в него же. Такая структура известна как дерево, потому что если 67
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ мы возьмем в качестве начала любой узел, то можем нарисовать граф, как показано на рисунке. Существуют различные эффективные алгоритмы построения графа, например алгоритм Крускала, о котором мы расскажем дальше. Начнем: (а) создадим и групп только с одним узлом и (Ь) отсортируем список входящих ребер от большего к меньшему. Теперь, пока у нас осталось больше, чем k — 1, ребер (пока мы не совершим п — k итераций) или пока у нас не будет k группировок: — берем самое первое ребро из списка (с самым большим весом); — если это ребро соединяет две различные группы (то есть не образует цикл), включаем его в исходящий список; — стираем ребро из входящего списка; — если число групп равно k, мы завершили; в противном случае повторяем ите- рацию. Это то, что известно как жадный алгоритм, потому что он всегда пытается вы- брать ребро большего веса. Проанализируем его сложность. Петля, по которой идет итерация ребер, повторяется максимум n — k раз. Поскольку k всегда меньше п, доминантный член — пи, следовательно: O(n-k) = O(n). 68
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Сложность первой предварительной процедуры, (а), равна О(п), поскольку каждое дерево из одного узла создается одним шагом, и существует п узлов. Сложность второй предварительной процедуры, (Ь), равна О (alna), если ис- пользовать сортировку слиянием, где а — число ребер. Это число не может быть больше, чем: п(п — 1) 2 поскольку каждый узел может быть соединен максимум с и — 1 узлами; существует п узлов, и нужно посчитать каждое ребро только один раз (отсюда деление на два). Предыдущее выражение равно приблизительно и2. Следовательно, сложность (Ь) равна: О(п21пп2)= О(п2 • 21п п)= О(п21пл). Второй шаг связан со свойством логарифмов, а третий получается, если прене- бречь константами. Следовательно, общая сложность нашего алгоритма равна: О(п + п2 1пп + п), где два первых члена представляют собой сложность процедур (а) и (Ь). Вспомнив, что когда суммируются несколько членов у одного предела, учитывается только тот, который возрастает быстрее, мы можем упростить предыдущее выражение: O(n2 Inn). Подобный анализ групп выходит за рамки Facebook. Он имеет применение в экологии, где с его помощью моделируются различные среды обитания, связанные между собой; в генетике, где используется для группировки генов; в социологии, где служит для моделирования реальных или виртуальных социальных сетей; в об- работке изображений, где проводятся попытки провести различия между схожими областями на разных изображениях; в химии, где анализируются похожие вещества; в магнитно-резонансной томографии, где он используется для группировки похожих тканей на изображении; в глубинном анализе данных, маркетинге и еще очень мно- гих областях. Теперь немного изменим проблему. При данном графе, связном, неориентиро- ванном и взвешенном (с ребрами, имеющими вес), его дерево представляет собой 69
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ субграф, который покрывает все узлы графа, не проходя ни через один из них боль- ше одного раза. Минимальное покрывающее дерево (или минимальное остовное де- рево), как показано на следующем рисунке, — это дерево, создать которое можно с наименьшими издержками с учетом общего веса ребер графа, так что если в исход- ном графе узлы с и / связаны двумя ребрами, одно с весом 2, а другое — с весом 4, минимальное покрывающее дерево будет содержать ребро с весом 2, а не с весом 4. Минимальные покрывающие деревья позволяют нам пройти через все узлы гра- фа наиболее эффективным образом. Применить этот алгоритм можно при разработ- ке электрических сетей, коммуникаций или трубопроводов. Мы преобразовали проблему, поскольку теперь ищем минимальный, а не макси- мальный вес, однако алгоритмы остались почти прежними. В алгоритме Крускала, например, список сортируется от меньшего к большему, а не от большего к меньшему, и мы проводим итерацию п — 1 раз, а не п — k. Но сложность алгоритма будет той же. Как выглядит применение метода прямого перебора к минимальному покрываю- щему дереву? (а) Создается покрывающее дерево. Назовем его М — минимальное пробное. При этом существуют промежуточные покрывающие деревья. (Ь) Создается еще одно покрывающее дерево. (с) Оно сравнивается с М. Меньшее исключается, и М назначается другому дереву. 70
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Конечное М будет минимальным покрывающим деревом. Какова сложность этого алгоритма? Как (а), так и (Ь) предполагают столько ша- гов, сколько существует ребер. Предположим, что существует максимальное число, п — 1 ребер при п узлах. Поскольку (с) — это один или два шага (константа), ис- ключим его из анализа. Петля будет повторяться столько раз, сколько существует деревьев. Можно доказать, что в графе с максимальным числом ребер существует пп ~ 2 покрывающих деревьев. Следовательно, сложность этого алгоритма равна О((п — 1)пп-2)= О(пп-1), то есть она практически факториальна! Разница между полиномиальным О(п2 Inn) Крускала и методом прямого перебора огромна. СТРУКТУРЫ ДАННЫХ ДЛЯ ОПТИМИЗАЦИИ АЛГОРИТМОВ Существует алгоритм, который вместо того, чтобы проходить по ребрам, проходит по узлам, - алгоритм Прима. Интересно при этом, что используется матрица смежности, в которой клетка М содержит вес ребра, соединяющего узел i с узлом j (или ноль, если такого ребра не существует). Если мы применим этот алгоритм только с матрицей смежности, его сложность будет порядка О (л2) - хуже, чем при применении алгоритма Крускала. Похоже, это происходит из-за того что матрица не может быть отсортирована. Следовательно, надо провести линейный поиск, который предполагает обход примерно половины ряда, то есть л/2. Так как мы осуществляем этот поиск для каждого узла, получится 0 (л2/2). Идея - в разнице между массивом и матрицей. С первым мы можем осуществлять некоторые манипуляции, а со второй - нет, хотя оба этих понятия в компьютерном вычислении известны как структуры данных. Существует много стандартных структур данных, например стеки, дере- вья, и все они лучше или хуже адаптированы к различным алгоритмам. Алгоритм Прима можно улучшить, если ввести другую структуру данных - кучу (heap), которая оптимизирует поиск. Ком- бинация обеих структур данных, матрицы и кучи, теперь позволяет сделать так, чтобы сложность была от 0 (л1пл) до 0 (л21пл), в зависимости от числа ребер: чем меньше ребер, тем алгоритм Прима лучше алгоритма Крускала: используемые структуры данных могут служить для изменения сложности алгоритма. Часто, хотя и не всегда, эти структуры данных занимают довольно много памяти, и программистам очень знаком этот выбор между требуемым временем и объемом используемой памяти, когда чем-то одним необходимо пожертвовать. 71
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Классы сложности Мы видели, что разные алгоритмы могут иметь разную сложность, даже если они направлены на решение одной и той же проблемы. Это приводит нас к вопросу о том, какова ингерентная (внутренняя) сложность проблемы, а не сложность отдельных алгоритмов. Эта ингерентная сложность задана границами алгоритмов. Естественно, если мы найдем рационально эффективный алгоритм, проблему можно отнести к легким. Если же мы докажем, что такого алгоритма не существует, значит, проблема ингерентно сложна. Если анализ алгоритмов сложен, задача становится титанической. Как можно думать обо всех возможных алгоритмах для решения проблемы? Это нелегко, но именно эту тяжелую задачу поставила теория вычисли- тельной сложности. Нет ничего странного в том, что в этой области было получено несколько потрясающих результатов и при этом она полна разочарований, словно Святой Грааль, который появляется перед Персивалем на расстоянии вытянутой ру- ки, но остается недостижимым. В этой проблеме нас интересует наиболее эффективный способ ее решения. В большинстве случаев речь идет о необходимом времени, но иногда нас интересуют и другие факторы, такие как количество памяти, то есть пространство, необходимое для решения проблемы, или глубина деревьев, применяемых для решения некоторых проблем. Мы определили, что сортировка множества из п элементов может быть осу- ществлена за время O(nlnn). Можем ли мы уменьшить это время? В общем случае не можем, поскольку это уже минимальное время. Вычислительная сложность про- блемы СОРТИРОВКА — O(nlnn). Однако этот результат неплох, и это означа- ет, что проблему можно решить эффективно. Но что значит «эффективно» с объективной точки зрения? На этот вопрос нет простого ответа. Программисты ищут алгоритмы, которые были бы не хуже, чем О (и2). Однако предметом теории сложности является любая проблема, решаемая за полиномиальное время, которая имеет границу O(nfc) для какого-то натураль- ного числа k. На первый взгляд это кажется абсурдным. Эффективен ли алгоритм, исполняемый при О (и100) и не перестающий быть полиномом? На практике такие алгоритмы редки. Большинство имеет малый показатель степени у доминантного члена полинома, скажем до О(п5). 72
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Теперь определим класс проблем с похожей сложностью. Классы — это множе- ства. Их элементы — это проблемы. Определим класс проблем, имеющих, самое большее, полиномиальную сложность, и назовем его Р. Все три проблемы, которые мы рассмотрели в этой главе, — сортировка, группировка и минимальное покры- вающее дерево — это элементы множества Р (можно использовать более корот- кое выражение «принадлежат Р»), поскольку, хотя в случае с теорией графов мы могли бы получить алгоритмы комбинированной сложности, нам удалось найти по- линомиальные алгоритмы, и именно это определяет сложность проблемы и лучший алгоритм для ее решения. ХАРАКТЕРНЫЕ ПРОБЛЕМЫ, ПРИНАДЛЕЖАЩИЕ Р, ИЛИ КАК НАЙТИ МОНОГАМНУЮ ПАРУ Р принадлежат некоторые следующие характерные проблемы: сложение и умножение чисел; проблема связности графа; проблема, является ли граф деревом; содержатся ли в графе треу- гольники; можно ли разделить граф на два множества дизъюнктных узлов таким образом, чтобы все ребра принадлежали элементам разных множеств (двудольный граф); существование эйле- ровых графов и кругов; знаменитая проблема максимального паросочетания. Паросочетание в графе - это набор попарно несмежных ребер, что немного похоже на жизнь моногамной пары. Джек Эдмондс (1934) открыл полин< миальный алгоритм для этой проблемы в своей осново- полагающей статье 1965 года, озаглавленной гесьма поэтично - «О путях, деревьях и цветах», в которой, кроме указанного алгоритма, началось исследование значения Р и разрешимости. Этот алгоритм открыл двери для решения за полиномиальное время важных проблем оптими- зации, известных как линейное программирование. Для анализа этих тем вернемся к нашим старым знакомым, машинам Тьюринга, которые позволяют абстрактно думать о таких проблемах, как проблема остановки, и математически доказывать их свойства. В теории сложности машины Тьюринга будут выполнять ту же функцию, просто сейчас нам нужно ввести еще одно понятие: время, необходимое машине Тьюринга на решение проблемы. Определим функцию Тлг(п), которая вычисляет время, необходимое машине Тьюринга М на решение проблемы, при этом в качестве параметра выступает длина и входной цепочки. В дальнейшем в нашей теории любой машине Тьюринга будет назначена указанная функция. 73
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Как мы видели в предыдущей главе, машины Тьюринга все одинаково хорошо справляются с проблемами, которые они могут решить; но они неодинаково хороши, если сравнивать проблемы, которые можно решить более или менее эффективно. Машины с тремя лентами будут более эффективными — из-за полиномиального фактора, — чем машины с одной лентой. И компьютер будет эффективнее машины Тьюринга, также из-за полиномиального фактора. Существует движущаяся скульптура Артура Гансона под названием «Машина с бетоном» (она изображена ниже), которая состоит из тринадцати зубчатых меха- низмов, установленных таким образом, что каждый движется в 50 раз медленнее, чем предыдущий. Первый механизм присоединен к мотору, вращающемуся 210 раз в минуту, а последний — к бетонному блоку и не вращается вообще. Нетрудно дога- даться, что этот механизм не будет двигаться все время, которое осталось для суще- ствования Вселенной. Если бы нам было нужно осуществить расчет по последнему механизму, то ясно, что этот расчет был бы физически невозможен. «Машина с бетоном», скульптора Артура Гансона, находящаяся в музее Массачусетского технологического института в Кембридже (США). Теперь вспомним тезис Чёрча — Тьюринга: любая вычислимая проблема вычис- лима с помощью машины Тьюринга. Сделаем еще более сильное заявление: скажем, что любая физически решаемая проблема решается с помощью машины Тьюринга только с полиномиальным снижением эффективности: если проблема решается на любом другом устройстве в t шагов, то на машине Тьюринга она решится за коли- чество шагов, максимум на f шагов большее, где с — константа. 74
ВЫБРАТЬ ЛУЧШИЙ ПУТЬ: ТЕОРИЯ АЛГОРИТМОВ Мы не знаем, истинна ли эта более сильная формулировка тезиса Чёрча — Тьюринга. Квантовое вычисление, как мы увидим, ставит ее под сомнение. Но если это так, предполагается, что Р не является произвольным понятием: у инопланетной цивилизации было бы такое же определение эффективности, что и у нас. В любом случае, примем тезис, что проблемы, принадлежащие Р, могут быть решены эффек- тивно. Все проблемы, сложность которых больше, назовем нерешаемыми. 75

Глава 4 Проблема коммивояжера: отношение Р и NP Представим себе, что мы очень любим кроссворды, как многие криптографы Блетчли-парка. В воскресенье мы точим карандаш, кладем рядом резинку (только неисправимый оптимист решает кроссворды ручкой) и готовимся принять сложный вызов из нашей любимой газеты. После нескольких минут усиленной концентра- ции, во время которой мы угадываем все предсказуемые слова (химический сим- вол марганца, река в Швейцарии и тому подобное), мы доходим до слова, которое не способны угадать. 24 по горизонтали: сложный, изматывающий. Семь букв, тре- тья — Р. Мы сушим мозги еще полчаса, а потом в плохом настроении отбрасываем газету и идем перекусить. Забываем о кроссворде до следующего воскресенья, и тут О в газете читаем ответ: СУРОВЫЙ. «Ну конечно же!» — говорим мы себе и хлопа- ем себя ладонью по лбу. Ответ был так очевиден, но мы его не нашли. В вычислении проблем часто бывают похожие ситуации: сначала проблему трудно решить, но как только решение найдено, его очень просто проверить. Все как в кроссвордах. Так же и с машинами «Энигма»: если мы знаем ключ, а также порядок роторов и связи на коммутационной панели, прочитать сообщение очень легко. Вилли Ломан, герой «Смерти коммивояжера», известной пьесы американского писателя Артура Миллера, возвращается домой после длительной поездки по 30 го- родам и деревням страны. Коммивояжер устал и сыт по горло своей работой, но что больше всего его беспокоит, так это то, что каждый раз, рассматривая на карте свой маршрут, он находит способ проехать его за меньшее время. Как любой старатель- ный человек, он хочет составить лучший маршрут, но у него не получается. «Нет ли какого-нибудь быстрого способа найти лучший маршрут?» — спрашивает себя Ломан. Проблема Ломана — это, конечно же, знаменитая проблема коммивояжера, или TSP (Travelling Salesman Problem). Речь в ней о том, чтобы найти оптималь- ный маршрут с кратчайшей дистанцией для коммивояжера, которому нужно объ- ехать п городов. Здесь явно идет речь о теории графов. Каждый город — это узел, у каждого ребра есть вес, то есть расстояние, граф связный и неориентированный, 77
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP как и эйлеровы графы в Кёнигсберге, только там требовалось обойти все ребра, а в TSP нужно обойти все узлы. Интуитивно нам кажется, что решение будет по- хожим, ведь в эйлеровом графе нужно было просто посчитать число ребер на один узел. К нашему удивлению, маршрут Ломана, который в математике называется гамильтоновым графом, составить намного сложнее. Если мы применим метод грубой силы (или прямого перебора — мы уже приво- дили это название), исследуя все возможные перестановки узлов, у нас получится комбинаторная сложность О(п!) — как и при наивном подходе, применимом к по- крывающему дереву. Представим себе, что у нас полный граф, в котором все узлы связаны со всеми остальными ребрами. В этом случае, самом сложном для решения, ясно, что в первом узле у нас есть п возможностей для выбора ребра; во втором — п — 1, потому что мы должны вычесть ребро, по которому уже прошли; в третьем — п — 2, и так далее. Следовательно, сложность худшего случая алгоритма грубой силы равна п(п — 1) (п — 2) ... п • 1 = п/ Можно ли составить алгоритм за полиномиальное время по методу алгоритма Крускала? Мы этого не знаем. Если немного изменить условия, появятся две абсо- лютно разные проблемы с точки зрения сложности, и алгоритмы, которые хорошо работают в одном случае, теряют эффективность, с чем и столкнулись криптоанали- тики при изменениях в работе «Энигмы». Теперь вместо того чтобы искать оптимальный гамильтонов граф, зададимся вопросом, можем ли мы найти меньший гамильтонов граф, чем другой заданный гамильтонов граф, 7£о. В отличие от общей проблемы коммивояжера, в которой тре- буется, чтобы мы определили лучший маршрут, это проблема разрешения. К со- жалению, мы не сдвинулись с места: алгоритм грубой силы, кажется, единствен- ный вариант. Однако предположим, что кто-то магическим образом предоставил нам гамильтонов путь который лучше, чем 7£о. Проверить эффективность очень просто — вся проверка сводится к тому, чтобы суммировать вес ребер и сравнить результат выполнения алгоритмов! Проблемы разрешения, в которых поиск решения кажется гораздо сложнее, чем его проверка, образуют отдельный класс сложности, известный как NP. Мы сказали «кажется», потому что сегодня мы не знаем, действительно ли эти пробле- мы трудно решить. Выражаясь более формально, проблема решения L принадлежит NP, если мы можем найти сертификат, который подтверждает положительный ответ на проблему в течение полиномиального времени. 78
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ NP Формально можно сказать, что проблема решения £ принадлежит NP тогда и только тогда, если существует полином р и машина Тьюринга Ми, так что для каждой возможной входной цепочки х длины п существует цепочка и, максимальная длина которой равна р(л), и Mu(x) - 1, то есть машина Тьюринга, определенная и, подтверждает положительное решение проблемы £. Эта цепочка и известна как сертификат £. Так, например, если у максимальной входной цепочки длина в 150 знаков, то мы должны найти цепочку и максимум, скажем, в 6л5-2л3 + Юл - 1 = - 455618251499 знаков, и эта цепочка и будет определением машины Тьюринга. Выражаясь проще, и - это программа, которая дает положительный ответ на проблему £. Прежде всего подчеркнем, что NP принадлежат только проблемы разрешения. Так, NP принадлежит вариант разрешения TSP, но не проблема наиболее общей функции нахождения оптимального маршрута. Второе замечание состоит в том, что поиск сертификата — это алгоритм, причем этот алгоритм не решает проблему, а проверяет ее решение. Наконец, время, необходимое для признания сертификата хорошим, то есть время исполнения алгоритма, полиномиально относительно вход- ной цепочки. Вернемся к нашему примеру: TSP как проблема разрешения. Каким будет воз- можный сертификат для этой проблемы? Безусловно, гамильтонов граф понима- емый как сортированный список узлов, — это сертификат (если действительно лучше, чем и проверить его можно за полиномиальное время. Заметим, что любая проблема, принадлежащая Р, также принадлежит NP. Действительно, если решение проблемы полиномиально, то и сертификат решения также полиномиален. То, что любая проблема, принадлежащая Р, принадлежит NP, выражается как то, что Р — подмножество NP: PCNP. Р может быть собственным подмножеством NP, либо Р может быть равно NP. И это самая важная открытая проблема теории вычислительной сложности и одна из самых важных проблем всей математики: Р = NP или Р Ф NP. 79
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ PHNP ПОНЯТИЯ МНОЖЕСТВ Начиная с этого момента мы будем постоянно пользоваться понятием множеств. 1. Два множества А и В равны, если в них входят одни и те же элементы. Это обозначается следующим образом: А = В. 2. Множество А является подмножеством множества В (обозначается как А £ В) тогда и толь- ко тогда, если все элементы А принадлежат В. Мы также говорим об отношении включения А в В. Другими словами, если х принадлежит А (хе А), это предполагает, что хе В. Заметьте, что это не означает обратного отношения. Возможна ситуация, когда существуетх е В, кото- рый не принадлежит/!, или наоборот, что всех элементов, принадлежащих В, принадлежат А. а. В первом случае А и В неравны согласно определению (1). Мы говорим, что А - это собственное подмножество В. Обозначим это как/! с В или А £ В. Ь. Во втором случае А и В равны. То есть А и В равны тогда и только тогда, если А — под- множество В, а В - подмножество А. 3. Быть элементом множества и быть подмножеством не одно и то же. В нашем случае классы - это множества, а проблемы - их элементы. Отношение включения между собой могут иметь классы, но не проблемы. 4. Дополнение множества А, которое мы обозначим А, - это множество всех элементов, кото- рые не принадлежат А, но принадлежат большему множеству, называемому универсальным, которое содержит все элементы (в нашем случае - все проблемы). 5. Пересечение множеств А и В, обозначаемое как А п В, - это множество элементов, кото- рые входят как в А, так и в В. В логике это соответствует булевому оператору конъюнкции: хе А лхе В. 6. Объединение двух множеств А и В, обозначаемое как А и В, - это множество элементов, которые принадлежат либо А, либо В, либо обоим. В логике это соответствует булевому опе- ратору дизъюнкции: х е A v х е В. Утверждение, что Р #= NP, не означает, что Р NP (было бы корректнее пи- сать Р £ NP), но это представление настолько распространено, что мы его примем. Подавляющее большинство экспертов считает, что Р Ф NP, хотя это не доказано. Теперь обратим внимание на дополнения к проблемам разрешения. Они получа- ются при изменении да на нет, и наоборот, как показано на рисунке на следующей странице. При данной проблеме разрешения TSP ее дополнение следующее: явля- ются ли все гамильтоновы циклы более или такими же затратными, что и данный 80
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP цикл Если у TSP есть сертификат утвердительного ответа, то у дополнения — сертификат отрицательного в качестве контрпримера: гамильтонов цикл %, затрат- нее, чем %о. Входная цепочка Проблема, дополнительная к PROB Соотношение между проблемой разрешения и дополнением к ней. Класс проблем, дополнения которых принадлежат NP, называется coNP, хо- тя не доказано, что эти классы отличны друг от друга. Пересечение coNP и NP, то есть проблемы, принадлежащие обоим множествам, относятся к классу Р, потому что мы можем найти за полиномиальное время сертификаты решений — сам алго- ритм — как для положительного, так и для отрицательного ответа: Р с NP П coNP. Отношение Р, NP и coNP, если NP Ф coNP. Мы можем доказать, что: если NP Ф coNP, то Р Ф coNP. 81
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP Если бы мы могли доказать, что NP Ф coNP, наша проблема была бы решена. К сожалению, это так же сложно, как доказать, что Р NP. Впрочем, эксперты скептически относятся и к возможности доказать, что NP = coNP либо Р = NP. Отношение Р и NP и полнота NP Когда в 1995 году Эндрю Уайлс (1953) доказал последнюю теорему Ферма, это принесло ему значительную славу, но ни одной премии уровня Нобелевской или ее эквивалента в математике — Филдсовской. Спустя пять лет, через некоторое вре- мя после того, как Уайлсу все же была вручена премия, хоть и меньшего значения, Институт Клэя, считая сложившуюся ситуацию несправедливой, установил премию за решение каждой из семи проблем экстраординарной сложности в размере милли- она долларов. Так через сто лет после 23 проблем Гильберта вновь была предложена программа исследований в математике и математической физике. ПРОБЛЕМЫ ТЫСЯЧЕЛЕТИЯ Семь проблем Института Клэя, названные проблемами тысячелетия. 1. Гипотеза Ходжа (алгебраическая геометрия). 2. Гипотеза Римана (теория чисел и анализ). Содержится в числе проблем Гильберта. 3. Гипотеза Пуанкаре (топология). Решена Григорием Перельманом в 2003 году. 4. Существование и гладкость решений уравнений Навье - Стокса (математическая физика и дифференциальные уравнения). 5. Существование и ненулевой дефект массы теории Янга - Миллса (квантовая физика). 6. Гипотеза Бёрча - Свиннертон-Дайера (теория чисел). 7. Равенство классов Р и NP (теория вычислительной сложности). Включение проблемы равенства Р и NP в список проблем тысячелетия дает представление о сложности, с которой сегодня сталкиваются теоретики. Существует крайне важный результат в теории NP. Оказывается, существует подкласс NP, содержащий все самые сложные проблемы NP. Причем все самые сложные проблемы NP с точки зрения сложности эквивалентны, то есть одни из них 82
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP сводятся к другим. Говоря о вычислимости, мы пользовались машинами Тьюринга для того, чтобы свести невычислимую проблему А к проблеме В, невычислимость которой мы хотим доказать. Тот же способ может быть применен в теории слож- ности, но сейчас мы будем сводить одну машину Тьюринга к другой, имея в виду ее вычислительную сложность. Нас интересует полиномиальное сведение, потому что интуитивно понятно: если проблему можно решить за полиномиальное время, это решение будет эффективным. Таким образом, если проблема А сводится к В за по- линомиальное время Р(п) и, кроме того, мы знаем, что решение проблемы А пред- ставляет собой алгоритм, который может быть выполнен за максимальное время Т/п), притом что ТА(п) = Tfi(n) + Р(п) (см. следующий рисунок), если ТДп) полиномиально или выше, a Tfi(n) того же порядка, то: O(Tfi(n)) = О(ТЛ(п)). Иллюстрация механизма сведения. Итак, возвращаясь к самым сложным проблемам NP: все они сводятся друг к другу за полиномиальное время. Более того, любая проблема NP сводится к одной из этих сложных проблем. Говоря о сведениях, мы будем подразумевать, что они полиномиальные. Будем рассматривать отношения включения между множества- ми, такие как Р с NP, как отношения между сложностью проблем, являющихся элементами каждого класса, а также как выражение мощности, которой обладает каждый класс. Говоря Р £= NP, мы утверждаем, что NP, по меньшей мере, так же мощно, как и Р, если не больше. Алгоритм эффективного решения проблемы в NP позволит нам эффективно решать все проблемы, входящие в Р. Следовательно, если хотя бы одна из этих сложных проблем имеет алгоритм решения за полиномиальное время, все сложнейшие проблемы NP можно было бы решить за полиномиальное время. Другими словами: 83
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP Р = NP. Определим любую проблему как NP-сложную тогда и только тогда, если все проблемы NP сводятся к Кроме того, если проблема является NP-сложноп, она принадлежит NP ( это проблема разрешения), и мы говорим, что эта проблема NP -полная. NP-полные проблемы — наиболее сложные из класса NP. Диаграмма Венна, приведенная ниже, иллюстрирует отношения между этими классами. Стивен Кук (1939) и Леонид Левин (1948) независимо друг от друга доказали самый важный результат теории вычислительной сложности: существует по мень- шей мере одна NP-полная проблема. Открытие NP и полноты NP относительно недавнее, хотя эти понятия уже намечались в письме, которое Гёдель написал фон Нейману в 1956 году и в котором он выражал надежду на то, что можно будет проверить решение за полиномиальное время, и это могло бы утешить тех, кто уперся в своих исследованиях в нерешаемость Entscheidurigsproblem. Иными сло- вами, Гёдель предполагал, что Р = NP. Это письмо было забыто до 80-х годов прошлого века, и похоже, что фон Нейман, который в то время был уже очень бо- лен, так и не ответил на него. Юрис Хартманне (1928) и Ричард Стирнс (1936) в 1962 году заложили основы новой теории в статье «О вычислительной сложно- сти алгоритмов». Позже, в 1965 году, Алан (Белмонт) Кобэм (1927—2011) дал формальное определение классу Р как классу вычислимых проблем. Джек Эдмондс (1934) и Кобэм сделали вывод о том, что Р — это класс проблем, для которых 84
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP существуют «быстрые» алгоритмы решения. Эдмондсу принадлежит довольно ин- тересное размышление: для практических целей разница между [полиномиальным] и экспоненциальным уровнями важнее, чем разница между [вычислимым и невычислимым]. Стивен Кук доказал свою теорему в 1971 году. В ней он в первый раз ввел по- нятия NP и полноты NP и доказал, что существует NP-полная проблема. Эта про- блема, известная как SAT, представляет собой вопрос, может ли булева формула, то есть формула, состоящая только из операторов, переменных и скобок, при неко- торых значениях быть истинной. Используя операторы А, V и —мы можем создать настолько сложную формулу, насколько этого захотим: (Uj А -• U2 A U3) v(u2 А Н3 А-.Н4).. • SAT — это проблема разрешения, состоящая в том, чтобы определить, суще- ствуют ли такие значения и{, и2, иу и4, которые удовлетворяли бы приведенной фор- муле. Мы не находим значения, а просто гово- рим, существуют они или нет. Кук доказал, что эта проблема NP-полная. Лучшим алгоритмом для нахождения значений является экспонен- циальный алгоритм О(2П), который перебирает все возможные комбинации значений. В нем используется 2П, потому что каждая переменная может быть либо единицей, либо нулем (допу- стим выбор одного из двух значений), и этот выбор можно сделать п раз, где п — число переменных. Наконец, в 1972 году, через год после пу- бликации статьи Стивена Кука, Ричард Карп (1935) доказал сводимость 21 полной NP- Стивен Кук доказал, что существует по меньшей мере одна NP-полная проблема — проблема SAT. проблемы между собой, создав сеть сведе- ний (она приведена на следующей странице). 85
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP В этой сети мы видим две уже известные нам проблемы — TSP и SAT, а также ряд других, имеющих большое теоретическое и практическое значение. Некоторые NP-полные проблемы и их типичные сведения. ВКЛАД СОВЕТСКОЙ МАТЕМАТИКИ Примерно в то же время, что и Кук, советский математик, ученик Андрея Колмогорова (1903- 1967), также получил подобный результат, однако из-за холодной войны его доказательство до Запада так и не дошло. Этим математиком был Леонид Левин (1948). В СССР изучение вы- числительной сложности началось благодаря работе Сергея Яблонского (1924-1998), который был основателем советской школы математической кибернетики. Яблонский пришел к выводу о том, что метод грубой силы, или метод полного перебора, неприменим к проблемам, которые мы сегодня называем NP-полными, в связи с чем считал исследования в этой области бес- перспективными. Важен вклад в рассматриваемую сферу и Колмогорова. Его именем названа мера вычис- лительных ресурсов, необходимая для описания объекта,- колмогоровская сложность. Напри- мер, алгоритмическое описание иррационального числа 0,1010010001... ясно и лаконично: увеличивать число нулей на один, а затем писать единицу. Но существуют и другие случаи, когда описание произвольной цепочки символов равно самой этой цепочке: 0,238795429343. При большой длине цепочки ее колмогоровская сложность также очень высока. Что уж говорить о колмогоровской сложности числа л с его количеством знаков после запятой. Колмогоровская сложность тесно связана с таким понятием теории информации, как энтропия. 86
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP Мы уверены, что если будет найден один алгоритм решения хотя бы одной из тысяч известных NP -полных проблем, который исполнялся бы за полиномиаль- ное время, это означало бы решение миллиона проблем и проблемы тысячелетия. Но найти такой алгоритм никому не удалось, а большинство математиков думают, что это невозможно. Другими словами, они предполагают, что: Р * NP. И если найти такой алгоритм очень сложно, то доказать, что его не существует, еще сложнее. Такое доказательство связано с огромными трудностями, хотя в мате- матике есть области, в которых удалось доказать, что нечто невозможно: например, мы знаем, что не существует формулы решения уравнений пятой степени. Теперь подумаем об обобщении машин Тьюринга. Представим себе машину Тьюринга, у которой вместо одной таблицы переходов две. На каждом шаге машина выбирает, какую из двух таблиц использовать, пока не доходит до конечного или до специально обозначенного состояния, которое мы назовем Ядопуск- Если для дан- ной входной цепочки существует последовательность выборов, благодаря которой машина доходит до Ядопуск раньше, чем достигнет конечного состояния, результатом будет единица. В противном случае результатом будет ноль. Такие автоматы извест- ны как недетерминированные машины Тьюринга, их противоположность, которые мы уже использовали, назовем детерминированными машинами. Можно пред- положить, что недетерминированная машина Тьюринга идет по всем возможным маршрутам одновременно; так как каждый путь в каждом узле раздваивается, число путей равно О(2П). Перед нами снова Лернейская Гидра. Подчеркнем, что сконструировать такие машины, которые могли бы раздваи- ваться до неопределенности, на практике невозможно. Мы используем их для того, чтобы представить тип проблем разрешения, для которых существуют эффектив- ные алгоритмы. Можно доказать, что множество проблем разрешения, которые допускает недетерминированная машина Тьюринга за полиномиальное время, рав- но NP. Действительно, буква N в NP означает non-deterministic — «недетермини- рованный». Идея, что эти машины одновременно идут по всем возможным путям, связывает их с массивным параллельным поиском, который в детерминированной машине Тьюринга был бы экспоненциальным. Следовательно, эти машины намного мощнее детерминированных, но доказать это было бы равнозначно тому, чтобы до- казать, что Р =£ NP. 87
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP СВЕДЕНИЕ CLIQUE К SAT Одной из проблем, выдвинутых Ричардом Карпом, была задача о клике (CLIQI ГЕ). Кликой в неори- ентированном графе называется подмножество вершин, каждые две из которых соединены ре- бром. В проблеме спрашивается, существует ли большая клика, чем клика некоторого размера л. В вычислительном варианте этой задачи требу- ется найти в заданном графе клику максимально- го размера. Например, в Facebook мы бы искали максимальную группу пользователей, все члены которой связаны отношениями дружбы между со- бой. Очень просто наметить сведение CLIQUE к SAT. Назначим булеву переменную v, которая будет истинной, если узел i графа - это узел j кли- Ричард Карп получил премию Тьюринга в 1985 году за свое исследование в области теории алгоритмов. ки, у которой больше m £ л узлов в этом графе. Теперь мы можем создать булеву формулу <р, соответствующую следующим условиям. 1. Некий узел являетсяj-м узлом клики, что выражается как v(1 v vj2 v ... v vm v для всех 2. Ни один узел не является j-м и к-м узлом клики одновременно (все узлы появляются только один раз). Это выражается как -w. л -ivrt для всех i,j и к. 3. Если между узлами / и / нет ребра, они оба не могут входить в клику: -ал если ребра (/, /) не существует. Выходит, что (р равно конъюнкции (1), (2) и (3) для всех возможных комбинаций переменных, и мы получаем булеву формулу, которая истинна тогда и только тогда, когда множество v об- разует максимальную клику. Мы свели CLIQUE к SAT. До сих пор мы говорили только о проблемах разрешения. А что происходит с проблемами поиска? В общем случае TSP мы ищем оптимальный путь, а не про- сто ответ: «да» или «нет». В случае с SAT мы ищем, какие значения u2, uy u4... делают формулу истинной. Интуитивно понятно, что эти задачи сложнее, чем соот- ветствующие им проблемы разрешения, следовательно, если Р NP, то проблемы поиска не могут быть решены за полиномиальное время. Однако можно доказать, что если Р Ф NP, то проблему поиска за полиномиальное время можно свести к со- ответствующей проблеме разрешения. Это приводит нас к вопросу о том, каким 88
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP был бы утопичный мир, в котором Р = NP. Назовем этот мир Алгоритмикой — вслед за экспертом в теории сложности Расселом Импальяццо (1963). Следствия из Р = NP Если бы выполнялось P = NP, сложных проблем не существовало бы. Компьютеры были бы способны решать задачи, неподвластные им сегодня: они бы гениально играли в шахматы и могли бы доказать любую математическую теорему, доказу- емую механически. Было бы возможно недоступное нам сегодня применение ис- кусственного интеллекта, связанное с массивным поиском; существовали бы ро- боты, распознающие звуки и обрабатывающие изображения намного лучше, чем человеческие органы чувств. Инженеры располагали бы идеальными средствами проектирования, которые создавали бы неломающиеся самолеты, ядерные заводы, защищенные от аварий, сверхбольшие интегральные схемы (СБИС), оптимальные по проектированию и энергопотреблению... Моделирование было бы настолько совершенным, что мы не ходили бы на стадион, чтобы посмотреть матч, а наблю- дали бы его на голографическом телевизоре, который не только транслировал бы игру, но и позволял бы видеть поле с точки зрения любого игрока. На конгрессах и в кинотеатрах можно было бы обеспечить синхронный автоматический перевод на все языки мира, и этот перевод был бы гораздо точнее, чем сделанный челове- ком. Туристам не нужно было бы подбирать слова, чтобы спросить, где находится банк, потому что их карманный переводчик уже завязал бы от их имени непринуж- денную беседу. Алгоритмы распознавания рукописей помогали бы идентифициро- вать любой почерк. Компьютеры ставили бы диагнозы и подбирали индивидуальное лечение по ДНК. Медицина за годы до развития болезни обнаруживала бы риск для здоровья. Полиция могла бы использовать даже одну-единственную молекулу ДНК, найденную на месте преступления, для определения внешности преступника. Все описанное представляет собой работу алгоритмов, но применительно к ре- шению многих этих задач мы используем только метод прямого перебора, кото- рый часто не работает за полиномиальное время. Если мы докажем, что Р = NP, это будет означать, что существует по меньшей мере один алгоритм, способный решить NP -полную проблему за полиномиальное время. Представьте, что перед вами появился джин, который готов исполнить три желания. Что вы попросили бы? Предусмотрительный человек первым же желанием загадает возможность выполнения всех желаний, которые у него появятся в будущем. Вот что дал бы нам этот первый алгоритм, который мог бы использоваться для улучшения других 89
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP алгоритмов, которые, в свою очередь, улучшили бы другие, пользуясь алгоритмами оптимизации, которые сегодня экспоненциальны, но в стране Алгоритмике они вы- полнялись бы за полиномиальное время. Интересно показать разницу между решением проблемы и его проверкой. Нужно быть Моцартом, чтобы написать концерт для кларнета, но «проверить» этот концерт гораздо проще — достаточно лишь насладиться написанной музыкой. Проверить, хорошо ли спроектировано здание, гораздо проще, чем спроектировать его, проверить математическое доказательство проще и быстрее, чем его придумать. В Алгоритмике эта разница также исчезает. Компьютеры могут быть запрограм- мированы на то, чтобы творить, подобно Моцарту или Толстому. Мы могли бы за- кончить незавершенные романы гениев, симфонии Шуберта, Малера, Брукнера. Более того, мы могли бы создавать бесконечное количество новых произведений в стиле каждого из гениев (хотя, может, это не так уж и прекрасно). В математике и естественных науках мы могли бы найти наиболее простую теорию, которая, со- гласно принципу бритвы Оккама, могла бы претендовать на звание лучшей теории. Был бы взят последний барьер — творчество. И это главное, что пугает — при всех описанных преимуществах. Можно предположить, что NP в некотором роде представляет собой разницу между творчеством и его отсутствием. Если NP не существует, если оно равно Р, то творчество ограничивается автоматическим поиском лучших решений. Как в ро- мане Германа Гессе «Игра в бисер», люди стали бы простыми потребителями и ком- ментаторами чужого творчества. У жизни в Алгоритмике есть и другая темная сторона. Тот Прометей, который одной рукой дал бы нам утопию, возможность работы компьютеров при разреши- мой сложности, другой рукой отнял бы у нас многое из того, что мы ценим. Кроме творчества, полностью исчезла бы конфиденциальность. Распознавание со спутни- ка, будь то археологические раскопки, секретные аэропорты, самолеты, потерпев- шие крушение, или залежи полезных ископаемых, было бы безошибочным и по- всеместным. Ничто на земной поверхности не могло бы скрыться от компьютеров и камер. Наши лица можно было бы опознать с помощью алгоритмов распознавания и связать их с базами данных, в которых была бы вся информация о каждом из нас, и эту информацию можно было бы анализировать с помощью умных алгоритмов глубинного анализа данных. И самое главное, Прометей отнял бы у нас ключ, ко- торым мы защищаем наши секреты. Все наши банковские счета перестали бы быть защищенными, наши документы, наши фотографии, наша личная жизнь — все, что мы храним сегодня в цифровом виде, было бы доступно каждому. 90
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP Так что, возможно, новость, что этот мир недостижим, не так уж и плоха. С тех пор как была поставлена проблема соотношения Р и NP, было предпринято много усилий для того, чтобы доказать что Р = NP либо что Р =£ NP, но все они были безрезультатны. Однако мы знаем, что создать что-то намного сложнее, чем про- верить это, потому-то проблему творчества нелегко решить. Поэтому мы полагаем, что Алгоритмика никогда не появится и что, независимо от того, можем ли мы это доказать, мир, в котором мы живем, навсегда останется миром, в котором Р Ф NP и который Импальяццо назвал Криптоманией. Другие классы сложности: ЕХР и NEXP NP не единственный класс сложнейших проблем. Всегда будут проблемы, кото- рые мы не сможем решить за полиномиальное время, и эти проблемы находятся в классе EXP. С помощью теоремы о временной, иерархии мы можем доказать, что Р £ ЕХР. Существует аналог полноты NP в классе ЕХР: существуют ЕХР -полные проблемы, самые сложные в ЕХР; среди них — обобщенные варианты шахмат, ша- шек и го с произвольным числом клеток. Было доказано, что эти проблемы невоз- можно решить за полиномиальное время. Компьютер Deep Blue может выиграть у Гарри Каспарова, но никогда не сможет играть на доске размером гугол на гугол. Дело в том, что хотя число шахматных ходов огромно, это не предполагает экспо- ненциальной сложности игры. Экспоненциально сложна только обобщенная версия шахмат. По аналогии с NP существует класс NEXP, который включает в себя все пробле- мы, алгоритмы решения которых выполняются недетерминированными машинами Тьюринга за экспоненциальное время. Также мы знаем, что NP^ NEXP и что если ЕХР£ NEXP, то Р =£ NP. Если бы мы могли доказать, что ЕХР Ф NEXP, то это помогло бы нам доказать, что Р Ф NP. К сожалению, доказать, что ЕХР Ф NEXP, также непросто. У нас нет ответа на вопрос, является ли NP собственным подмножеством ЕХР, хотя мы знаем, что PC NPC EXPC NEXP. Начинает появляться некий порядок. 91
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP ПРОТИВОПОСТАВЛЕНИЕ И КОНВЕРСИЯ Когда мы делаем такие выводы, как «если EXP=# NEXP, то P=# NP», нужно быть крайне осто- рожными. Этот результат соответствует противопоставлению, а не конверсии. Напомним, что противопоставление - это закон формальной логики, в котором говорится, что два утверждения равносильны: Если р, то q. Если ->д, то -ip. где -ip — это отрицание р. Это так называемый modus tollens в аристотелевой логике и способ доказательства теорем от противного. Противопоставлением также называется любая из этих пропозиций относительно другой. Наоборот, конверсия «Если р, то д» - это «Если q, то р», и одно из другого невыводимо. Напри- мер, «если шел дождь, то улица мокрая» истинно, но «если улица мокрая, то шел дождь» - нет. Время и пространство До сих пор мы говорили о сложности относительно времени, которое потребова- лось бы машине Тьюринга для решения или его проверки. Но что происходит с про- странством? Мы понимаем пространство как память, требуемую машине. Напомним, что у наших машин лента бесконечна. А если изменить эту точку зрения и посмо- треть, сколько пространства требуется для решения некоторых проблем? Как оно соотносится с временем исполнения алгоритма? Иногда программисты используют структуры данных, занимающие больше пространства, для оптимизации времени выполнения алгоритмов. Можем ли мы сделать общие утверждения о соотношении между временем и пространством? Определим понятие пространственной сложности в терминах машины Тьюринга из трех лент: ленты входа, ленты рабочего пространства и ленты результата. Эта машина обладает пространственной сложностью 5(и), если на ее рабочей ленте ис- пользуется максимум с • 5(п) ячеек, где с — константа. На основе этого мы можем определить серию классов пространственной сложности: PSPACE Класс проблем, которые решаются в полиномиальном пространстве. NPSPACE Класс проблем, проверяемых в полиномиальном пространстве. 92
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP EXPSPACE Класс проблем, которые решаются в экспоненциальном простран- стве. NEXPSPACE Класс проблем, которые проверяются в экспоненциальном про- странстве. L Класс проблем, которые решаются в логарифмическом простран- стве (0(1пп)). NL Класс проблем, которые проверяются в логарифмическом про- странстве. Первое замечание в том, что может быть проверено 2П возможных значений для SAT в линейном пространстве, потому что любое число, меньшее 2П, занима- ет максимум 1п22л = п клеток. Для каждого возможного варианта записываются значения переменных в этих п клетках (например, 0010111010001) и проверяется, выполняется ли с ними формула. Если нет, данные на ленте стираются и начинает- ся проверка следующего варианта. Это дает нам фундаментальное представление о разнице между временем и пространством. Время невозможно использовать по- вторно, а пространство, напротив, можно использовать много раз. Это представле- ние выходит за рамки теории сложности и предполагает любопытные физические и философские аспекты. Следовательно, SAT находится в PSPACE. А также любая проблема класса NP, поскольку SAT является NP -полной. Следовательно, NP с PSPACE. Существует связь между временной и пространственной сложностью. Мы не знаем, выполняется ли Р = PSPACE, что вместе с предыдущим отношением пред- полагало бы, что Р = NP, поскольку NP находится на пересечении Р и PSPACE. Есть и другие удивительные результаты. Например, мы можем доказать, что PSPACE = NPSPACE, при этом теряется смысл говорить о NPSPACE. Суть полноты NP в существовании коротких сертификатов. Суть полноты PSPACE, которая определяется как самые сложные проблемы PSPACE, в суще- ствовании выигрышных стратегий в играх между двумя соперниками — шахматах, шашках и го. Мы говорим, что у игрока А выигрышная стратегия, если для любого 93
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP хода игрока В у А имеется ход, который приводит его к выигрышу. Это рекурсив- ное определение, предполагающее экспоненциальный поиск для всех возможностей игры. Похоже, что для выигрышной стратегии нет короткого сертификата. Похо- же, что сертификат обязательно должен быть полным описанием самой стратегии, которая содержит экспоненциальное число битов. Это явно указывает на то, что NP * PSPACE, поскольку если бы существовал более короткий сертификат, про- блема определения выигрышной стратегии для указанных игр принадлежала бы NP. Следовательно, игры, в которых участвуют два игрока, сложнее, чем одиночные, под которыми понимается любая игра для одного игрока — например, головоломка или кроссворд. Одиночные игры обычно имеют сложность NP. Похоже, усложняет проблему именно тот факт, что инициатива переходит от одного игрока к другому. Кроме этой, казалось бы, незначительной детали, у PSPACE есть применение, на- пример, в робототехнике. Мы можем представить действия робота как игру, в кото- рой он сталкивается с враждебным соперником — средой и должен анализировать обстоятельства для достижения своих целей. Рассмотрим логарифмические классы. Самые простые проблемы арифметики, такие как умножение двух чисел или определение, содержится ли в заданной двоич- ной цепочке четное число единиц, принадлежат L. Это также обязано возможности повторно использовать пространство. Для умножения двух цепочек с п двоичными цифрами рабочему пространству требуется только один бит одновременно; так что его длина равна 1п(п). Также можно доказать, что LCNP Теперь подумаем об интернет-поисковиках. Они во время нашего запроса не ве- дут поиск одновременно на всех страницах, а пользуются программами, которые постоянно проходят по сайтам, индексируя содержимое. Эти программы-обходчики движутся по ориентированному графу, где узлы — это страницы, а гиперссылки — ребра. Нас интересует, доступна ли обходчику заданная страница, если он пойдет по маршруту из максимум п шагов (то есть с п — 1 промежуточными узлами). Эта проблема обозначается PATH, и она принадлежит NL. РАТ11 охватывает суть NL так же, как SAT — суть NP. Это NL-полная проблема. Но мы не знаем, принад- лежит ли PATH L, так же, как мы не знаем, справедливо ли выражение L = NL. Наконец, можно доказать еще один удивительный результат, притом что подоб- ное выражение относительно времени, похоже, не выполняется: NL = coNL, где CONL — это множество проблем, являющихся дополнением проблем NL. 94
ПРОБЛЕМА КОММИВОЯЖЕРА: ОТНОШЕНИЕ Р И NP ПРОСТРАНСТВЕННО-ВРЕМЕННАЯ СЛОЖНОСТЬ SAT SAT - это проблема, которую мы считаем экспоненциальной во времени (или, по крайней мере, неполиномиальной) и линейной в пространстве (или, по крайней мере, нелогарифми- ческой), хотя не можем этого доказать. Однако можно доказать, что SAT нельзя решить с по- мощью простого алгоритма, который был бы одновременно линейным во времени и логариф- мическим в пространстве. Подводя итог: L с NL с р с NP с PSPACE с EXP с NEXP. Мы знаем, что эта иерархия ограничена тем, что Р 5 ЕХР. Точно так же мы знаем, что L £ PSPACE. Следовательно, невозможно, чтобы выполнялись все ра- венства, поэтому считается, что не выполняется ни одно из них. Кроме того, у нас есть следующие четыре предположения и одно утверждение: P^NP NPXcoNP L^NL pXpspace NL = coNL PSPACE Гчпотетическая иерархия классов сложности. В этой главе мы исследовали наиболее типичные классы сложности, но далеко не все. У Скотта Ааронсона (1981) есть вики-страница, которая так и называет- ся — «Зоопарк сложности». На ней на момент издания этой книги насчитывалось 495 классов сложности. 95

Глава 5 Взбираясь на восьмитысячник: попытки доказать, что P*NP Строить сложное математическое доказательство — это как будто взбираться на вершину, куда не ступала нога человека. Исследователи подходят к базовому ла- герю и, находясь в нем, анализируют возможные маршруты. Иногда они немного поднимаются вверх, чтобы понять, насколько этот маршрут возможен. В других случаях они обходят гору, чтобы увидеть другие ее склоны. Например, экспедиция 1950 года для восхождения на гору Дхаулагири под руководством Мориса Эрцога столкнулась с огромным ледником, который был покрыт трещинами и окружен от- весными каменными стенами, что делало восхождение невозможным. Экспедиция попыталась подняться с восточной стороны и дошла до отметки 5500 метров, но тут им путь преградил другой ледник. В итоге Эрцог и его команда отказались от подъ- ема на Дхаулагири и покорили другую гору с названием Аннапурна, благодаря чему стали первыми людьми, покорившими восьмитысячник. Вид величественной вершины Дхаулагири, что в переводе с санскрита означает «белая гора». В этой главе мы поговорим о методах, с помощью которых пытались доказать, что P*NP. При этом мы затронем такое базовое понятие, как нижние границы ре- шения. Мы постараемся доказать, что существует нижняя граница, общая для всех алгоритмов, направленных на решение некоторой проблемы, их минимальная слож- ность. Нижняя граница зависит от класса, к которому принадлежит проблема. На- 97
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP пример, класс ЕХР определяет нижнюю экспоненциальную границу. Если мы до- кажем, что заданная проблема X принадлежит заданному классу С, то назначим X нижнюю границу, определяемую С. Так же как мы используем обозначение О(/(п)) для высших асимптотических границ, мы будем использовать обозначение Q(/(n)) для нижних асимптотических границ. Постараемся, чтобы наша граница была как можно более точной; например, вместо того чтобы говорить, что она полиномиальна, мы скажем, что она равна Q(n Inn). Чтобы доказать, что P^NP, необходимо найти для NP-полной проблемы нижнюю границу, которая не была бы полиномиальной. Техника диагонализации Мы видели, что техника диагонализации, открытая Кантором и с успехом приме- ненная Гёделем и Тьюрингом в своих работах, очень эффективна. Речь идет о до- казательстве от противного: мы предполагаем обратное тому, что хотим доказать, и постепенно приходим к противоречию, в связи с чем наше изначальное предпо- ложение должно быть ложным, поскольку истинность остальных шагов и тезисов, которыми мы пользовались в ходе доказательства, не подвергается сомнениям: они или были доказаны до этого, или считаются аксиомами. С одной стороны, мы можем приравнять между собой все NP-полные проблемы, что является самым большим успехом теории вычислительной сложности. Какой может быть стратегия доказательства того, что Р Ф NP, при использовании метода диагонализации? Представим, что существует алгоритм Diag, в качестве входной цепочки которого используется эффективный алгоритм ОС (принадлежащий Р). Diag работает так, как показано на рисунке. Diag Гипотетическая диагонализация для доказательства того, что P^NP. 98
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP Это абсолютно аналогично доказательству неразрешимости Тьюринга. Если нам удастся доказать, что ни один эффективный алгоритм не может вести себя как Diag, то Diag не принадлежит Р. Кроме того, если Diag является NP-полным, мы доказа- ли, что есть проблема, которая принадлежит NP, но не Р. Следовательно, P^NP. К сожалению, эта стратегия не работает. Чтобы понять, почему, вспомним, что универсальная машина Тьюринга воспринимает все машины Тьюринга как цепочки символов. Мы можем думать о них как о черном ящике, содержимое которого мы не знаем, но знаем, какие результаты возвращает функция его входа. Это очень удобно, поскольку позволяет нам рассуждать об этом черном ящике, не зная алго- ритма его работы. Если мы имеем дело со сложной проблемой и не знаем, как най- ти эффективный алгоритм ее решения, почему бы не заключить всю ее сложность в черный ящик и не посмотреть, что после этого произойдет? Представим себе детерминированную или недетерминированную машину Тьюринга, умеющую задавать вопросы оракулу, который, словно джинн из лампы, будет давать ей ответ на проблему решения О. Этот ответ будет либо «да», либо «нет». Оракул — это черный ящик, и ему потребуется только один вычислительный шаг для ответа. Машина будет задавать ему вопрос, дойдя до соответствующего символа в цепочке и некоторого состояния. Мы не знаем, как оракул ответит, по- скольку его алгоритм нам неизвестен, но ответ должен последовать. Конечно, эта машина будет более мощной, чем такая же машина без оракула. Мы можем поин- тересоваться решением самой сложной проблемы в мире, и джинн ответит, причем правильно! Вся сложность заключена в оракуле. Конечно, как и в случае с недетер- минированными машинами, такие машины с оракулом существуют только гипоте- тически. В чем польза таких гипотез? Да в том, что если мы сможем доказать, что при всей своей мощности они недостаточно мощны для решения за полиномиальное время какой-либо проблемы, например NP-полной, то менее мощные машины, без оракула, также не смогут ее решить. Это означает, что мы нашли бы нижнюю гра- ницу решения. Люди, знакомые с понятием подпрограммы в языках программирования, иден- тифицируют оракул с подпрограммой, которая выполняется в один шаг. Как видно из определения, мы не наложили на проблему О никакого ограничения. Она мо- жет быть даже неразрешимой! Например, это могла бы быть проблема останов- ки. Представим себе машину с оракулом, которая решает проблему остановки. Такие машины намного мощнее, чем обычная машина Тьюринга, потому что они могут решить проблему, которую последняя решить не может, поэтому известны как гиперкомпьютеры. Естественно, физически их не существует. Универсальный 99
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP гиперкомпьютер может решить проблему остановки для обычной машины Тьюринга, но он не способен решить собственную проблему остановки. Чтобы сделать это, нам нужен более мощный оракул, который, в свою очередь, также не может решить собственную проблему остановки, для чего требуется более мощный оракул, и так до бесконечности. Тезис Чёрча — Тьюринга все еще действует. Так проявляется иерархия неразрешимых классов, отсортированных по степени Тьюринга — этот термин был введен Эмилем Леоном Постом (1897—1954) в 1944 году. На бытовом уровне он означает степень неразрешимости каждого класса проблем. Обозначим машину Тьюринга М с оракулом Р как JVfр. Теперь посмотрим, как ею пользоваться. Если определить SAT как дополнение SAT, то есть как опреде- ление того, что формула не может быть выполнена ни для одного из значений пере- менных, получается, что SATG PSA\ поскольку машина Тьюринга может спросить своего оракула SAT, выполняется ли формула ф, и если да, то выдать в качестве результата SAT со входом ф — «нет», в то время как если первый ответ — «нет», то в качестве результата мы получим «да». Это происходит за один ход и, следовательно, за полиномиальное время. Использование оракула может свести такую CONP-полную проблему, как SAT, к полиномиальной проблеме с NP-полным оракулом, то есть PSAT. Если мы вспом- ним, как сложно было установить отношения между NP и CONP в предыдущей гла- ве, это свойство оракулов звучит многообещающе. Кроме того, благодаря оракулу мы свели coNP -полную проблему к проблеме, решаемой за полиномиальное время с помощью оракула. Также заметим, что если О принадлежит Р, то Р°= Р: оракул не помогает нам эффективно решить проблему, которая принадлежит к собственно- му классу оракула. Очевидно, что если оракул решает проблему А, которая является Х-полной, то он может решить все проблемы, сводимые за полиномиальное время к А, то есть все проблемы класса X. Следовательно, существует оракул, который представляет целый класс, например ЕХР, если только у этого класса есть полные проблемы. Например, мы могли бы представить класс РЕХР, где оракул ЕХР решает любую про- блему класса ЕХР в один шаг. В результате детерминированная машина Тьюринга с оракулом за полиномиальное время сможет решать все проблемы, которые она 100
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP решила бы без оракула, а также — за полиномиальное время — проблемы ЕХР. Если, как и происходит, Р CZ ЕХР, то ЕХР = РЕХР. Поскольку ЕХР, в свою очередь, может иметь оракула, эти выражения можно обобщать до бесконечности. Например, мы можем представить себе РЕХрЕХР, и так далее. Также мы можем сделать вывод, что: NP = PNP. То есть детерминированная машина Тьюринга с оракулом NP решает за полино- миальное время те же проблемы, что и недетерминированная машина Тьюринга без оракула. ПОЛИНОМИАЛЬНАЯ ИЕРАРХИЯ Тан как NP = PNP, заманчиво обобщить результат, создав иерархию: машина, принадлежащая NP, с оракулом NP решает те же проблемы, что и машина без оракула, которая находится на следующей ступени иерархии над NP, назовем ее NPNP, а машина, принадлежащая NPNP, с оракулом NP - те же проблемы, что и машина без оракула, принадлежащая NPNpWP, и так далее. Эта иерархия классов называется полиномиальной иерархией. Сложно найти проблемы, которые принадлежали бы классам намного выше NP, но эта иерархия имеет огромное теоре- тическое значение. Действительно, мы можем определить класс PH, включающий все ступени. Представим, что каждая ступень - это собственное подмножество следующей, что является обобщением того, что P^NP. Также представим, что для каждого уровня иерархии этот уровень отличается от своего со-класса, точно так же, как мы предполагаем, что NP^coNP. Если бы это было ложно для какой-нибудь ступени, вся иерархия обрушилась бы до уровня, на котором со-классы снова отличаются от классов. А именно, если P=NP, то вся иерархия обрушивается до Р. Именно поэтому в Алгоритмике мы могли бы решать проблемы, которые сложнее, чем NP. Теперь дадим определение проблеме ЕХРСОМ, которая для любого входа воз- вращает по прошествии 2П шагов число один. Получается, что: рЕХРСОМ — ДОрЕХРСОМ — ЕХр 101
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP Нам удалось с помощью оракулов установить отношение равенства если не меж- ду Р и NP, то между соответствующими классами, определенными оракулом одной проблемы. Неужели мы близки к тому, чтобы доказать что-то о самих Р и NP? К сожалению, это не так. Теодор Бейкер (1851—1934), Джон Джилл (1937) и Роберт М. Соловэй (1938) в 1975 году доказали, что если и существует решение проблемы Р JzNP, то в нем не может использоваться только один оракул: существуют такие оракулы А и В, что P^NPhP-NP'. Согласно тому, как мы определим оракул О, мы можем прийти к двум противо- речивым результатам, касающимся Р° и NP0. Следовательно, нужен результат, не зависящий только от оракула, — он называется нереляционным результатом — для решения, верно ли, что P^NP. Путь чистой диагонализации закрыт. Мы оказались в той же ситуации, что и Эрцог перед Дхаулагири: на полдороге путь преградила непреодолимая ледяная стена. После 1975 года усилия, направлен- ные на доказательство, что P^NP, были сконцентрированы на других стратегиях. ВЫЧИСЛЕНИЕ ЛОКАЛЬНО Санджив Арора, Рассел Импальяццо и Виджей Вазирани написали в 1993 году статью, в кото- рой задались вопросом, основывается ли сложность доказательства на том, что формальное, аксиоматическое определение Р исключает результаты, которые невозможно доказать в рамках данной аксиоматики. Задумаемся о пятом постулате Евклида, знаменитом постулате о парал- лельных прямых, в котором говорится, что через точку, не лежащую на прямой, проходит одна и только одна прямая, параллельная данной. В течение десятилетий геометры считали, что эту аксиому можно вывести из четырех остальных. Однако в начале XIX века Карл Фридрих Гаусс (1777-1855), Янош Бойяи (1802-1860) и Николай Лобачевский (1792-1856) доказали, что это не так, и пятая аксиома невыводима из четырех первых. Эти авторы утверждали, что нечто подобное может произойти и с аксиоматизацией Р. Одновременно они предложили решение. Сама по себе теорема Кука - Левина - нереляционна, поскольку в ее доказательстве исполь- зуется сам факт работы машины Тьюринга, а именно то, что вычисление локально: машина Тьюринга имеет доступ только к одной ячейке одновременно, благодаря чему машина перестает быть черным ящиком в рамках теоремы. Возможно, решение заключается в использовании нереляционных аксиом. 102
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP Булевы цепи и нижние границы Неудача с оракулами наводит на мысль, что использование черного ящика не так уж и эффективно, поэтому для решения проблемы мы должны еще немного поко- паться во внутренностях компьютера. Сосредоточим внимание на булевых цепях. Вспомним, что компьютер — это просто серия булевых цепей, то есть логических шлюзов, которые выполняют одну из трех функций: AND, OR и NOT (см. график ниже). Мы будем изучать цепи, являющиеся связными, ациклическими и ориенти- рованными графами, в которых узлы — это шлюзы, обозначенные одной из трех функций. Также у каждого внутреннего узла есть два входных ребра и одно выход- ное. Полная цепь может иметь п входов и один выход. Булевы цепи, определенные таким образом, достаточно мощны для любого алгоритма, который выполним на ма- шине Тьюринга, как мы указали в главе 2. Но для таких цепей существует естественная проблема — наша старая знакомая SAT. Действительно, вспомним, что главный вопрос SAT — может ли быть вы- полнена заданная булева формула. Естественно, булева цепь, представляющая собой ф и выдающая в качестве результата единицу, эту формулу будет выполнять. Когда мы говорили о машинах Тьюринга, для нас имело значение время (ко- личество шагов) и пространство (длина ленты), необходимые машине. Когда мы говорим о булевых цепях, для нас имеет значение число узлов, а также глубина цепи, число уровней дерева. Нас не удивит, что проблемы, решаемые с помощью булевых цепей полиномиального размера, образуют собственный класс Р/рО|у. Теперь глав- ный вопрос — в соотношении P/poiy, Р и NP. Можно доказать, что Р £= Р/ро1у Это приводит нас к мысли о том, что если бы мы могли доказать, что NP £ P/poiy, то мы получили бы долгожданный результат: P^NP. Способ исследования этой стратегии — это найти NP-полную проблему, 103
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP такую как SAT, и решить вопрос, принадлежит ли она Р/рО|у» другими словами, су- ществует ли полиномиальная цепь, которая ее решает. Результат, доказанный Кар- пом и Липтоном (1946), гласит, что если полиномиальная иерархия не обрушится (см. врезку на странице 101), то SAT не имеет полиномиальной цепи, которая ее решает, и, следовательно, P^NP. Подобный результат наводит на мысль о том, что Р/ро1у не может содержать ЕХР, но доказать это не удалось. Есть много проблем — на самом деле их пода- вляющее большинство, — для которых существуют только огромные цепи экспо- ненциального размера Q(2n/n), и это еще один интересный результат: сложность большинства проблем невероятна. Однако математика, в отличие от естественных наук, не работает путем накопления очевидных фактов, она должна доказать свои результаты в строгом виде. Поскольку существует в буквальном смысле бесконечное число проблем, у которых нет маленьких циклов, можно попробовать доказать, что какая-то из них является NP -полной. Так мы доказали бы, что NP £ P/poiy, и, следо- вательно, P^NP. К несчастью, сделать это не удалось. Подход, предполагающий доказательство через нижние границы с помощью булевых цепей, который с энтузиазмом исполь- зовали в 70—80-е годы прошлого века, оказался намного сложнее, чем предпо- лагалось. За 30 лет не удалось доказать наличие минимальной границы большей, чем Q(5n), ни для одной NP -полной проблемы. Эта граница определенно линейная и, следовательно, очень далека от неполиномиальных пределов, которые мы ищем. В 1985 году Александр Разборов (1963), в то время аспирант Математического института в Москве, опубликовал статью, в которой доказывал, что проблема клики (CLIQUE) не может быть решена с помощью кругов размера меньшего, чем 0(2^), где k — размер клики графа из п узлов, a k<n^4. В его версии решение задачи яв- ляется NP -полным, и нижняя граница, найденная Разборовым, была очень боль- шой, экспоненциальной! Доказал ли он, что Р * NP? К сожалению, нет. Ему уда- лось доказать свой результат только для особого типа цепей, в которых были только шлюзы AND и OR. Не хватало операторов NOT, а ничто не мешает цепи со шлю- зом NOT быть более простой, полиномиального размера. Казалось, что развить результат Разборова — дело времени. Но как бы не так. Сам Разборов вместе со Стивеном Рудичем (1961) в 1994 году разработал понятие, похожее на реляци- онный результат, о котором мы уже говорили. Это понятие оказалось второй ледя- ной стеной, преграждающей путь на вершину Дхаулагири. Такое указание на то, что 104
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP идти дальше почти невозможно, то есть умозаключение, опирающееся на эмпириче- ские данные, известно как естественное доказательство. В естественном доказательстве предполагается доказать, что существует нижняя граница для булевой цепи, вычисляющей функцию /. Это доказательство должно быть полиномиальным, и эту границу должны использовать многие другие функ- ции, кроме /. Оказывается, что практическое большинство доказательств в грани- цах булевых цепей являются естественными в этом смысле. В теореме Разборова — Рудича (Р-Р) говорится, что исходя из предположе- ний, которые нам кажутся рациональными, мы не можем доказать естественным образом, что данная проблема принадлежит P/poiy, и, следовательно, мы не можем доказать, что Р * NP с помощью поиска нижних границ для булевых цепей. ОДНОНАПРАВЛЕННЫЕ ФУНКЦИИ В теореме Р-Р используются однонаправленные функции. Функция Годнонаправленна, если сложно найти обратную ей. Это же можно определить в вероятностных терминах: вероятность найти функцию, обратную f, за полиномиальное время ничтожна. Напомним, что обратной функ- ции Г является другая функция Г1, такая, что если применить к цепочке х сначала f, а затем Г-1, в результате получится х. Например, если f- это возведение х в квадрат, то Г-1 - это извлечение квадратно! о корня. В криптографии, грубо i оворя, функция Г- это шифр сообщения, а обратная ей - криптоанализ. Типичным примером однонаправленной функции может быть умножение двух простых чисел. Эта операция довольно проста и выполнима за время 0(л2) или даже меньше. Зато разложить число на простые множители сложно. Мы не знаем, является ли эта проблема NP-полной, но она действительно довольно сложная. Трудность в том, что мы полагаем, что однонаправ- ленные функции существуют, но до сих пор ни одна не найдена. И это не случайно, ведь если бы мы ее нашли, то доказали бы, что P^NP. Можем ли мы использовать чисто теоретические методы? Конечно. Например, один из них — метод диагонализации. Возможно, с нашей проблемой сможет спра- виться метод, который не будет связан ни с чистым доказательством существования чего-либо, ни с реляционным, но мы его пока не нашли. Эксперты воспринимают ситуацию с разной долей пессимизма. Например, такие ученые, как Арора и Боаз Барак, считают, что существуют подходящие методы, при использовании которых доказательство будет опираться только на теорию, станет «неестественным»; другие, 105
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP в том числе и сам Разборов, боятся, что неестественных доказательств не суще- ствует; а кто-то еще более пессимистичен и считает вполне возможным, что Р * NP не может быть доказано в рамках современной математической аксиоматики. Это не означает, что подход с использованием булевых цепей в теории сложности абсолютно бесполезен. Действительно, если не рассматривать наиболее общие цепи, ограничиваясь теми, которые, например, имеют постоянную глубину, можно дока- зать наличие многих нижних границ. Так, можно доказать, что проблема PARITY, состоящая в том, чтобы определить, является число четным или нечетным, не имеет цепи полиномиального размера и постоянной глубины, даже если сделать эту глуби- ну произвольно большой. Другие пути: произвольность, интерактивные доказательства, арифметизация Потерпев поражение с двумя предыдущими стратегиями, исследователи теории сложности сосредоточились на третьей возможности — арифметизации. Эта стра- тегия пытается решить специфические проблемы диагонализации, поскольку она по своим свойствам нерелятивна. Начиная с 90-х годов прошлого века появились первые успехи метода, недоступные релятивации. Арифметизация исходит из того, что любое булево выражение в виде Ф v <h v <7з можно записать как полином, в котором логические операции заменены на соответ- ствующую арифметическую операцию: Xt(l-X2)X3, и мы можем обобщить значения, которые могут принимать X, так что вместо 0 и 1 это может быть любое натуральное число. Эта простая операция предоставляет необычные возможности верификации, в ее распоряжении внезапно оказывается вся теория чисел, включая теоремы о на- туральных числах и модульную арифметику. Мы пользуемся последней каждый день, когда смотрим на часы. Вместо того чтобы отсчитать время от какого-то 106
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP момента в прошлом и сказать, что прошло около двух миллионов часов со времени Французской революции, мы говорим, что сейчас 11:00 часов утра сегодняшнего дня. Сообщение первого вида как раз соответствовало бы традиционной арифме- тике, а второго вида — модульной арифметике. Представим, как сложно было бы определить время завтрака первым способом, зато постоянное вращение Земли по- зволяет нам определить, что 11:00 какого-то дня — это то же время, что и 11:00 предыдущего дня. Другая часть стратегии доказательств через арифметизацию берет начало в ис- следовании обобщений верифицирующего сертификата NP, благодаря которым по- явились интерактивные доказательства. Начнем с вероятностных машин Тьюринга. Идея введения произвольности в теорию вычислений имеет два объяснения: первое состоит в моделировании про- извольных процессов, а второе связано с обобщением так называемых методов Монте-Карло, которые появились в сфере решения дифференциальных уравнений и доказали свою эффективность для решения проблем, сложных при применении непроизвольного подхода. Определим вероятностную машину Тьюринга как машину, в которой есть две функции перехода, как в недетерминированных машинах; только здесь вместо то- го, чтобы следовать по всем возможным маршрутам, мы при каждом шаге бросаем монетку, чтобы определить, по какому маршруту пойдем. Каждый шаг — это не- зависимое событие, и, очевидно, у нас есть вероятность, равная 1/2, проследовать по одному из двух маршрутов. В недетерминированной машине входная цепочка допускается, если существует любой путь от начального до конечного состояния; в вероятностной машине эта цепочка допускается, только если множество бросков в результате доведет маршрут до конечного состояния. Также важная разница состо- ит в том, что недетерминированная машина с физической точки зрения невозмож- на, в то время как вероятностная машина может быть реализована на компьютере с помощью генератора леев допроиз вольных чисел, то есть алгоритма, способного породить последовательность чисел, неотличимую за полиномиальное время от на- стоящей произвольной последовательности, возникшей при серии бросков монеты, или меток, полученных при радиоактивном распаде изотопа. Можно доказать, что любая машина с вероятностью 1/2 эквивалентна любой другой машине с другой ве- роятностью, если эта вероятность вычислима. 107
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP Возможности этих машин можно наблюдать при решении проблемы, являет- ся ли некоторое число простым. Следует отметить, что в 2004 году был найден детерминированный и эффективный алгоритм решения этой проблемы, но в течение многих лет использовались только вероятностные алгоритмы. Один из них, создан- ный Соловэем и Фолькером Штрассеном (1936), всегда дает верный ответ, когда указывает, что N — простое число, но имеет вероятность верного ответа в 1/2, если говорит, что /V — не простое число. Безусловно, необходимо выполнить алгоритм несколько раз. Таким образом мы уменьшаем вероятность ошибки, потому что ес- ли алгоритм говорит нам и раз, при различных псевдопроизвольных числах, что N не является простым, то вероятность ошибки равна (1/2)п. Например, если мы при- меним алгоритм 10 раз, вероятность ошибки составит 0,0001. Это пример алгоритма положительного отбора, то есть он совершает ошибки, только если дает отрицательный ответ на вопрос, является ли N простым числом. Существуют вероятностные алгоритмы отрицательного отбора, а также алгоритмы, которые не совершают ошибок, но время их выполнения в худшем случае неполи- номиально. Наконец, существует класс алгоритмов с полиномиальным временем выполнения и вероятностью ошибки как при ответе «да», так и при ответе «нет», но с вероятностью 1/3. Этот класс алгоритмов называется ВРР. Вероятность пред- ставляет собой произвольное число. Можно доказать, что если применить алгоритм итеративно п раз, вероятность ошибки стремится к нулю. Также можно доказать, что если P NP , то Р — ВРР. Этот результат говорит о том, что в утопичном мире Алгоритмики вероятностные алгоритмы типа ВРР не лучше детерминированных. Но вопрос Р 2-ВРР является открытым, хотя есть признаки, что данное равенство верно. Если бы это было так, все проблемы ВРР можно было бы лишить произвольности, превратив их в детерминированные про- блемы, решаемые за полиномиальное время, но очевидно, что мы не знаем, возмож- но ли это. Что мы действительно знаем, так это то, что если существуют нижние границы для булевых цепей достаточной величины, то хороший генератор псевдо- произвольных чисел может лишить произвольности любой алгоритм класса ВРР. С философской точки зрения, если бы Р было менее мощным, чем ВРР, это бы означало, что ограниченная ошибочность — то есть небольшое количество допусти- мых ошибок — делает умнее и машины, и людей. Но что произойдет, если вместо одного субъекта, подверженного ошибкам (вероятностного алгоритма), у нас будет два субъекта, взаимодействующих между собой? 108
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP СУЩЕСТВУЮТ ЛИ ВРР-ПОЛНЫЕ ПРОБЛЕМЫ? ВРР - особый класс проблем. Мы не знаем полных проблем в ВРР. Мы также не знаем, суще- ствует ли в нем иерархия проблем, как это происходит внутри Р или PSPACE, где проблема О(п) меньше проблемы 0(п2). Безусловно, это связано с тем, что ВРР определяется семантически, пользуясь внешней теорией, теорией вероятностей, в то время как невероятностные машины Тьюринга определяются синтаксически. Сначала заметим, что, как мы уже видели в главе 2 в связи с доказательством Тьюрингом невозможности решения Entscheidungsproblem, доказательство любой теоремы любой теории можно закодировать как цепочку машины Тьюринга, и тог- да эта машина сможет доказывать теоремы. Это приводит нас к размышлениям о том, какую роль играют доказательства теорем в теории сложности. Оказывается, что если доказательство становится интерактивным, затрагивающим два субъекта, то мы внезапно сталкиваемся с новым мощным испытанием. В этом есть определен- ная логика: один из субъектов осуществляет доказательство, а другой его проверяет. Также это приближает определение интерактивного доказательства к определению NP, которому требуется полиномиальный сертификат для проверки. В случае с не- интерактивными доказательствами сертификат — это само доказательство. Для че- го тогда нужен верификатор? Что любопытно, мы видим, что верификатор, если он вероятностный, придает решению проблемы больше веса. Представим, что верификатор является детерминированным, то есть он не ис- пользует ни один произвольный механизм. Его ответ всегда один и тот же. Также представим, что взаимодействие между демонстратором и верификатором сво- дится к следующему: демонстратор показывает свое доказательство за полиноми- альное время, а верификатор принимает или отвергает его за полиномиальное вре- мя. В этих случаях в верификаторе нет смысла, потому что проверка — это и есть доказательство. Описанный случай решаем в NP и не дает ничего нового. Но если сделать так, чтобы верификатор был вероятностным? Мы предлагаем верифика- тору возможность ошибаться как при подтверждении неправильного доказатель- ства, так и при опровержении правильного. Результат удивляет: эти интерактивные и произвольные алгоритмы позволяют решать любую проблему PSPACE за полино- миальное время! Представим себе такие алгоритмы, придуманные Лансом Фортноу (1963). Ахиллес и Брисеида находятся в некотором городе в Малой Азии, куда Ахиллес 109
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP поехал по работе. Воскресенье. Хмурый Ахиллес в нетерпении отбрасывает вос- кресную газету. «Это судоку невозможно решить, там явно ошибка!» Но Брисеида уже решила то же самое судоку в своей утренней газете и знает, что решение есть. Она говорит об этом Ахиллесу, но тот не верит. Умная Брисеида, которая читала о доказательствах с нулевым разглашением, закрывается в своей комнате и осущест- вляет произвольную перестановку чисел. Скажем, число 1 она обозначает 9,2 — 7, 3 — 4, 4 — 1, и так далее. Затем она достает новое, абсолютно пустое судоку и, сверившись с уже решенным, меняет местами цифру каждой клетки в соответствии с перестановкой. Если изменить в судоку каждое число на другое без повторений, решение останется верным. Эта замена называется изоморфизмом. Теперь Брисеида вырезает 81 картонный квадратик и кладет их на измененное су- доку, закрыв числа. Она зовет Ахиллеса и говорит ему, что он может открыть любой столбик (но только один), любой ряд (но только один), любую квадратную секцию (но только одну) или, если хочет, клетки, соответствующие определенным числам исходного судоку. Если он найдет хоть одно повторяющееся число, это будет озна- чать, что решение Брисеиды неверное. Вероятность этого вывода будет равна еди- нице. Поскольку существует 9 + 9 + 9 + 1 = 28 способов раскрыть судоку частич- но, вероятность того, что, если решение неверное, равна, по меньшей мере, 1/28 = = 3,57 %, потому что по крайней мере один из способов раскрыть судоку будет со- держать повторяющиеся числа. Если процесс повторить несколько раз и при этом решение все же верное, то вероятность найти ошибку тает, а уверенность Ахиллеса увеличивается. В этом суть произвольного алгоритма, в котором дается доказательство с ну- левым разглашением: Ахиллес достаточно уверен в том, что Брисеида знает реше- ние, но она не дала ему ни одной подсказки. Кстати, решение судоку — это NP- полная проблема, так что мы заодно доказали, что существует доказательство для любой проблемы класса NP, поскольку любая из них сводится к проблеме судоку. В другом, более простом примере говорится об Ахиллесе-дальтонике и Брисеиде, которой Ахиллес не доверяет. Он хочет надеть два носка одного цвета, но, открыв шкаф, выбирает один красный, а другой зеленый. Брисеида говорит ему, что они разные, но Ахиллес ей не верит. Тогда Брисеида кладет Ахиллесу зеленый носок в правую руку и красный носок — в левую. Она поворачивается к Ахиллесу спиной и просит его бросить монетку. Если выпадет орел, Ахиллес поменяет местами носки; в противном случае он этого делать не будет, и тогда Брисеида проверит результат. 110
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP Очевидно, что если носки разные, она всегда будет знать, произошла ли перестанов- ка, а если носки одинаковые, ее ответ будет произвольным и в среднем она угадает только в половине раз. Это мотивирует определение двух взаимодействующих ма- шин Тьюринга: одна вероятностная, верификатор V, а другая детерминированная, демонстратор D. V примет доказательство D с вероятностью 2/3, если оно верно, и отвергнет любое неверное доказательство с вероятностью 2/3. Класс проблем разрешения, решенных за полиномиальное время таким образом, называется IPH, где k — это число сообщений, которыми обмениваются демон- стратор и верификатор. Если мы позволим k быть не константой, а полиномиальной функцией размера входной цепочки п, соединение всех этих классов породит новый класс, IP. Важно подчеркнуть, что на демонстратора не влияет бросок монеты. Он конфиденциален: результат может видеть только верификатор. Существует проблема, о которой мы не знаем, является ли она NP -полной. Речь идет об изоморфизме между графами (см. рисунки ниже), то есть равны ли два гра- фа, за исключением обозначения их узлов (перестановки их названий немного напо- минают манипуляции, проделанные Брисеидой с судоку). Действительно, это одна из самых известных проблем, о которой неизвестно, является ли она NP-полной или просто принадлежит NP. Дело в том, что ее можно решить практически элементар- но машиной, принадлежащей IP. Дано два графа G] и С2. Выполняется следующий алгоритм. Верификатор: получите, бросив монетку, произвольное число, 1 или 2. Если по- лучится 1, переставьте произвольно узлы Ср в противном случае переставьте произвольно узлы С2. Пошлите получившийся граф Н Демонстратору. 111
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP Демонстратор: определите, был ли изменен граф С] или С2, сравнив Н с ними. Если это был первый граф, пошлите Верификатору число 1; в противном случае пошлите число 2. Верификатор: сравните посланное число с тем, что было изначально получено с помощью монеты. Согласитесь, если они равны; отвергните, если они различа- ются. При отвержении повторите процесс. Этот алгоритм принадлежит IP. В случае если два графа не изоморфны, Демон- стратор, располагающий всеми вычислительными возможностями, обязательно определит, соотносится Н с С] или с С2, и ответит безошибочно, так что вероятность того, что Верификатор согласится, равна 1, что явно больше, чем 2/3. Наоборот, если оба графа изоморфны, Демонстратор сможет только произвольно угадать, какой из графов был выбран для перестановки, так что вероятность согласия рав- на 1/2. При двух повторениях вероятность отвержения уже 1/4, что меньше 1/3. Сходство с алгоритмом носков очевидно. Заметим ключевой факт: если бы Демон- стратор знал результат броска монеты, он смог бы с абсолютной точностью от- ветить, какой граф выбрал Верификатор. Вероятность отвержения станет 0, и про- блема окажется детерминированной, следовательно, как мы уже видели, она будет ДОКАЗАТЕЛЬСТВА С НУЛЕВЫМ РАЗГЛАШЕНИЕМ Пример с изоморфизмом графов - это также доказательство с нулевым разглашением. Дей- ствительно, Верификатор имеет ответ на свою проблему: он с определенной долей вероятности знает, изоморфны ли графы, но он не знает, как это было доказано. Он не знает содержимого доказательства, которое во власти только Демонстратора. Ему было передано некое утверж- дение без разглашения, что могло бы подразумевать какой-то секретный алгоритм, который Демонстратор не хочет раскрывать, - тут можно представить некое сообщество людей в XVI веке, которые обладали секретными методами нахождения корней уравнения, но никому их не рас- крывали. Возможность уверить ко. о-то в том, что имеется решение, ничего не открывая об этом решении, имеет большую практическую пользу для защиты промышленных интересов, конфи- денциальной информации в целом или, например, для убеждения системы в том, что один чело- век не выдает себя за другого. Что также очень интересно, нулевое разглашение позволяет, на- пример, больницам обмениваться информацией, не нарушая врачебной тайны. Другие похожие разработки недавно позволили сделать так, чтобы третье лицо работало с зашифрованным со- держимым, не зная его содержимого. Это называется полностью гомоморфным шифрованием. 112
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP принадлежать NP. Абсолютно необходимо, чтобы действие было секретным и огра- ничивало возможности Демонстратора. Итак, класс IP содержит проблемы, которые мы можем решить, сочетая ограниченную ошибочность — мы изредка совершаем ошибки — и недоверие (Верификатор не доверяет Демонстратору). Недоверие можно понимать как меру ошибочности утверждений Демонстратора, что в нашем мире абсолютно разумно. Удивительным образом это дает нам огромные возможности. У IP больше воз- можностей, чем у NP (при выполнении предположения, что P^NP), поскольку можно доказать, что IP = PSPACE. Это важное доказательство требует, с одной стороны, уже упомянутой арифметизации, а с другой стороны — путешествия в Камелот. Мерлин — великий волшебник, его возможности безграничны. Особенно это касается его вычислительных способностей, хотя ни Томас Мэлори, ни Кретьен де Труа, кажется, не делают особого акцента на этом моменте. Мерлин помогает Артуру, но также использует его для достижения своих целей. Артур, наоборот, сильно не блещет, что доказывает хотя бы тот факт, что он позволил себя обмануть короле- ве Гвиневере, когда она изменила ему с Аанселотом, но ему хватает ума не доверять Мерлину. Пусть Мерлин будет Демонстратором, а Артур — Верификатором. Мерлин — оракул с бесконечной вычислительной способностью, так что не име- ет смысла пытаться скрыть результат броска монеты. Он его угадает, пользуясь магией, основываясь на любом последующем сообщении Артура, воспроизведя его мыслительные процессы. Следовательно, пытаться скрыть от Мерлина результат броска — это просто трата времени. Артур бросает монету, сообщает результат и в конце концов решает, принимает ли он то, что говорит Мерлин. Взаимодействие начинает Артур, бросая монету. Возможны несколько вариантов. Определяется класс АМ[/?], то есть Артур — Мерлин, который включает в себя все описанные варианты поведения при k сообщениях или взаимодействиях. А именно, АМ[2] — это отдельный класс, в котором взаимодействие начинает Артур, сообщая результат броска своей монеты, Мерлин отвечает, и Артур окончательно решает, соглашаться или нет. Можно доказать, что АМ[/?] = АМ[2] для всех k > 2, k — константа. Иерархия АМ[/е] обрушивается. Это означает, что посылать Мерлину больше одного сообщения не дает больше возможностей, чем если послать ему только одно ИЗ
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ. ЧТО Р * NP сообщение и получить ответ. Поэтому мы определяем класс AM = АМ[2]. Мы можем доказать еще один результат: не важно, публично или конфиденциально де- лаются броски, однако в зависимости от этого алгоритмы отличаются. КЛАСС МА Если взаимодействие будет начинать именно Мерлин, можно определить другой класс, МА, в котором Артур бросает монету и затем пользуется детерминированным алгоритмом, чтобы решить, принимает ли он сообщение Мерлина. МА содержится в AM, и они оба входя! в со- став полиномиальной иерархии. Для предположения, что МА = АМ =NF, приводятся те же аргументы, что и в пользу Р = ВРР, а именно: существует возможность лишить произвольности все произвольные проблемы. В процессе доказательства удивительного результата IP = PSPACE использует- ся алгоритм интерактивного доказательства с публичными бросками монет, то есть алгоритм Артур — Мерлин, и понятие арифметизации, упомянутое в начале разде- ла. В этом доказательстве много технических деталей, и мы не будем его приводить, но оно понадобилось нам для того, чтобы наметить методы, которые в нем исполь- зуются. Стоит задаться вопросом, смогут ли те же методы привести нас к доказа- тельству, что P^NP. В течение нескольких лет этот подход казался заманчивым, но, к сожалению, он столкнулся с тем же типом препятствий, что мы наблюдали с чистой диагонализацией и нижними границами цепей. В своей недавней работе 2008 года Скотт Ааронсон и Ави Вигдерсон (1956) по- казали, что арифметизация сталкивается с такой же проблемой, что и предыдущие техники. Арифметизация «алгебраизирует» в том же смысле, что диагонализация релятивизирует. Определив алгебраический оракул как функцию, которая, подобно арифметизации, имеет в качестве переменных и значений натуральные числа вместо нуля и единицы, они доказали, что существует булев оракул А и его алгебраический коррелят А такие, что NPAcPAyNPAcPA. Это, в свою очередь, приводит к выводу: для доказательства, что P^NP, нуж- ны неалгебраические способы. Кроме того, ученые доказали, что другие проблемы в теории сложности сталкиваются с тем же препятствием, и даже лишение произ- вольности натыкается на тот же барьер. 114
ВЗБИРАЯСЬ НА ВОСЬМИТЫСЯЧНИК: ПОПЫТКИ ДОКАЗАТЬ, ЧТО Р * NP Значит, если мы хотим доказать, что P^NP, нам нужны не реляционные, не естественные и не алгебраизованные доказательства. По правде говоря, после этого третьего барьера мы не знаем ни одного заманчивого метода. Мы зашли в ту- пик, в котором все известные методы не работают. Итак, подобно альпинистской экспедиции, над которой словно насмехается не- приступная Дхаулагири, мы, похоже, оказались перед непреодолимым препятстви- ем, и это происходит не в первый раз. Последней теореме Ферма на доказательство потребовалось 350 лет — так долго она сопротивлялась. Еще несколько лет назад было распространено убеждение, что, возможно, эта проблема непреодолима, одна- ко Эндрю Уайлсу удалось получить результат, и все благодаря тому, что математиче- ский метод, использованный Уайлсом, был изобретен во второй половине XX века. Следовательно, не все потеряно. Пусть ни один известный метод не работает для Р1NP, но вполне возможно, что через пару веков необходимые инструменты по- явятся. С другой стороны, все имеет свой смысл. Диагонализация, оракулы, нижние от- метки булевых цепей, интерактивные доказательства с публичным или конфиденци- альным броском монет, арифметизация — все эти мощные методы позволяют науке развиваться и превращают теорию вычислительной сложности в одну из самых ча- рующих областей математики, несмотря на связанные с ними разочарования. 115

Глава 6 Последняя граница? Открытие существования NP-полных проблем и возможного неравенства NP и Р привело в 1976 году одного математика и одного инженера, Уитфилда Диффи (1944) и Мартина Хеллмана (1945), к революции в области криптографии. Практически вся история криптографии основывалась на том, чтобы скрывать ключ. Диффи и Хеллману пришло в голову, что ключ может быть открытым, но кроме него, по- явится и закрытый ключ, при этом операции шифрования и дешифровки будут асимметричными, то есть будут осуществляться двумя разными ключами и с по- мощью двух разных алгоритмов. Преимущество метода основывается на том, что распространение открытых ключей становится тривиальным. Если мы вспомним, как сложно было немецкому флоту менять книги ключей на всех кораблях и как сильно Блетчли-парк хотел взломать немецкие коды, то поймем, насколько революционной была эта идея. Через год Рональд Ривест (1947), Ади Шамир (1952) и Леонард Адлеман (1945) предложили алгоритм шифрования с открытым ключом, известный сегодня как RSA — аббревиатура от их фамилий. Это самый используемый сегодня алгоритм в ин- тернет-операциях, так что мы его подробно опишем. Алгоритм RSA критически связан с про- блемой, которой мы уже несколько раз ка- сались, — проблемой сложности разло- жения числа на простые множители. Хотя мы не знаем, является ли эта проблема NP- полной, мы знаем, что она достаточно слож- на. Проблема явно принадлежит NP, потому что если дано решение, его можно проверить Уитфилд Диффи произвел революцию в области криптографии своим новым методом шифрования. 117
ПОСЛЕДНЯЯ ГРАНИЦА? за полиномиальное время, перемножив найденные величины. Сами множители — это сертификат проблемы разложения на множители FACT. Вернемся к Ахиллесу и Брисеиде. У Ахиллеса есть два числа, полученные мето- дом, о котором мы расскажем ниже. Один из них — открытый ключ, другой — за- крытый. Ничего не скрывая, он посылает открытый ключ Брисеиде, а также любому человеку, который его об этом попросит. Когда Брисеида захочет послать сообще- ние Ахиллесу, ей нужно будет зашифровать это сообщение, пользуясь открытым ключом. Ахиллес получит зашифрованное сообщение и расшифрует его, пользуясь закрытым ключом. Естественно, закрытый ключ и само его создание должны оста- ваться в секрете. Оба ключа генерируются с помощью простых арифметических манипуляций, ос- нованных на теории чисел. Первым шагом для Ахиллеса было создание ключей пу- тем нахождения двух очень больших простых чисел. Это относительно просто, если использовать формулы, которые обычно образуют простые числа, и формулы про- верки чисел на простоту (одну из них мы видели в предыдущей главе). Допустим, что простые числа — это р и q. Затем Ахиллес должен вычислить их произведение, п = pq. Это можно сделать за полиномиальное время. В большинстве исследова- тельских работ говорится, что п — это открытый ключ, а р и q — закрытый. Это ДЕТАЛИ АЛГОРИТМА RSA Получаем число е, которое зависит только от л по функции ф(л)“(1-р)(1-д), определенной Эйлером, и которое насчитывает меньше л простых чисел, не являющихся множителями ф(л). В качестве одного из этих чисел выбирается е. Далее определяем число d, для которого спра- ведливо: de=1 (mod <р(п)). Другими словами, <р(л) - делитель ed -1. Открытый ключ образован числом е и числом л. За- крытый ключ - это d. В качестве примера, если р = 61, a q - 53, то: л = pq = 3233 ф(п) = (61-1)(53-1) = 3120. е - это число, меньшее 3120, на которое не делится 3120, например е - 17, и, нак нец, d - 2753 (поскольку 17 • 2753 - 1 делится на 3120). 118
ПОСЛЕДНЯЯ ГРАНИЦА? не совсем так, поскольку есть еще несколько шагов (см. врезку), но приблизительно соответствует действительности. Преимущество алгоритма RSA заключается в том, что перемножить р nq легко, а разложить п на множители сложно. Изюминка алгоритма в том, что мы полагаем, что умножение — однонаправлен- ная функция: ее просто применить, но очень сложно осуществить обратное действие, для этого случая — разложение на простые множители. Если бы Р и NP были рав- ны, не существовало бы однонаправленных функций, и было бы легко произвести действие, обратное умножению р и q. Алгоритм RSA сразу же провалился бы, по- тому что закрытый ключ мог бы вычислить любой. В результате мы столкнулись бы с драматическими последствиями. Все элек- тронные банковские операции, доступ к социальным сетям, почтовым сервисам, бизнес-приложениям, конфиденциальным виртуальным сетям, базам данных — все это работает с помощью алгоритма RSA или его вариаций. И все это мгновенно стало бы уязвимым. Алгоритмика — это мир, в котором криптография имела бы большие проблемы. При таком ужасном сценарии можно было бы принять некоторые меры, вер- нувшись во времена закрытых ключей. Клод Элвуд Шеннон (1916—2001) до- казал, что закрытые ключи нерушимы, именно поэтому в некоторых уголках Открытый ключ - это число е - 17 и число п - 3233. Закрытый ключ - это d - 2753. В этом примере для иллюстрации использованы небольшие числа, но на практике в RSA применяются намного большие числа. Итак, Брисеида преобразует сообщение, которое хочет послать, в число М, которое за- шифровывает по формуле: С=Ме (mod п), и посылает сообщение Ахиллесу, который его расшифровывает с помощью: М=С^(тос/ п). Здесь мы абсолютно четко видим асимметрию шифрования и дешифровки, а также то, что end осуществляют обратные друг другу операции. Следовательно, все эти функции имеют эффективные алгоритмы. 119
ПОСЛЕДНЯЯ ГРАНИЦА? мира банки дают своим клиентам маленькое устройство с миллионами закрытых клю- чей. Пользователь включает устройство, и на дисплее появляется ключ, который нужно ввести в систему для получения до- ступа. К сожалению, у такого подхода есть минусы: как и любой физический объект, это устройство клиент должен держать в своих руках. Клод Элвуд Шеннон, известный как основатель теории информации. Средняя сложность, эвристики и PNP В любом случае, P^NP не гарантирует полной безопасности наших алгоритмов. Нужно остановиться на том факте, что вся теория сложности, которую мы изуча- ли до этого момента, занимается наихудшим возможным сценарием. А если RSA эффективен только в некоторых случаях? Предположим, что у проблемы, такой так CLIQUE, являющейся NP-полной, не может быть полиномиального алгорит- ма. Также предположим, что в реальной жизни 99,999 % случаев, представленных в CLIQUE, могут быть эффективно решены. Возможно, все остальные случаи со- ставляют явное меньшинство. Зачем же тогда останавливаться на худшем случае и не попытаться справиться с теми, которые действительно можно решить? Многие из сложных проблем NP — это проблемы оптимизации: найти самый эффективный маршрут для коммивояжера, запрограммировать производство про- дуктов на фабрике таким образом, чтобы это обеспечило максимальный доход, или оптимальным образом расположить на полке несколько предметов разного размера. Возможно, средняя сложность таких проблем приемлема. Представим себе, что за- ведующая фабрикой говорит управляющему: «Я хочу, чтобы вы запрограммировали производство утреннего печенья таким образом, чтобы гарантировать наибольшую выгоду при наименьших затратах». Управляющий, который по образованию про- граммист, сообщает ей о существовании проблемы Р J=NP и говорит, что выпол- нить эту просьбу невозможно. Прагматичная заведующая увольняет программи- ста и ищет рабочего с десятью годами опыта, который говорит ей: «Послушайте, я не знаю, будет ли это наилучшим методом, но мне кажется, что мы могли бы 120
ПОСЛЕДНЯЯ ГРАНИЦА? запрограммировать производство следующим образом. Мне это дало хорошие ре- зультаты». Заведующая удовлетворенно улыбается и назначает его управляющим, в то время как наш программист оказывается на улице, жалуясь на несправедли- вость. А заведующая говорит про себя: «Лучшее — враг хорошего». Левин разработал теорию для работы с проблемой средней сложности. Теория основывается на понятии средней входной цепочки. Например, средний граф об- разуется произвольным образом в любом вероятностном распределении (которое должно быть вычислимо). Можно доказать, что произвольный граф для CLIQUE имеет среднюю сложность O(n21nn). 3COLOR, проблема раскраски карты тремя цветами так, чтобы две соседние страны не были одного и того же цвета, может быть решена в большинстве случаев за линейное время О(п). Какое отличие от наихуд- шего случая, сложность которого порядка 0(2")! В теории Левина определяются классы distP и distNP, аналогичные классам Р и NP, но с вычислимыми распределениями; вводится понятие сведения, примени- мого к этим распределениям, и доказывается существование distNP -полных про- блем. Больше практически ничего не известно, хотя этой теории уже около трех десятков лет. В частности, distP distNP является открытым вопросом, и не- известно, существует ли какая-то связь между этими двумя классами и Р и NP. Однако на практике очень полезно работать со средней сложностью и пытать- ся подбираться к нерешаемым проблемам с помощью эвристики, как это делали в Блетчли-парке, когда сталкивались с обстоятельством, неподдающимся их алго- ритмам. Эвристика — это метод решения проблем, основанный на опыте, который ЭВРИСТИКА ДЛЯ ПРОБЛЕМЫ КОММИВОЯЖЕРА Другая эвристика, дающая отличные результаты, - «разделяй и властвуй». Если проблема боль- шая, то для того чтобы избежать комбинаторного взрыва и удерживать ее в рамках вычисли- тельных возможностей современного компьютера, попытаемся разделить ее на подпроблемы. Это хорошо работает для некоторых проблем оптимизации. Например, проблема коммивояжера нерешаема, но можно представить, что вместо того, чтобы искать решение для 2 тысяч горо- дов, мы делим карту на прямоугольные области среднего размера. Если в одной области все еще слишком много городов, делим ее на подобласти, и так до тех пор, пока все наши области не достигнут приемлемого размера. Затем решаем проблему отдельно для каждой области и со- единяем два ближайших города двух смежных областей. Решение не обязательно оптимально, но оно может быть довольно хорошим. 121
ПОСЛЕДНЯЯ ГРАНИЦА? не гарантирует оптимального решения, но приближается к довольно хорошему вари- анту. Это то, что мы называем «на глазок». Как мы уже сказали, существуют эвристики, пригодные для решения довольно большого количества практических случаев NP-полных проблем. Возьмем пробле- му трех красок. Она кажется несерьезной, но имеет важные применения, например оптимальное ведение учета в центральном подразделении, обрабатываемого ком- пьютером или подобным устройством. Проблема для четырех красок решена: было доказано, что раскрасить любую карту четырьмя цветами возможно всегда, но про- блема трех красок иногда имеет положительное решение, а иногда — отрицатель- ное. Например, штат Невада в США и его соседи не могут быть раскрашены в три цвета. Возьмем одну краску для Невады. У нас еще два цвета для ее пяти соседей, по логике, мы должны чередовать краски в смежных штатах. Но чередование хро- мает, потому что число штатов нечетное, и мы обязательно закончим тем же цветом, что и начали. Если Калифорния красная, Орегон зеленый, Айдахо красный, Юта зеленая, каким цветом покрасить Аризону, чтобы она отличалась от Калифорнии, Юты и самой Невады? Как можно заметить на рисунке ниже, решения нет. Проблема трех красок (на рисунке - различными оттенками серого) на карте на примере штата Невада и соседних с ним штатов. 122
ПОСЛЕДНЯЯ ГРАНИЦА? Следовательно, эвристика предлагает определить, является ли число границ чет- ным. Если это так, очень вероятно, что мы сможем закрасить карту тремя цветами. Если оно нечетно, мы не сможем этого сделать. Этот пример очень похож на веро- ятностные алгоритмы ВРР. Одна из оригинальных NF-полных проблем Карпа — это проблема покрытия графа (VERTEXCOVER). Покрытие Q — это такой субграф 3~С, что все ребра Q содержат по крайней мере один из узлов 3~С. Изначальная проблема — найти минимальное покрытие (с наименьшим числом узлов). Эта проблема нерешаема, но иногда изменение формулировки проблемы приводит нас к более эффективно- му решению. Представим себе, что мы снижаем наши требования и довольствуемся тем, что находим не минимальное покрытие, а нижнюю границу: число, о котором мы уверены, что любое другое покрытие будет иметь больше узлов, чем наше число. Это приводит к формулировке теории приближений, в которой пытаются до- казать, каков наихудший случай приближения. В VERTEXCOVER возможная эвристика заключается в том, чтобы выбрать двух друзей случайно и пометить их включенными в покрытие 3~С. Затем мы ищем еще двоих, ни один из которых еще не включен, и помечаем их как включенных. Можно доказать, что в этом алгоритме покрытие всегда будет максимум двойного размера по отношению к минимальному и что он завершится за полиномиальное время. Мы не знаем, можно ли решить за- дачу лучше, но если P^NP, то это невозможно. Действительно, если мы слишком приблизимся к оптимальном решению, окажется, что P = NP! Это удивительно. Мы считали, что все NP-сложные проблемы равносильны, но оказывается, что и они делятся на категории. Для некоторых мы знаем, что су- ществуют алгоритмы, предоставляющие нам приближение, которое максимум в два раза больше реального минимального покрытия. Зато в других проблемах, таких как проблема коммивояжера, невозможно найти приближение, которое в целом гаран- тировало бы нахождение на постоянном отдалении от оптимального маршрута, хотя в отдельных случаях есть алгоритмы, которые гарантируют постоянное отклонение, такие так алгоритм Кристофидеса. Но самое удивительное в том, что есть проблемы, для которых существование приближения лучше некоторого порога означало бы, что P = NPB случае с VERTEXCOVER мы не можем надеяться найти покрытие, которое бы меньше, чем примерно на треть, отставало от минимального покрытия, если верно, что P^NP. А если бы нам удалось добиться лучшего результата, это означало бы, что P = NP. Это прямое следствие из так называемой теоремы РСР, 123
ПОСЛЕДНЯЯ ГРАНИЦА? которую некоторые считают самым важным результатом в теории сложности после теоремы Кука — Левина, опубликованной за 20 лет до этого. Теорема РСР очень любопытна. В ней говорится, что если P^NP, то пейзаж нельзя представить в следующем виде: два больших плато, верхнее — с NP-полными проблемами и нижнее — с проблемами, которые не принадлежат Р и потому не яв- ляются NP-полными, у их подножия расположена долина под названием Р. Нет, все NP -полные проблемы на самом деле представляют собой горную цепь с пиками раз- ной высоты, на одни из них легко взобраться, а на другие — нет. Самое любопыт- ное: если бы мы нашли по какой-либо из этих гор путь полегче, то вся горная цепь обрушилась бы вместе с нижним плато, и мы внезапно оказались бы в долине Р. У этой теоремы есть и другая сторона. Действительно, помимо интерактив- ных доказательств, с которыми мы познакомились в прошлой главе, существу- ет еще один класс множественных интерактивных доказательств MIP, в которых есть не один демонстратор, а по крайней мере два, и их ответы должны совпадать. На бытовом уровне это похоже на допрос двух подозреваемых, который ведется с каждым из них наедине, чтобы, отвечая, они не влияли друг на друга. Можно доказать, что MIP = NEXP. 7b есть перед нами самый мощный класс, который мы упоминали в этой книге, при этом мы просто ввели еще один демонстратор. Эту ситуацию можно смоделировать в виде огромной таблицы, которая включает в себя все возможные ответы демонстраторов на вопросы верификатора. Если этой таблице задать постоянное число q произвольных вопросов, предположив, что у таблицы линейный размер, мы столкнемся с тем, что класс, в котором находятся эти проблемы (назовем его просто РСР), равен NP! Другими словами, в теореме РСР говорится, что существует вероятностная характеристика NP в терминах ин- терактивных доказательств; что любая проблема NP имеет высокоэффективный ве- рификатор (линейная таблица, постоянное число вопросов), если мы допустим, что этот верификатор всегда будет принимать истинный сертификат (результат этих q вопросов) и с высокой долей вероятности отвергнет ложный сертификат. Итак, мы начали путешествие с NP; мы ввели вероятность (ошибочность), интерактив- ность и множественные демонстраторы и вернулись к NP, к исходной точке. Это удивительно. Хотя существует много проблем, для которых мы ищем эффективное решение, криптография стремится ровно к противоположному — усложнить жизнь крип- тоаналитикам. Как и можно предположить, в этой области проводятся усиленные исследования, сосредоточенные на том, чтобы сделать проблемы более сложными с помощью дисциплины, названной увеличение сложности. 124
ПОСЛЕДНЯЯ ГРАНИЦА? Квантовое вычисление и реальное вычисление С учетом всего предыдущего и особенно убежденности в том, что P^NP, кажет- ся, что криптография в безопасности, но это не так. На горизонте появляется но- вая угроза — квантовое вычисление. Оно опирается на идею Ричарда Фейнмана (1918—1988), который в 1982 году задался вопросом об огромной сложности моде- лирования квантовых систем на компьютерах. Фейнман высказал предположение, что, возможно, эту проблему мог бы решить квантовый компьютер. Похоже, до на- стоящего времени этот компьютер так никто и не построил, хотя недавно предприятие D-Wave заявило, что ему это удалось. Похоже, с квантовым компьютером связаны огромные технологические проблемы, поэтому некоторые считают, что квантового вычисления не будет никогда. Однако это не мешает нам изучать его гипотетически. Квантовое вычисление возникает на основе одного из странных явлений, распро- страненных в квантовой механике. В 1935 году Альберт Эйнштейн (1879—1955), Борис Подольский (1896—1966) и Натан Розен (1909—1995) обсуждали резуль- тат, который казался им парадоксальным. В квантовой теории состояние системы описывается как волновая функция \|/, которую можно толковать как меру вероят- ности того, что система находится в том или ином состоянии. Самый знаменитый пример этого — кот Шрёдингера, закрытый в коробке, в которой идет процесс радиоактивного распада с некоторой вероятностью высвобождения ядовитого газа. В обычном мире кот был бы мертв или жив. Нов квантовом мире кот существует в суперпозиции двух квантовых состояний, |жпе) и |jwepme), что мы представим, опустив технические детали, в виде: = | лшв) + \мертв). Представление парадокса Шрёдингера. 125
ПОСЛЕДНЯЯ ГРАНИЦА? Кот либо жив, либо мертв, в соответствии с некоторой вероятностью. Главный вопрос в том, что мы этого не узнаем, пока не откроем коробку, и в этот момент останется только одна возможность — та, которую мы будем наблюдать. Мы го- ворим, что волновая функция разрушилась. В мире классической физики ничего подобного нет. Эйнштейна, Подольского и Розена ситуация не удовлетворяла, и они осуще- ствили мысленный эксперимент, который привел к невозможным результатам. Представим себе два фотона; будучи квантами света, они представляют собой яв- ление, называемое поляризацией, именно благодаря ему мы смотрим фильмы в 3D. Мы можем сделать так, что два фотона «переплетутся» таким образом, что один из них всегда будет иметь горизонтальную поляризацию, а второй — вертикальную. Мы не будем знать, какая она для каждого из них: волновые функции обоих фото- нов создадут такую комбинацию, что получится одна волновая функция, и у каждо- го фотона будет 50 % вероятности иметь заданную поляризацию. Выяснив поляри- зацию одного фотона, мы узнаем и поляризацию другого. Теперь представим себе, что мы уведем эти фотоны так далеко друг от друга, что они не смогут взаимодействовать. Согласно квантовой механике, даже если они не будут взаимодействовать, они останутся переплетенными, так что если мы измерим поляризацию одного фотона, поляризация другого будет определена сразу же, хотя невозможно, чтобы информация мгновенно передавалась от одного к другому, поскольку никакая информация не может двигаться так же быстро, как свет. Если бы один фотон был на Марсе, а другой на Земле, изменение состояния обоих было бы мгновенным, хотя информации, двигающейся со скоростью света, потребовалось бы около пяти секунд на дорогу. В квантовом вычислении базовыми единицами являются не биты, нули и едини- цы, а так называемые кубиты. Кубит — это квантовое состояние до измерения, до разрушения волновой функции. Это суперпозиция двух возможных состояний, |0) и |1). Их вероятность в конце концов оказаться в любом из них будет варьиро- ваться в соответствии с: у=|0>+|1>. Представим кубит в двух измерениях, как точку на окружности круга радиусом один. Если мы пометим ось абсцисс как вероятность быть равным единице (уве- ренность), а ось ординат — как нуль, мы можем вычислить вероятности с помо- щью элементарных тригонометрических функций, отраженных на рисунках на сле- дующей странице. Р(|1» — это вероятность того, что кубит является истинным 126
ПОСЛЕДНЯЯ ГРАНИЦА7 (находится в состоянии |1», а Р(|0» — вероятность того, что он ложный (нахо- дится в состоянии 10) ). Р(| 1)) = cos2(a) = cos2(60°) = (1 /2)2= 0,25 Р( 11)) = cos2( р) = cos2(225°) = (->/2/2) 2= 0,5 Р(| 0)) = sin2(a) = sin2(60°) = (V3/2)2= 0,75 Р(|о)) = sin2( р) = sin2(225°) = (-^2/2)2= 0,5 Два кубита с различными вероятностями. Обратите внимание на отрицательные координаты второго кубита, которые превращаются в положительную вероятность при возведении в квадрат. Представим себе футбольное пари, в котором есть только один матч и можно только выиграть или проиграть. В этом случае мы могли бы представить только один кубит в качестве вероятности того, что «Барса» выиграет у «Мадрида». Если бы мы добавили другие матчи, «Атлетико де Мадрид» против «Севильи», «Валенсия» против «Реал Сосьедад» и так далее, наше пари, пока не будут сыграны все матчи, будет суперположением нескольких кубитов. Если бы пари состояло из двух матчей, было бы четыре возможных результата, 100), 101), 110) и 111). Если бы их было три, было бы восемь состояний. В целом число состояний равно 2", где и — число матчей. Получается, что мы можем выполнять операции с этим суперположением куби- тов, когда не разрушается волновая функция. Мы можем, например, вращать кубит на заданный угол или отразить его относительно некой оси. Получается, что мы манипулируем экспоненциальным множеством битов, хотя наша входная цепочка насчитывала только п битов! На первый взгляд это очень мощно. Наши алгоритмы действуют в экспоненциальном пространстве до конечного измерения, в котором все кубиты разрушаются и выдают нам ответ, состоящий только из и битов. Между тем мы работаем в экспоненциальном пространстве в течение времени, которое вполне может быть полиномиальным. Более того: мы можем доказать, что квантовое вычисление локально, то есть мы можем воспроизвести любую квантовую операцию с элементарными операциями, которые требуют работы максимум с тремя кубитами. Мы говорили о том, что клас- сические цепи могут быть смоделированы с помощью трех шлюзов, или вентилей, 127
ПОСЛЕДНЯЯ ГРАНИЦА? AND, OR и NOT, хотя на самом деле достаточно одного, вентиля XOR, кото- рый говорит: «либо это, либо то, но не оба». В квантовом вычислении существуют эквиваленты этим элементарным вентилям, только их не так просто определить. Существует, например, вентиль, называемый Тоффоли (по имени его изобретателя Томаса Тоффоли), подобный XOR: он может смоделировать все остальные вен- тили. Это доказывает, что квантовый компьютер может осуществить любую клас- сическую операцию. Существует много других квантовых вентилей, которые могут быть представлены как матрицы, трансформирующие вектор (цепочку кубитов). Не будем вдаваться в детали, но мы можем представить себе самые простые вентили в рамках вращений и отражений кубитов. ПРИМЕР ВОЗМОЖНОСТЕЙ КВАНТОВОГО ВЫЧИСЛЕНИЯ: ТЕОРЕМА БЕЛЛА Зевс задает Гектору один из вопросов: а. Ты предпочитаешь любовь или войну? Ь. Ты предпочитаешь Трою или Грецию? Затем он задает один из следующих двух вопросов Ахиллесу, который должен дать ответы, противоположные ответам Гектора, чтобы победить его. 1. Ты предпочитаешь Ареса (бога войны, поддерживающего греков) или Афродиту (богиню любви, поддерживающую троянцев)? 2. Ты предпочитаешь читать «Илиаду» или миф об Орфее? Ахиллес знает, что Гектор предпочитает любовь войне и Трою - Греции, поэтому если ему за- дать вопрос (1), он ответит «Арес», что противоположно обоим предпочтениям Гектора. Но если ему задать вопрос (2), у него будет 50% вероятности угадать, и ему придется выбирать наугад. Следовательно, Ахиллес выиграет в 75% случаев: 50% вероятности того, что ему зададут вопрос (1) • 100% вероятности того, что он даст верный ответ '50% + 50% вероятности того, что ему зададут вопрос (2) • 50% вероятности того, что он даст верный ответ » 25% 50% + 25% - 75%. Физик Джон Белл (1928-1990) доказал, что если бы вопросы были переплетенными фото нами, Ахиллес мог бы выиграть в 85% случаев. Хотя это невозможно воспроизвести в обычном мире, но на этом странном результате основываются возможности квантового вычисления. 128
ПОСЛЕДНЯЯ ГРАНИЦА? Классические классы имеют свои квантовые корреляты. В частности, Р в кван- товом мире обозначается как BQP — квантовые проблемы, решаемые за полино- миальное время. Наивно считать, что квантовое вычисление по крайней мере так же мощно, что и классический класс ЕХР, поскольку, как мы уже видели, мы можем работать в пространстве с 2П состояний, прежде чем произвести измерение, транс- формируя волновую функцию в полиномиальную цепочку из классических битов. Это не так. На самом деле мы можем доказать, что BQP е PSPACE. Мы не знаем, каково отношение между BQP и NP. Лов Гровер (1961) доказал в 1996 году, что SAT может решаться на квантовом компьютере за О(2"^2), то есть вместо того чтобы занимать, например, О(2100) шагов, это могло бы занять «всего лишь» О(250). Время для NP-полных проблем сокращается наполовину, но оста- ется экспоненциальным. Тогда кажется, что BQP NP. Но существует проблема, принадлежащая BQP, и неизвестно, принадлежит ли она NP. Если это доказать, получится, что NP£BQP, и, возможно, это указывает на то, что речь идет о двух классах, отношения между которыми могут быть установлены простым способом. Однако мы знаем, что в квантовом вычислении существует алгоритм, который решает за полиномиальное время знаменитую проблему разложения на множи- тели — сердце алгоритма RSA. Речь идет об алгоритме Питера Шора (1959). Этот алгоритм, опубликованный в 1994 году, может быть выполнен за О(п3), яв- но полиномиальное время, где п — длина знаков числа, которое нужно разложить на множители. Это революционный результат: если возможно квантовое вычисле- ние, то проблема, о которой мы не знаем, является ли она NP-полной, но о которой мы знаем, что она сложная и принадлежит NP, может быть решена эффективным способом. А поскольку разложение на множители лежит в основе криптографии с открытым ключом, у квантового вычисления был бы тот же эффект, как если бы мы доказали, что P = NP: алгоритм RSA перестал бы быть надежным. Но вспомним, что Прометей одной рукой нам дает, а второй — тут же забирает обратно. Сама квантовая теория предлагает нам решение криптографической про- блемы. Изначальный алгоритм зависит от того факта, что при измерении поляриза- ции мы получаем точный результат, только если наше измерение (основа) сведено в одну линию с исходной поляризацией, горизонтальной или вертикальной; если де- лать это вдоль диагоналей, половина фотонов будет поляризована горизонтально, а другая половина — вертикально. 129
ПОСЛЕДНЯЯ ГРАНИЦА? Представим себе, что Брисеида посылает цепочку битов, выбирая серию основ произвольно. Ахиллес читает эту цепочку, также выбирая произвольные основы. Брисеида звонит ему и говорит, какие основы она использовала. Ахиллес отвечает, в каких случаях он измерял с правильной основой. Оба исключают биты, измерен- ные неправильным образом, и получают ключ с половиной битов оригинального со- общения. Подробнее это показано на следующем рисунке. Посланные значения битов Посланные фотоны Основы, выбранные фй ВН Полученные фотоны Т Т I Полученные значения битов 1 1001001 Конечный ключ — 1 — 0 1 — 0 — Квантовая криптография зависит от такого крайне важного факта, что кубит не может быть скопирован. Для копирования его нужно измерить, а это разрушает кубит. Если Улисс будет шпионить, он не только не сможет узнать ключ, но и обяза- тельно разрушит некоторые биты. Ахиллес и Брисеида могут сравнить 50 % своих битов, чтобы узнать, шпионят ли за ними; и если не шпионят, они будут использо- вать оставшиеся 50 %, чтобы выполнить предыдущий алгоритм. Квантовую крип- тографию успешно опробовали на сообщениях некоторой длины: кажется, техноло- гически это возможно. Применение алгоритма Шора не пошло дальше разложения на множители числа 15. До создания большого квантового компьютера, который может рабо- тать с огромными числами, используемыми в алгоритме RSA, еще очень далеко. Технологический вызов базируется на том, что переплетение очень хрупко: любое взаимодействие с окружающей средой «измеряет» его, то есть разрушает, а после этого нет способа его восстановить. Из-за этого многие с пессимизмом говорят о возможности когда-нибудь считать на квантовых компьютерах. Некоторое время думали, что ошибки, вызванные хрупкостью переплетения, невозможно преодолеть, однако сам Шор доказал, что существуют реальные механизмы их исправления. 130
ПОСЛЕДНЯЯ ГРАНИЦА? Если нам удастся создать квантовые компьютеры, сильный тезис Чёрча — Тьюринга, предполагающий отсутствие физических компьютеров, более эффек- тивных, чем машина Тьюринга, благодаря алгоритму Шора окажется ложным. А можно ли обобщить метод Шора применительно к проблемам, о которых мы дей- ствительно знаем, что они NP -полные? Похоже, нет. Шор пользовался очень спе- цифическими характеристиками математической структуры проблемы разложения на множители. Он применил так называемое квантовое преобразование Фурье — метод, который, похоже, нелегко обобщить по отношению к другим проблемам. Квантовое вычисление, насколько мы знаем, не решает нашей дилеммы, связанной с нахождением алгоритмов, которым бы удалось свести на нет классическое раз- личие между Р и NP. Как же соотносится квантовое вычисление с вероятностным? В конце концов, кажется, что у них есть общее — произвольный мир, в котором они находятся. Мы знаем, что BPPczBQP. Вероятно, существуют математические различия, кото- рые дают квантовому вычислению большую силу. Оказывается, что квантовое NP подобно МА. Поэтому аналог NP в квантовом мире обозначается как QMA. Мы можем определить интерактивные квантовые доказательства в несколько этапов и сделать вывод о том, что достаточно трех этапов для того, чтобы охватить всю сложность PSPACE. Мощь квантового вычисления действительно велика. Были попытки создать и другие вычислительные модели. Кратко упомянем одну из них, которая пытается имитировать непрерывные процессы, более свойственные физике, чем вычислению. Все машины, о которых мы говорили, работают с нату- ральными числами. Но можно ли придумать машину, которая работала бы с дей- ствительными числами, то есть со всеми точками числовой прямой? Аенор Блюм (1942), Майкл Шуб (1943) и Стивен Смейл (1930) определили модель, в которой машина Тьюринга обобщается способом, подобным тому, что мы видели при ариф- метизации: превращая булевы цепи в алгебраические, но с той разницей, что сейчас наши переменные — действительные числа. Это увеличивает количество матема- тических методов, которые мы можем применить к проблеме. Можно доказать, что модель BSS, названная так по именам ее авторов, более мощная, чем классическая машина Тьюринга: она могла бы решать за полиномиальное время NP-полные про- блемы и даже некоторые нерешаемые проблемы. Однако никто не знает, как собрать компьютер, которые бы следовал этой модели, потому что в ней требуется хранить в памяти числа с бесконечной точностью. Например, число 7Г имеет бесконечное ко- личество знаков после запятой, мы можем их узнать, только написав его полностью, потому что знаки не следуют ни одной предсказуемой модели. Можно доказать, что 131
ПОСЛЕДНЯЯ ГРАНИЦА? в реальном вычислении также есть нерешаемые проблемы. В одной из них спра- шивается, принадлежит ли заданная точка знаменитому множеству Мандельброта, преимущественно фрактальному. Реальное вычисление, как и другие активно ис- следуемые модели (такие, например, как вычисление, основанное на химических реакциях), не панацея. СЧИТАТЬ ТОЖЕ СЛОЖНО Хотя большинство проблем, которых мы коснулись, - это проблемы разрешения, мы не должны думать, что теория сложности ограничивается ими. Есть некоторые проблемы функции, которые обобщают проблемы разрешения. Вместо того чтобы спросить, существует ли цикл в графе (CYCLE), мы можем задаться вопросом, сколько циклов в нем существует (#CYCLE). Резуль- тат здесь уже не «да» или «нет», а натуральное число. Некоторые проблемы такого рода могут быть решены за полиномиальное время с помощью недетерминированной машины Тьюринга, где число всех путей к состояниям допуска и является искомым результатом. Если решение вычисляется за полиномиальное время, множество этих проблем образует класс #Р. Ясно что Рс#Р, поскольку подсчет решает соответствующую проблему разрешения. Существуют #Р-полные проблемы, такие, как #SAT, коррелят разрешения которой является NP-полным. Но есть другие внешне сложные проблемы, такие как #CYCLE, коррелят которых принадлежит Р. Однако можно доказать, что если как #SAT, так и #CYCLE имеют полиноми- альные алгоритмы, то P = NP. В более общем виде, если мы определим FP как класс проблем функции, решаемых за полиномиальное время, если #P = FP, то P = NP. Есть и другой интересный результат, доказывающий, что счет дает больше возможностей, чем вся полиномиальная иерархия, - это теорема Тода: PH = P#SAT. Любая проблема в иерархии может быть решена за полиномиальное время с помощью оракула, который решает #SAT. Выводы Теория вычислительной сложности пытается рассуждать в абстрактном виде о слож- ности, присущей проблемам, что не только имеет очевидную практическую пользу, но и ведет к глубоким философским выводам. Мы говорили о некоторых из них, на- пример, когда отмечали, что, возможно, причина, по которой P^NP, в том, что акт творчества, необходимый для нахождения решения, несравним с проверкой резуль- татов и не может быть сведен к ней. Мы также видели, что если ввести ошибочность и интерактивность, особенно больше одного демонстратора, это повышает наши возможности решить проблемы за полиномиальное время. У нас много интуитивных 132
ПОСЛЕДНЯЯ ГРАНИЦА'? догадок, но мало уверенности. Выводы из предположения, что P^NP, и другие ре- зультаты проливают свет на глубокие математические проблемы. Помимо значения в философии математики, эти проблемы помогают нам понять саму суть наших мыслительных процессов. Мыслящие машины были описаны в на- учной фантастике. В знаменитом фильме «Бегущий по лезвию» репликанты почти неотличимы от человеческих существ. Один из них умирает, жалуясь, как это де- лал бы человек: «Я видел такое, что вам, людям, и не снилось. Атакующие корабли, пылающие над Орионом. Лучи Си, разрезающие мрак у ворот Тангейзера. Все эти мгновения затеряются во времени, как слезы в дожде. Пришло время умирать». Репликанты так совершенны, что для того, чтобы узнать, настоящие ли они, нужно применить к ним тест, основанный на тесте, разработанном Аланом Тьюрингом при- мерно за 30 лет до этого. Представим себе компьютер или человека закрытыми в комнате с телетайпом. Экзаменатор, находящийся снаружи и не знающий, с кем он беседует, задает во- просы через телетайп и получает тем же способом ответы. Задача экзаменато- ра — определить, компьютер с ним говорит или человек. Тьюринг утверждает: ес- ли экзаменатор не сможет различить их после нескольких попыток, значит, можно утверждать, что компьютеры способны мыслить, как человек. Пока пройти тест Тьюринга не удалось ни одному компьютеру, но главный вопрос заключается в том, смогут ли они когда-нибудь это сделать. А 133
ПОСЛЕДНЯЯ ГРАНИЦА? Тест Тьюринга стал головоломкой и для философов, потому что в нем затрагива- ется одна из самых сложных проблем философии: что такое сознание? Являемся ли мы просто множеством алгоритмов, выполняемых нашим разумом, который, в свою очередь, не что иное, как очень сложный компьютер, или в нашей голове есть что-то еще? Многие философы и ученые-когнитивисты склоняются к тому, что разум — это действительно компьютер, работу которого нам когда-нибудь удастся раскрыть. Это то, что мы называем компьютерной моделью разума. Другие философы неис- тово противостоят этому мнению и приписывают сознанию роль наблюдателя. Джон Сёрль (1932), один из этих философов, предложил свой вариант теста Тьюринга. «Представьте себе, — сказал он, — запертую комнату, в которой нахо- дится человек, не знающий китайского языка. У него есть две вещи: огромная табли- ца, в которой написаны все возможные фразы на китайском, и серия карточек с ки- тайскими иероглифами. Вопрошающий, который, в свою очередь, знает китайский, передает ему через щель вопрос, записанный китайскими иероглифами. Человек в комнате читает иероглифы, ищет их в таблице и сочиняет ответ, который ему под- сказывает таблица, а затем через ту же щель отдает ответ вопрошающему. Задача вопрошающего — определить, знает ли человек в комнате китайский язык». Сёрль задается вопросом: можно ли сказать, что человек в комнате говорит по-китайски? Конечно же, нет. «Китайская комната» Сёрля. Существует интересная критика, основанная на теории сложности: таблица, о ко- торой говорит Сёрль, без сомнения, имела бы экспоненциальный размер и должна была бы содержать больше клеток, чем количество атомов во Вселенной. Ясно, что перед нами метод прямого перебора. Человек, говорящий по-китайски, может отве- тить на любой вопрос за полиномиальное время. Это явно указывает на то, что тест 134
ПОСЛЕДНЯЯ ГРАНИЦА? Сёрля невыполним и что ни один человек, не знающий китайского, не сможет его пройти за полиномиальное время. Возможно, тест Тьюринга также связан с этим полиномиальным временем: мы, люди, за полиномиальное время даем осмысленный ответ на любой вопрос. Если мы представим сюжет, подобный предыдущему, с огромной таблицей со всеми возмож- ными вопросами и связанными с ними ответами, ясно, что размер таблицы делает операцию невыполнимой. Если использовать только алгоритм прямого перебора, компьютеры никогда не смогут сравняться с людьми. Однако тест Тьюринга выявил важные идеи, о которых мы говорили в этой книге: действительно, он вероятност- ный, предполагает взаимодействие и основывается на том, чтобы держать в секрете происходящее в комнате. Возможно, это даст нам ключ к пониманию того, как ра- ботает наш разум. С этим пониманием очень тесно связана проблема знания. Когда мы можем ска- зать, что что-то знаем? На первый взгляд существуют разные типы знания. Нам известны некоторые факты, например то, что полуденное небо голубое, и на основе этого можно сделать простые (полиномиальные) выводы о том, что это небо не зе- леное. Ну а если вывод не такой непосредственный? Я могу знать аксиомы арифме- тики, но это не помогает мне проверить истинность теоремы Ферма. Проще говоря, можно знать, что 41 — простое число, но гораздо сложнее определить то же самое относительно р — 243112609—1, которое также простое. Мы знаем, что простых чисел бесконечно много, следовательно, должно существовать число р’, которое является следующим простым числом после р. Проблема в том, что у нас нет эффективного способа найти его. Понятно, что это придает нашему знанию о р’ меньшее значение, чем нашему знанию о р. Мы считаем, что что-то знаем, или, по крайней мере, что знаем это «лучше», если у нас есть алгоритм для того, чтобы эффективно это вы- числить. Возможно, мы «лучше» знаем то, что можем построить. Граница между тем, что мы знаем непосредственно, и тем, что мы знаем по- сле трудоемкого умственного процесса, довольно нечеткая. Что еще хуже, сказать «непосредственно получается, что...» означает разные вещи для такого великого ученого, как Лев Ландау (1908—1968), и для большинства читателей его книг. Также есть вещи, о которых мы знаем, только когда нас о них спрашивают или ког- да мы об этом задумываемся. Например, хотя сначала сложно определить, являет- ся ли число простым или составным, большинство из нас ответит почти сразу, что 3290 482 080 938 420 — составное число, ведь нам давно известно, что любое число, заканчивающееся на нуль, делится на два и на пять. Другая сложность в том, что две очень похожие проблемы, имеющие, по сути, один и тот же ответ, могут 135
ПОСЛЕДНЯЯ ГРАНИЦА? быть различными в терминах знания. Я могу «узнать» в определенный момент, что 127 • 449 = 57 023, но не простые множители числа 57 023. Это указание на то, что мы обычно знаем, как, лучше, чем знаем, что; мы знаем, как решать бесконечные классы проблем, лучше, чем их решения. Но как — это, естественно, эффективный алгоритм. С учетом наших представлении об ошибочности и взаимодействии в классах IP и MIP — а обе эти характеристики чисто человеческие — встает следующий во- НОВЫЙ ВИЗИТ ВО ВРЕМЯ И ПРОСТРАНСТВО Теория сложности может пролить свет на вопросы физики. Существует тип абсолютно гипотети- ческих машин, дающий нам догадки о природе времени и пространства: речь идет о машинах Тьюринга, которые путешествуют назад во времени, известных как СТС. Путешествие во времени полно парадоксов, как прекрасно знает любой поклонник сериала «Доктор Кто». Самый из- вестный из них - это парадокс дедушки: что бы произошло, если бы я поехал в прошлое и убил своего дедушку до того, как был зачат мой отец? Другой парадокс появляется в фильме «Назад в будущее», в котором Чак Берри выучил знаменитую песню Johnny В. Goode у Марти Макфлая, который выучил ее, когда Берри ее уже написал. Кажется, что это нарушает все правила причин- ности и принцип энтропии, поскольку усилие, затраченное на создание песни, исчезло. Создать что-то - вычислительно сложный процесс, и кажется совсем нелогичной его тривиальность. Дэвид Дойч (1953), один из основателей квантового вычисления, привлек внимание к этой связи и провозгласил эволюционный принцип; «Для существования знанию требуется причинность». Это также связано со временем, так как причинность должна осуществляться последователь- но и в определенном направлении. Ааронсон изложил этот принцип более понятно для нас: «Нет никакого физического способа решения NP-полных проблем за полиномиальное время». Это подразумевает, что P^NP, но это намного более сильное утверждение. Ааронсон и Джон Ватрус доказали, что машина Тьюринга СТС может решать все проблемы, принадлежащие PSPACE, и это имеет удивительное следствие: машина Тьюринга СТС приравни- вает время и пространство, разбивает асимметрию между ними, снимая ограничение, при ко- тором время нельзя использовать повторно. С другой стороны, можно доказать, что квантовое вычисление не добавит преимуществ путешествию во времени. 136
ПОСЛЕДНЯЯ ГРАНИЦА? прос: располагаем ли мы, люди, большими вычислительными возможностями, чем компьютер? Можем ли мы решать NP -полные проблемы за полиномиальное время? Наши догадки говорят, что нет. Даже проблемы, о которых мы не знаем, являют- ся ли они NP-полными, такие как проблема разложения на множители, сложно ре- шить и человеку, и компьютеру. Гарри Каспаров лучше играет в шахматы, чем Deep Blue, хотя компьютер и выиграл у него. Каспаров проводит системный анализ вы- сокого уровня; он не анализирует каждый возможный ход, а оценивает положение глобально, исключая из него тысячи возможных сценариев. Deep Blue, наоборот, осуществляет массивный поиск с помощью нескольких эвристик. В качестве приме- ра возьмем принцип голубей и ящиков, в котором говорятся очевидные вещи: если у человека есть голубятня из п ящиков и он попытается поместить в нее п + 1 го- лубей, неизбежно будет один ящик, в котором больше одного голубя. Это очевидно для человека, но компьютер может понять это только с помощью прямого перебора. Похоже, причина — в существовании моделей или симметрий высокого уров- ня, которые мы, люди, распознаем. Если когда-нибудь мы будем способны создать компьютер, думающий аналогичным творческим образом, то он по крайней мере ре- шит некоторые проблемы. Но почему мы так эффективно решаем это подмножество проблем, в то время как в других случаях проигрываем компьютеру? Возможно (это всего лишь предположение), потому что мы выбираем проблемы таким образом, чтобы их решение соответствовало знакомым нам моделям и симметриям. Будущее Область вычислительной сложности достаточно богата для того, чтобы содержать в себе интересные результаты, которые мы сможем узнать в течение ближайших десятилетий. Можно ли построить квантовые компьютеры или мы найдем другие формы вычислений — все это открытые проблемы теории, которые противостоят нашим традиционным методам доказательства и которые, следовательно, требуют новой математики. Есть и другие вопросы, о которых мы умолчали или которые ед- ва упомянули: существование однонаправленных функций, существование хороших псевдопроизвольных генераторов, сложность коммуникации, гипотеза об уникаль- ных играх... В этой области, которая кипит новыми идеями, десятки исследователь- ских тем. Импальяццо определил пять миров, из которых мы упомянули только два. В ка- ком из них мы живем? Почему похоже, что нет полиномиальных проблем, кото- 137
ПОСЛЕДНЯЯ ГРАНИЦА? рые бы сильно возрастали (скажем, О (nlol°°)), но зато есть много проблем, которые находятся вблизи маленьких коэффициентов, таких как О(п5)? Почему, похоже, нет очень маленьких экспоненциальных проблем, таких как 0(0,00000000001")? Почему есть NP-полные проблемы, которые оказываются для компьютеров таки- ми же сложными, как и для людей, но есть другие сложные проблемы, при решении которых люди относительно легко улавливают основные модели? Откуда следует наше интуитивное представление, что P^NP? Говорят ли интерактивные доказа- тельства что-то о том, отличается ли знание, общее для социума, от знания, кото- рое мы храним для себя? Является ли соотношение P^NP независимым от аксиом арифметики и, следовательно, не может быть доказано на их основе? Нетрудно предсказать, что теория вычислительной сложности приготовила нам новые открытия о наших собственных мыслительных процессах и глубокой структу- ре математики. Что ж, будем ждать. 138
Библиография AARONSON, S. у WlGDERSON, A., Algebrization: A New Barrier in Complexity The- ory, ACM Transactions on Computing Theory 1(1), 2009. ARORA, S. у Barak, B., Computational Complexity, a Modern Approach, Nueva York, Cambridge University Press, 2009. BALARI, S., «Desarrollo у complejidad computacional. c’Dos elementos clave para com- prender los origenes del lenguaje?» en Ludus Vitalis, vol. XIII, num. 24, Bellaterra (Barcelona), Universidad Autonoma de Barcelona, 2005. BEAUME, P. у RE, C., «Interactive Proofs and Arthur-Merlin Games», apuntes de la clase n.° 9 del curso CSE532, Seattle, Washington, University of Washington, 2004. COPELAND, B. J., Posy, C. J. у SHAGRIR, O., Computability. Turing, Cbdel, Church and Beyond, Cambridge, Massachussetts, The MIT Press, 2013. COPELAND, B. J., The Essential Turing, Londres, Clarendon Press, 2004. COPELAND, B. J. ET AL (ED.), Colossus: The secrets of Bletchley Park code-breaking computers, Oxford, Oxford University Press, 2010. FORTNOW, L., The Golden Ticket: P, NP. and the Search for the Impossible, Prince- ton, Pennsylvania, Princeton University Press, 2013. GRAHAM, R. L., GROTSCHEL, M. у LOVASZ, L., Handbook of combinatorics, Cam- bridge, Massachussetts, MIT Press, 1995. HOPCROFT, J. E., MOTWANI, R. у ULLMAN, J. D., Introduction to Automata Theory, Languages and Computation, Nueva York, Pearson, 3.a ed., 2006. Ortega Triguero, J. J., LOpez-Guerrero, M. A., Garcia del Castillo Cres- po, E., Introduction a la criptografia. Historia у actualidad, Cuenca, Ediciones de la Universidad de Castilla-La Mancha, Serie Monografias, 50, 2006. SEDGEWICK, R. у Wayne, K., Algorithms, Nueva York, Addison Wesley, 4.a ed., 2010. 139

Алфавитный указатель bombe 26-31, 33, 41, 47 Ааронсон, Скотт 95, 114 алгоритм Артура — Мерлина 113—114 группировки 67—70, 73 Крускала 68, 70—71, 78 минимально покрывающего дерева 71 определение 19 Прима 71 сортировки 62—63, 65 быстрая 65 пузырьком 62—63, 65 слиянием 64—65, 69 RSA 117-119,129-130 Алгоритмика (мир) 89—91, 101, 108 арифметизация 106—107, 113—115, 131 Арора, Санджив 102, 105 Барак, Боаз 105 Блетчли-парк 9—10, 14, 21, 25—26, 31, 33, 56, 58, 77,117,121 бомбы 24—26 время логарифмическое 98 полиномиальное 63, 72—73, 78-79, 83-84, 86-91, 98- 101,105,107-109,111,117-118, 123,127,129,131-132,134— 135,137 экспоненциальное 91, 95, 129 вычислимость 38, 40—41, 46, 48, 60, 83 Гёдель, Курт 38, 40—41, 45—48, 52-53, 84 Гильберт, Давид 37—38, 40, 45, 47-48, 60, 82 граф 66-67, 70-71, 73, 88,104, 111-112,121 взвешенный 69 гамильтонов 66, 78—79 двудольный 73 измененный 112 ориентированный 94 полный 78 произвольный 121 связный 69, 73, 77 эйлеров 73, 78 дерево 65, 68—73, 78, 103 диагонализация 38—40, 50, 98, 102, 105-106,114,115 Диффи, Уитфилд 117 Дхаулагири 97, 102, 105, 115 естественное доказательство 105 Зыгальский, Генрих 22 Импальяццо, Рассел 89, 91, 102, 137 интерактивные доказательства 106— 107,115,124,138 Кантор, Георг 35, 39—40, 45, 50, 52, 98 Карп, Ричард 85, 88, 104 квантовое вычисление 7, 75, 125—127, 129,131,136 квантовое переплетение 130 китайская комната Сёрля 134—135 141
АЛФАВИТНЫЙ УКАЗАТЕЛЬ классы сложности #Р 132 полнота NP 82, 84, 85, 91, 93 AM 113-114 АМ[&] ИЗ ВРР 108-109,114,123,131 BQP 129,131 coNL 94-95 coNP 81-82,100-101 ЕХР 91-92, 95, 98,100-101,104, 129 IP 111-114,136 IP [k] 111 L 93-95 MA 114,131 MIP 124,136 NEXP 91-92, 95,124 NL 93-95 NP 7, 20, 77-83, 87, 90, 93-95, 97-111,113-115,117,119-121, 123-124,129,131-133,136, 138 NPSPACE 92-93 P 7, 73, 75, 77, 79-84, 87-93, 95, 97-105,109-109,113-115, 117, 119-121,123-124,129, 131-133,136,138 P. , 103-105 /poly PH 132 PNP 120 PSPACE 92-95,109,113-114, 129,131,136 QMA 131 Кобэм, Алан 84 криптоанализ 12—15, 20, 105 криптография 7, 10—11, 19—21, 25, 105,117-118,125,129-130 квантовая 130 полиалфавитный шифр 15 с открытым ключом 129 шифр подстановки 13, 15 шифр транспозиции 12—13 Криптомания (мир) 91 Кронекер, Леопольд 37 кубит 126—128, 130 Кук, Стивен 84—86 Левин, Леонид 84, 86, 121 Лейбниц, Готфрид Вильгельм 35, 37, 44 нерешаемости степень 100 нерешаемость 99 Нокс, Дилли 10, 25 проблема 7,10,12—14, 20, 24—25, 31, 34-35, 37, 46, 53, 72, 81, 83, 84, 90, 98-100,102-103,105,115, 117,120-123,129-135 вычислительная сложность 7, 56, 72, 79 изоморфизма графов 110—112 клики (CLIQUE) 88,104,120 коммивояжера (TSP) 77—78, 121,123 максимального паросочетания 73 мостов Кёнигсберга 66, 78 оптимизации 49, 73, 90, 120—121 остановки 48-50, 52-53, 99-100 подсчета 49,132 поиска 49, 79, 87-88, 94,137 покрытия узлов (VERTEXCOVER) 86,123 142
АЛФАВИТНЫЙ УКАЗАТЕЛЬ простоты чисел 49, 108, 118 разложения на множители (FACT) 49,118,129,131,137 разрешения 37, 49, 73, 78—81, 84-85, 88, 99,108,122,132 трех красок (3COLOR) 121—123 функции 49, 51, 79, 84, 88,132 четности (PARITY) 106 проблемы Гильберта 82 тысячелетия 82, 87 прямого перебора метод 12, 14, 70—71, 78, 86, 89,134 атака 24 алгоритм 135 Разборов, Александр 104—106 Рассел, Бертран 35—36 Реевский, Мариан 22—26 Ружицкий, Ежи 22 сведение 53, 83, 86, 88, 98, 121 скитала И Стирнс, Ричард 84 теорема Белла 128 Гёделя 38, 47—48, 53 Кука — Левина 102—123 о временной иерархии 91 Разборова — Рудича 105 Тода 132 Ферма 82, 115, 135 Тьюринга, Алана, машины 7, 40—41, 45-46, 51, 60, 73, 83, 87, 91, 99, 103,136 вероятностные 111 детерминированные 87 недетерминированные 87, 91, 99, 107 с несколькими лентами 74 с оракулом 7 Уайтхед, Альфред Норт 36 Фон Нейман, Джон 48, 64, 84 Фреге, Готлоб 35, 37 Хартманне, Юрис 84 Хеллман, Мартин 117 частотный анализ 14—15, 18 Чёрч, Алонзо 46, 48 Чёрча — Тьюринга тезис 46, 74—75, 87,100,171 эвристика 14, 21,122—124,137 Эдмондс, Джек 73, 84—85 Энигма, машина 7, 9-10,14-23, 25-31, 33, 41, 56, 77-78 Эрцог, Морис 97,102 143
Научно-популярное издание Выходит в свет отдельными томами с 2014 года Мир математики Том 43 Луис Фернандо Ареан Существуют ли неразрешимые проблемы? Математика, сложность и вычисление РОССИЯ Издатель, учредитель, редакция: ООО «Де Агостини», Россия Юридический адрес: Россия, 105066, г. Москва, ул. Александра Лукьянова, д. 3, стр. 1 Письма читателей по данному адресу не при- нимаются. Генеральный директор: Николаос Скилакис Главный редактор: Анастасия Жаркова Выпускающий редактор: Людмила Виноградова Финансовый директор: Полина Быстрова Коммерческий директор: Александр Якутов Менеджер по маркетингу: Михаил Ткачук Менеджер по продукту: Яна Чухиль Для заказа пропущенных книг и по всем вопро- сам, касающимся информации о коллекции, за- ходите на сайт www.deagostini.ru, по остальным вопросам обращайтесь по телефону бесплатной горячей линии в России: « 8-800-200-02-01 Телефон горячей линии для читателей Москвы: ® 8-495-660-02-02 Адрес для писем читателей: Россия, 600001, г. Владимир, а/я 30, «Де Агостини», «Мир математики» Пожалуйста, указывайте в письмах свои кон- тактные данные для обратной связи (телефон или e-mail). Распространение: ООО «Бурда Дистрибьюшен Сервисиз» УКРАИНА Издатель и учредитель: ООО «Де Агостини Паблишинг» Украина Юридический адрес: 01032, Украина, г. Киев, ул. Саксаганского, 119 Генеральный директор: Екатерина Клименко Для заказа пропущенных книг и по всем вопро- сам, касающимся информации о коллекции, за- ходите на сайт www.deagostini.ua, по остальным вопросам обращайтесь по телефону бесплатной горячей линии в Украине: ® 0-800-500-8-40 Адрес для писем читателей: Украина, 01033, г. Киев, а/я «Де Агостини», «Мир математики» Украша, 01033, м. Ки!в, а/с «Де Агоспю» БЕЛАРУСЬ Импортер и дистрибьютор в РБ: ООО «Росчерк», 220037, г. Минск, ул. Авангардная, 48а, литер 8/к, тел./факс: (+375 17) 331-94-41 Телефон «горячей линии» в РБ: ® + 375 17 279-87-87 (пн-пт, 9.00-21.00) Адрес для писем читателей: Республика Беларусь, 220040, г. Минск, а/я 224, ООО «Росчерк», «Де Агостини», «Мир математики» КАЗАХСТАН Распространение: ТОО «КГП «Бурда-Алатау Пресс» Издатель оставляет за собой право увеличить реко- мендуемую розничную цену книг. Издатель остав- ляет за собой право изменять последовательность заявленных тем томов издания и их содержание. Отпечатано в соответствии с предоставленными материалами в типографии: Grafica Veneta S.p.A Via Malcanton 2 35010 Trebaseleghe (PD) Italy Подписано в печать: 24.09.2014 Дата поступления в продажу на территории России: 11.11.2014 Формат 70 х 100 / 16. Гарнитура «Academy». Печать офсетная. Бумага офсетная. Печ. л. 4,5. Усл. печ. л. 5,832. Тираж: 28 600 экз. © Luis Fernando Arean Alvarez, 2014 (текст) © RBA Collecionables S.A., 2014 © ООО «Де Агостини», 2014 ISBN 978-5-9774-0682-6 ISBN 978-5-9774-0774-8 (т. 43) @ Данный знак информационной про- дукции размещен в соответствии с требования- ми Федерального закона от 29 декабря 2010 г. № 436-ФЗ «О защите детей от информации, при- чиняющей вред их здоровью и развитию». Издание для взрослых, не подлежит обязатель- ному подтверждению соответствия единым требо- ваниям, установленным Техническим регламентом Таможенного союза «О безопасности продукции, предназначенной для детей и подростков» ТР ТС 007/2011 от 23 сентября 2011 г. № 797.
Существуют ли неразрешимые проблемы? Математика, сложность и вычисление Как измерить сложность проблемы? Существуют ли простые решения сложных проблем? Эти и подобные вопросы лежат в основе теории сложности вычислений. От ответа на них зависят ее очевидные практические применения, такие, например, как криптография. Кроме того, теория проливает свет на глубокие математические и философские проблемы, связанные с интеллектом и познанием.