Шрифт:
Интервал:
Закладка:
Надеюсь, эта книга поможет вам прочувствовать всю важность обсуждаемой проблемы. Не исключено, что у вас даже возникнет искушение попытать счастья и попробовать решить ее самостоятельно. Ну что ж, дерзайте – только так вы по-настоящему сможете осознать, насколько она трудна! Однако имейте ввиду, что я не даю здесь строгих определений; если вы и правда сгораете от желания взяться за дело, вам придется ознакомиться с точными формулировками. На сайте книги вы найдете полезные ссылки на источники, в которых приводится не только подробное математическое описание проблемы, но и примеры неудачных попыток ее решения.
Допустим, вы уверены, что решили проблему равенства P и NP, и уже потираете руки в предвкушении чека на миллион долларов от Математического института Клэя. Не спешите радоваться: с вероятностью 99,9 % доказательство окажется неверным. Попробуйте понять, что с ним не так; ищите ошибку – и ваши поиски почти наверняка увенчаются успехом.
Давайте разберем несколько типичных ошибок, встречающихся у тех, кто думает, что все доказал.
Вероятно, первой неудачной попыткой доказать неравенство P и NP можно считать работу средневекового итальянского математика Джероламо Кардано – одного из первопроходцев в области теории вероятностей. В 1550 году Кардано разработал новую систему шифрования сообщений, которая, по его мнению, была очень надежной, поскольку для подбора ключа требовалось проверить огромное число вариантов. На самом деле взломать систему было не так уж сложно, ведь для расшифровки засекреченного сообщения перебирать все возможные варианты вовсе не обязательно.
Ошибку Кардано в том или ином виде регулярно повторяют современные авторы, которым кажется, что они доказали неравенство P и NP. Давайте снова обратимся к задаче о клике. Любой алгоритм, утверждающий, что клику заданного размера найти невозможно, должен доказать, что ее действительно нет. Единственный способ в этом удостовериться – перебрать все возможные группы и проверить, не образуют ли они клику. Поскольку потенциальных вариантов слишком много, алгоритм не справится с проверкой за разумное время. Отсюда вытекает, что эффективных алгоритмов для задачи о клике не существует. Следовательно, P ≠ NP, ч. т. д. (что и требовалось доказать). Этим выражением (или аббревиатурой Q.E.D. – от латинского quod erat demonstrandum) математики часто завершают свои выкладки, подчеркивая тот факт, что доказательство окончено.
Рассуждения такого рода могут варьироваться, однако их общая логическая ошибка заключается в словах «единственный способ». Вы не можете предсказать, как будет работать тот или иной алгоритм; он вовсе не обязан делать то, что считаете нужным вы, и в частности – работать лишь с исходной проблемой. К примеру, можно преобразовать схему дружеских связей в какое-нибудь заковыристое алгебраическое уравнение, которое будет иметь решение в том и только в том случае, когда клика данного размера существует. Конечно, это очень маловероятно, однако нельзя исключать такую возможность лишь по той причине, что вы в нее не верите.
Спорить с приверженцами подобных «методов» доказательства бывает порой довольно сложно. Они постоянно возвращаются к отправному моменту и требуют, чтобы я привел пример алгоритма для клики, который бы не использовал «единственно возможный способ». Разумеется, я такого алгоритма не знаю; если бы его придумали, это означало бы равенство P и NP, что на самом деле очень маловероятно. В данном случае бремя доказательства лежит на вас – и это сказано не ради красного словца! Именно вы, т. е. человек, утверждающий, что он (или она, хотя ошибочные доказательства предоставляют в основном мужчины) решил проблему, должны доказать, что других возможных способов в природе не существует.
Для доказательства равенства P и NP достаточно «всего лишь» показать, что для некоторой NP-полной задачи существует эффективный алгоритм. И вот некоторые изобретают алгоритм для задачи о клике или какой-нибудь другой эквивалентной ей проблемы и заявляют, что доказали равенство P = NP. Но ведь сам по себе алгоритм еще не является доказательством! Требуется строгое математическое обоснование того факта, что данный алгоритм дает верное решение во всех возможных случаях (если мы говорим о клике – то для всех возможных схем дружеских связей), причем делает это за полиномиальное время. В подобных работах доказательство корректности алгоритма либо отсутствует вообще, либо является неполным и неверным; сами же алгоритмы, сталкиваясь с нетривиальными случаями, обычно выдают ошибочное решение или работают неприемлемо долго.
Мы еще никогда не были настолько далеки от решения проблемы P и NP. Не в том смысле, что для этого требуется огромная подготовительная работа; просто мы уже испробовали все мыслимые и немыслимые подходы и исчерпали все известные науке методы доказательства, так что в ближайшем будущем прогресса ждать не приходится.
Единственную на сегодняшний момент потенциальную возможность открыл Кетан Мулмулэй из Чикагского университета. Ученый показал, что решение некоторых трудных проблем из области математики под названием «алгебраическая геометрия» (и это не помесь школьной алгебры и геометрии, а нечто гораздо более сложное) может дать ключ к доказательству неравенства P и NP. Вот только для решения этих алгебраически-геометрических проблем потребуются такие техники, которых в нашем арсенале нет и которые в ближайшее время вряд ли появятся. Несколько лет назад Мулмулэй предположил, что реализация этого плана займет около ста лет. Теперь тот прогноз уже кажется ему чересчур оптимистичным.
Так сколько нам еще ждать? Не исключено, что сейчас, когда вы читаете эти строки, проблему уже решили. Хотя, скорее всего, над ней будут биться еще очень долго; дольше даже, чем над Великой теоремой Ферма, которая поддалась лишь через 357 лет. А может, она так навсегда и останется одной из величайших загадок в истории математики и вообще всей науки.
У каждого из нас есть секреты. Как минимум мы храним в тайне пароли и не желаем, чтобы кто-то читал нашу почту. Если P ≠ NP, то секреты есть и у NP-полных задач: это их решения, найти которые не так-то просто. В 1976 году Уитфилд Диффи и Мартин Хеллман предложили шифровать информацию при помощи класса NP. В истории криптографии, т. е. науки о шифровании, наступил поворотный момент.
Шифрование существует столько же, сколько и переписка. Юлий Цезарь пользовался простым подстановочным шифром, в котором каждая буква заменялась на другую букву, отстоящую от нее в алфавите на три позиции.
Фраза The early bird gets the worm («Кто рано встает, тому бог дает») после такой кодировки превращается в Wkh hduob elug jhwv wkh zrup. Способ шифрования, при котором все буквы циклически сдвигаются на определенное число позиций, стали называть шифром Цезаря.
В Древнем Риме этот метод работал хорошо. Зашифрованные сообщения выглядели как случайный набор букв, а люди пока еще не обладали необходимыми навыками для взлома шифров. К IX веку математики разработали методы восстановления исходного сообщения; эти методы учитывали частоту появления букв и анализировали короткие слова. Глядя на фразу Wkh hduob elug jhwv wkh zrup, можно заметить, что буква h встречается четыре раза, т. е. чаще остальных. Самая распространенная буква английского алфавита – это e, ее частота составляет примерно 12 процентов. Вы можете предположить, что буква h кодирует букву e, – и будете совершенно правы. Сочетание wkh встречается дважды; вы уже знаете, что h – это e, поэтому делаете вывод, что wkh – это, наверно, the. Еще чуть-чуть – и исходное сообщение будет восстановлено!