что такое парадокс монти холла
Снова про Монти Холла или статистика как коллективная интуиция
На примере парадокса Монти Холла посмотрим, что общего между статистикой и интуицией, и как визуализация данных может помочь принять правильное решение, основанное на статистической оценке.
Сложность парадокса Монти Холла
Парадокс Монти Холла получил свое название от ведущего телевизионного шоу «Let’s Make a Deal». Игровая ситуация:
Перед игроком три двери, за одной из которых приз. Игрок выбирает одну из них, не открывая. После этого ведущий, открывает одну из двух оставшихся дверей. Ведущий знает, за какой из дверей приз, и всегда открывает дверь, за которой приза нет. Далее игроку предлагается поменять первоначально выбранную дверь на другую, остающуюся закрытой. Вопрос: повышаются ли шансы игрока при изменении выбранной двери?
Парадокс заключается в том, что интуитивно кажется, что смена двери ничего не дает. Приз либо за одной дверью, либо за другой. Ситуация симметричная, и вероятности одинаковы. Однако, теория вероятностей показывает, что смена двери повышает шансы выигрыша в два раза.
Чтобы прийти к статистически правильному решению, игрок должен:
Первый шаг ключевой. Если остаться на уровне выбора дверей, то ничего не получится, ведь приз, так или иначе, за одной из двух дверей. А они выглядят одинаково — ситуация как будто симметричная. Можно не менять дверь и выиграть, можно поменять дверь и проиграть. Возможно, смена двери повышает шансы на успех, но не гарантирует его. Делая первый шаг, игрок не должен путать «повышение шансов» и «гарантированный выигрыш».
Второй шаг еще сложнее: построить и применить статистическую модель задачи. Цепочка рассуждений может быть такой.
Сначала игрок делает выбор одной из трех дверей. По условию приз размещен за любой из них с одинаковой вероятностью. На первом шаге вероятность выбора приза равна 1/3. На рисунке ниже изображено дерево решений после первоначального выбора игрока. Дверь, за которой приз, закрашена:
Дальше ведущий открывает одну из дверей, не выбранных игроком. Игроку кажется, что ведущий выбирает дверь, которую открыть. Однако, это не всегда так. Поведение ведущего обусловлено первым выбором игрока:
Вероятность того, что приз за дверью, которую ведущий оставил закрытой, рассчитывается по формуле условной вероятности. И эти вероятности различаются для разных исходов, как показывает дерево решений. Закрытые двери, за которыми приз, закрашены:
Игрок суммирует вероятности по каждой стратегии и получает их статистическую оценку. На рисунке видно, что вероятность выигрыша при смене двери (стратегия «switch») в два раза выше:
После того, как стратегии оценены, игрок должен отказаться от первоначального выбора. Это сложно само по себе. Игрок будет стремится сохранить первоначальный выбор, так как это проще. Например, потенциальный покупатель гораздо вероятнее не будет отключать по умолчанию включенную услугу, нежели включит ее. В общем случае это приводит к систематическому отклонению поведения игроков от рационального.
Трудности применения статистического мышления
Проблемы, связанные с применением статистического мышления и рационального мышления вообще рассматриваются в книге Дэвида Канемана «Думай медленно, решай быстро». Исследования Канемана и его коллег показали, что человек склонен ошибаться в ситуациях, если нужно провести даже простые математические расчеты, не говоря уже об оценке вероятности.
Канеман вводит понятие двух систем. Система 1 это «быстрое», интуитивное, эвристическое мышление. Им человек пользуется, например, для определения настроения по выражению лица или при оценке дорожной ситуации, когда ведет автомобиль. Система 1 это автоматическая, почти мгновенная реакция, и работает в большинстве повседневных ситуаций.
Система 2 — «медленное», рациональное, математическое и статистическое мышление. Эта система подключается с усилием. Человек должен осознать, что автоматическое решение неправильное, задуматься и провести расчеты.
Ключевая проблема заключается в том, что в ситуации, где требуется подумать, человек полагается на автоматическое решение, предлагаемое системой 1. А эта система делает выводы, в первую очередь, на основании похожести вариантов. В парадоксе Монти Холла, после того, как ведущий открыл одну из дверей, две оставшихся выглядят одинаково, а обусловленное поведение ведущего старательно замаскировано. Ситуация представляется симметричной, а вероятности одинаковыми. Системе 1 не за что зацепиться, чтобы заметить вероятностную асимметрию. А системе 2 некогда подключиться. Тем более, что ведущий разными способами старается сбить игрока с толку.
Система 1 тренируется на многократном повторении ситуаций, доводя выбор до автоматизма (распознавание лиц, вождение автомобиля). Человек видит похожую ситуацию, что-то, что ему знакомо, и делает выбор, который ранее был успешен в аналогичных ситуациях.
Система 2 подразумевает, что человек начинает анализировать ситуацию, чтобы принять решение. В случае со статистическими задачами правильный ответ не очевиден. Чтобы к нему прийти, человек должен проанализировать данные, произвести расчеты и выбрать наибольшие значения статистических показателей.
Общее между интуицией и статистикой
Основная идея Дэвида Канемана в том, что система 1 (интуитивная) и система 2 (рациональная) различаются. В общем случае так и есть, однако, применительно к статистике между ними есть сходство.
Предположим, что все участники шоу Монти Холла собрались, чтобы обсудить результаты участия в шоу. Собравшиеся разбились на две группы: тех, кто остался с первоначально выбранной дверью и тех, кто поменял дверь. Согласно статистике, подсчет участников и их результатов покажет, что те участники, которые меняли дверь, выигрывали чаще. Если участников в обеих группах много, то доля победителей в группе сменивших дверь, будет примерно в два раза выше, чем в другой.
Достаточное количество участников, при котором будет видна статистическая закономерность, определяется законом больших чисел. Чем больше игроков примет участие в собрании, тем более результаты подсчетов их успехов и неудач будут соответствовать теоретическим. Другими словами, статистика начинает работать, когда игра была повторена разными участниками много раз. Если бы такое сообщество игроков существовало, то со временем они бы пришли к правильной стратегии.
Таким образом, в статистических расчетах система 2 опирается на закон больших чисел — достаточно большое (в идеале бесконечное) количество испытаний. Но и системе 1 большое количество испытаний позволяет принимать правильные решения. Многократное повторение доводит ту или иную способность человека до автоматизма.
Правила для двух систем:
Можно сказать, что расчет вероятности отражает коллективный опыт всех реальных и возможных участников игры Монти Холла. Для ситуаций индивидуального выбора стратегий статистика выступает как коллективная интуиция. Остается сделать статистику наглядной при помощи подходящей визуализации.
Диаграмма-шкала для визуализации теоретической и частотной вероятности
На примере парадокса Монти Холла мы смоделировали выбор человеком правильной стратегии с привлечением статистических расчетов. В общем случае:
Если поставить задачу помочь выиграть игроку, а не сбить его с толку, как на шоу, то в визуализации данных или пользовательском интерфейсе можно дополнить «двери», между которыми выбирает «игрок», диаграммами-шкалами. На такой диаграмме шкала задает градации изменения величины, и на шкалу накладывается столбик фактического значения по аналогии с термометром.
На диаграмме-шкале удобно совместить теоретическое, ожидаемое количество выигрышей (выделено серым) и фактическое после всех предыдущих игр (узкий черный столбик). Фактическое значение меняется после каждого принятого решения по выбору одной из двух стратегий и сохраняется на протяжении всей серии игр:
Таким образом, подходящая визуализация статистических данных помогает человеку выбрать правильную стратегию. Например, в интерфейсе, похожем на прототип, элемент интерфейса, соответствующий стратегии, может быть помечен статистическим виджетом, похожим на диаграмму-шкалу. Изображение фактических данных полезно, если пользователь выбирает между примерно одинаково успешными стратегиями. Оно позволяет ему быстро прийти к заключению:
Парадокс Монти-Холла и имитационное моделирование
Парадокс Монти Холла
Представьте, что вы стали участником игры, в которой вам нужно выбрать одну из трех дверей. За одной из дверей находится автомобиль, за двумя другими дверями — козы. Вы выбираете одну из дверей, например, номер 1, после этого ведущий, который знает, где находится автомобиль, а где — козы, открывает одну из оставшихся дверей, например, номер 3, за которой находится коза. После этого он спрашивает вас, не желаете ли вы изменить свой выбор и выбрать дверь номер 2. Увеличатся ли ваши шансы выиграть автомобиль, если вы примете предложение ведущего и измените свой выбор?
Решение
При решении этой задачи обычно рассуждают примерно так: после того, как ведущий открыл дверь, за которой находится коза, автомобиль может быть только за одной из двух оставшихся дверей. Поскольку игрок не может получить никакой дополнительной информации о том, за какой дверью находится автомобиль, то вероятность нахождения автомобиля за каждой из дверей одинакова, и изменение первоначального выбора двери не дает игроку никаких преимуществ. Однако такой ход рассуждений неверен. Если ведущий всегда знает, за какой дверью что находится, всегда открывает ту из оставшихся дверей, за которой находится коза, и всегда предлагает игроку изменить свой выбор, то вероятность того, что автомобиль находится за выбранной игроком дверью, равна 1/3, и, соответственно, вероятность того, что автомобиль находится за оставшейся дверью, равна 2/3. Таким образом, изменение первоначального выбора увеличивает шансы игрока выиграть автомобиль в 2 раза. Этот вывод противоречит интуитивному восприятию ситуации большинством людей, поэтому описанная задача и называется парадоксом Монти Холла.
Подробности можно узнать в соответствующей статье Википедии
Моделирование
Так как абстрактное логическое мышление в этот раз мне почему-то отказало, пришлось призвать на помощь брутфорс — имитационную модель, в которой я и производил дальнейшую проверку.
Код скрипта (PHP). Замечания по коду приветствуются.
Результат:
Number of games: 10000.
Gamer wins 6664 times.
Gamer looses 3336 times.
Альтернативный вариант, написанный знакомым на perl-е:
Результаты прогона:
Gamer NOT change choice: 2562
Gamer change choice: 7586
Простейшее объяснение парадокса Монти Холла
Парадокс Монти Холла — это одна из тех математических задач, над решением которой уже долгое время бьются многие умы, и даже всемирно известных математиков она приводит в затруднение. Хотя идея, лежащая в основе этого парадокса, предельно ясна и понятна. Задача эта, строго говоря, и не парадокс вовсе, но называется так из-за неочевидности и парадоксальности предлагаемых решений и объяснений, которые становятся поводом для самых жарких дискуссий в Интернете. Их накал уступает, пожалуй, лишь спорам из-за оптической иллюзии так называемого «платья раздора» и аудиоиллюзии «Янни и Лорел». Предлагаемое здесь объяснение призвано раз и навсегда развеять все связанные с этим парадоксом вопросы и очень доходчиво разъяснить всем интересующимся его суть.
Парадокс
Парадокс впервые был сформулирован американским математиком Стивом Селвином ещё в 1975 году, но широкую известность он приобрёл благодаря популярному игровому шоу «Давайте заключим сделку». В честь ведущего этой телевикторины, которого звали Монти Холл, парадокс и получил своё название.
В чём же суть парадокса Монти Холла?
Представьте, что перед вами три двери, как показано на рисунке ниже. За двумя дверьми находятся козы, за одной — автомобиль. Надо угадать дверь с автомобилем, и он ваш.
Казалось бы, ничего сложного. Но, как говорилось в одном фильме: «Если бы задача так просто решалась, то армянское радио этим бы не занималось». В своей передаче, после того как участник выбирал дверь, Монти всегда открывал одну из дверей с козой и предлагал ему поменять свой выбор. А вы поменяли бы или нет?
Этот вопрос многих ставит в тупик. Люди обычно думают: «Ну какая разница: остались две двери, и машина может с одинаковой вероятностью 50% оказаться как за одной, так и за другой дверью?». … И оказываются неправы. Правильный ответ — всегда менять первоначальный выбор. Поступая так, вы удваиваете свои шансы на победу.
Удивлены? Такой ответ для многих становится откровением: мало кто ожидает этого. Давайте подробно разберёмся, как так получается.
Итак, вы выбрали одну из трёх дверей. Вероятность того, что машина окажется именно за ней, составляет 1/3. А вероятность того, что она окажется за одной из двух оставшихся (то есть не выбранных вами) дверей, будет 2/3. Это должно быть понятно.
На рисунке у нас наглядно показаны эти вероятности: 1/3 слева и 2/3 справа.
Теперь Монти открывает одну из невыбранных дверей — тех, что справа. И открывает он всегда ту, за которой коза.
Вероятности остаются неизменными: 1/3 слева (ваш первоначальный выбор) и 2/3 справа. Изменилось лишь то, что справа одна дверь теперь открыта, но вероятность для оставшейся неоткрытой двери здесь та же, что была прежде для обеих.
Если не совсем понятно, попробуем объяснить на примере с десятью дверьми.
Выбранная вами дверь будет слева, остальные девять — справа (как на рисунке ниже). Вероятность того, что вы угадали дверь с машиной, будет 1/10. Вероятность того, что вы не угадали и машина окажется за одной из оставшихся девяти дверей, будет 9/10.
Дальше Монти открывает восемь из этих невыбранных девяти дверей, причем за всеми восемью — козы. Как поступить теперь: поменять свой выбор или нет? Конечно, поменять! Ведь теперь восемь из девяти дверей справа открыты, а вероятность того, что машина окажется за оставшейся девятой дверью (как мы уже посчитали ранее), равна 9/10.
Ответ на вопрос станет ещё очевиднее, если представить, что Монти даёт вам возможность открыть не одну оставшуюся справа неоткрытой дверь, а сразу все девять!
Вот и всё. Это так просто! Однако важно не забывать, что всегда есть вероятность проигрыша. Верное решение определяется стратегией. Правильная стратегия — делать так, чтобы шансы на победу были максимальными или хотя бы такими, которые позволяют больше выигрывать, чем проигрывать.
Усложняем задачу
Предположим, Монти хочет усложнить для вас задачу и открывает лишь одну дверь с правой стороны. Как вы поступите теперь: выберите одну из восьми закрытых дверей справа или не станете менять свой выбор?
Здесь придётся кое-что посчитать. Вероятность того, что машина окажется за одной из девяти дверей справа, равна 9/10. Разделим её на количество оставшихся неоткрытыми дверей (8):
Это будет вероятность того, что машина окажется за одной из восьми остающихся закрытыми дверей справа. И она чуть больше вероятности 0,1 (1/10), что первоначально выбранная вами дверь слева окажется с машиной. Поэтому вам всё же предпочтительнее поменять свой выбор, хотя шансы выиграть машину и в этом случае будут очень низкими. По этой же формуле можно посчитать вероятность для любого количества неоткрытых дверей.
Вот и весь парадокс Монти Холла вкратце. Не знаю, можно ли придумать более простое его объяснение? Я лишь выношу на ваш суд свой взгляд, отличный от тех, что изложены в большинстве других объяснений, в которых вы можете тоже почерпнуть много полезного. Надеюсь, что после прочтения статьи вы приблизились к пониманию парадокса Монти Холла.
Парадокс Монти Холла (объяснение)
Я думаю, большая часть из вас, дорогие пикабушники, слышала об этом парадоксе, который по сути-то и не является настоящим парадоксом. Он назван так только потому, что простая человеческая интуиция никак не может принять обоснованный логический ответ и упорно сопротивляется. В этом посте я хотел бы рассказать об этом парадоксе тем, кто о нем не слышал, и постараться объяснить на пальцах, почему решение именно такое.
Ну что ж, начнем с самой формулировки:
«Представьте, что вы стали участником игры, в которой вам нужно выбрать одну из трёх дверей. За одной из дверей находится автомобиль, за двумя другими дверями — козы. Вы выбираете одну из дверей, например, номер 1, после этого ведущий, который знает, где находится автомобиль, а где — козы, открывает одну из оставшихся дверей, например, номер 3, за которой находится коза. После этого он спрашивает вас — не желаете ли вы изменить свой выбор и выбрать дверь номер 2? Увеличатся ли ваши шансы выиграть автомобиль, если вы примете предложение ведущего и измените свой выбор?»
Сначала попробуйте подумать сами над этой задачей и прийти к ответу.
Многие отвечают, что если изменить выбор двери, то ничего изменится, т.к. дверей осталось всего две, то есть вероятность выигрыша 50 на 50. Но это неверный ответ. Правильный ответ таков, что при смене двери шансы выиграть автомобиль увеличиваются аж в 2 РАЗА! Однако, казалось бы, почему если в конце произвольный выбор из двух дверей, то вероятность должна быть не 50 на 50? А все потому, что от начального выбора двери (когда их 3 закрытых),и будет зависеть то, какая дверь будет выбрана в конце.
Давай-те же теперь подробно разберемся, почему так происходит.
1)Предположим, что в начале игрок выбрал дверь с автомобилем (вероятность этого 1/3)
а)Игрок не меняет дверь, он выиграл АВТОМОБИЛЬ! (+)
б)Игрок меняет дверь и уходит домой с одной козой :(( (-)
2)Предположим, что в начале игрок выбрал дверь с козой (вероятность этого 2/3)
а)Игрок не меняет дверь и, опечалившись, уходит домой с козой (-)
б)Игрок меняет дверь и радостный уезжает на АВТОМОБИЛЕ домой (+)
Посмотрев на все возможные варианты развития событий, можно заметить, что при смене двери игрок уходит с козой, только если изначально была выбрана верная дверь, вероятность чего 1/3, а в ином случае с вероятность 2/3, он забирает ключи и валит из этого заведения на новенькой (или не очень) машине.
Ну вот и все, надеюсь Вам было интересно и понятно, что я написал. Также надеюсь, что Вам стал понятен ответ в этой вызывающей споры и большие дискуссии задаче 🙂
Всем пока и удачного дня)
P.s. Мой первый пост, однако судите, как хотите. Мне не нужны все эти «судите не строго», мне нужна конструктивная критика.
Вероятность попадания 1-1/3=2/3. И никаких парадоксов.
У меня делема по поводу тех трех дверей. Действительно вероятность успеха при смене двери повышается в 2 раза, но зато вероятность неудачи при условии того что дверь не меняется падает в 2 раза.
Ну если на выбор 10 дверей. За одной дверью приз, за остальными нет. Вы указываете на одну дверь. Ведущий открывает оставшиеся 8 неверных дверей, кроме одной.
То это сразу понятно. А с тремя дверьми надо считать уже.
Не поверю, пока сам не проверю!
разрушители мифов по этому поводу наглядный эксперимент проводили. Очень убедительный
хоть и баян но я все равноне догоняяяюююююююююююююю
Так менять или нет. Объясни!
9l c4uTalO 4To Hy>l
Я понял =) попробую объяснить тем кто ещё не вшаривает.
Ведущий, точно зная где машина выбрал ту ячейку в которой осел и не выбрал ту которую выбрал игрок.
Проще говоря выбор во второй раз предлагают только тому кто заведомо выбрал неверный вариант!
В фильме «21» хорошо рассказано
Если вам предложат много раз выбирать и менять решение после того как открыли одну дверь, то все верно. Статистически доказано, что в большинстве раз вы будете в выигрыше. Но что будет, если вам предложат выбирать, и менять или не менять решение лишь один раз?
Вы ведь по-прежнему не знаете, за какой дверью автомобиль. Вам придется выбирать из двух дверей, а это50/50.
Вероятность
История проблемы равенства классов P и NP
В 2000 году Математический институт Клэя определил 7 математических задач, решение которых не могли найти в течение многих лет. За решение каждой из них была назначена награда в размере 1 миллиона долларов. Эти 7 задач известны как «задачи тысячелетия», и на сегодняшний день только одна из них была решена — гипотеза Пуанкаре. В этой статье пойдет речь о вопросе равенства классов P и NP, ответ на который может сильно повлиять на всю IT-сферу.
Равенство P и NP классов отсылает нас к теории алгоритмов, а именно к классам сложности. Первое, с чего стоит начать, это то, что классы P и NP классифицируют языки, а не задачи. Пока что это звучит довольно абсурдно, поэтому для понимания разберемся в некоторых деталях.
Пусть А — алфавит и L ⊆ А*, тогда L называется языком над А. Для любого алфавита пустое множество и А* являются тривиальными языками. При этом пустое множество часто называют пустым языком. Однако не стоит путать пустой язык и язык, содержащий пустое слово e, — они различны. Языки могут быть как бесконечными, так и нет, но обязательно счетными. Т. е. множество всех действительных чисел языком нельзя назвать, т. к. такой набор является неисчисляемым.
Говоря про абстрактный исполнитель, чаще всего имеют в виду машину Тьюринга, поэтому в дальнейшем под АИ будем подразумевать именно её. Итак, машина Тьюринга имеет неограниченное линейное хранилище, сгруппированное в ячейки. Каждая ячейка может содержать ровно один символ алфавита в любой момент времени. Вдоль ячеек идет считывающая головка, имеющая конечное число состояний. За одну итерацию она может считать значение только одной ячейки, переписать её значение, изменить свое состояние и перейти на одну позицию вправо/влево.
Устройство машины Тьюринга
На основе машины Тьюринга определим так называемую разрешающую машину над языком. Для начала введем определение характеризующей функции X(w). Функция X определяет, принадлежит ли слово w языку L. Если да, то значение функции равно «1»; если нет, то «0». Формально это можно записать так:
Разрешающей машиной D для языка L называется такая машина, которая для каждого w∈A вычисляет характеризующую функцию X(w) за конечное время.
В дополнение к разрешающей машине идет верификатор. Машина V, которая принимает слова w и c и выводит 0 или 1 после конечного числа шагов, называется верификатором для L, если она обладает следующими свойствами:
— выводит 1, только если w входит в язык L;
— для любого w в языке L существует такое c, что V(w,c) = 1.
Классы сложности и формулировка проблемы
Окей, мы рассмотрели несколько понятий. На первый взгляд, все это больше походит на лингвистику: алфавиты, слова, языки… Причем тут задачи? Чтобы ответить на этот вопрос, обратимся к понятию задача разрешимости (англ. Decision problem). Это такой вопрос (сформулированный в формальной системе), требующий ответа «да» или «нет», зависящего, возможно, от значений некоторых входных параметров. Например, «является ли данное натуральное число x простым?» или «даны два числа: x и y; делится ли x на y?« Метод решения в виде алгоритма называется разрешающей процедурой. Теория вычислимости имеет дело в основном с задачами разрешимости и приведенные выше конструкции наглядно соотносятся с таким типом задач: так разрешающая машина над языком является формализацией разрешающей процедуры. Но как же быть с задачами, такими как задача коммивояжера? На них нельзя дать бинарный ответ. В таких случаях применяют приемы приведения к версии decision problem. В случае коммивояжера проблема по-новому формулируется так: «существует ли маршрут не длиннее, чем заданное значение k?»
В класс сложности NP входят все языки L, для которых существует такой верификатор, что для каждого (w,c) время его работы полиномиально. Иными словами, NP включает в себя задачи разрешимости, для которых при подходящем сертификате для данного w мы быстро сможем удостовериться в том, что w действительно принадлежит L (ответ на вопрос можно довольно быстро проверить). Отсюда и название «верификатор». В качестве примера задачи в NP можно привести определение наличия в графе гамильтонова цикла. Сертификат в данном случае — последовательность вершин, образующих гамильтонов цикл.
Помимо этих классов можно выделить ещё 2: NP-hard и NP-Complete. Они основываются на приводимости одного языка к другому за полиномиальное время: пусть языки A и B — языки над одним алфавитом. Язык А будет приводимым за полиномиальное время к языку B, если существует такая функция f(w), что
— функция f может быть вычислена машиной Тьюринга за полиномиальное время.
Тогда в класс NP-hard будут входить языки, к которым приводимы все языки в NP (причем NP-hard язык может входить в NP, а может и нет), а в NP-Complete те языки, которые являются одновременно NP-hard и NP. Примером NP-Complete является язык выполнимых булевых формул (SAT). Таким образом, NP-Complete задачи образуют в некотором смысле подмножество «типовых» задач в классе NP: если для какой-то из них найден «полиномиально быстрый» алгоритм решения, то и любая другая задача из класса NP может быть решена так же «быстро».
Отношение между классами при равенстве и неравенстве
Теперь, немного погрузившись в теорию алгоритмов, более конкретно обозначим проблему равенства данных классов. Итак, множество P входит в множество NP, но неизвестно, существуют ли языки, которые входят в NP и не входят в P. Что это означает на практике? Итак, простыми словами класс NP можно охарактеризовать как «трудно решить, легко проверить». Классическим примером задачи, входящей в NP, является задача коммивояжера, для решения которой на данный момент известен лишь один алгоритм — старый добрый перебор (мы не рассматриваем эвристические методы). Однако, получив ответ, его будет не так сложно проверить. Класс P же вобрал в себя те задачи, для которых существует эффективный алгоритм решения, позволяющий решать их за полиномиальное время. И равенство или, наоборот, неравенство этих классов пока не доказано. Если эти классы равны, то это будет значить, что для всех задач, которые сейчас решаются путем перебора или другим неэффективным методом, существует(-ют) полиномиальные алгоритмы. А если не равны, то придется смириться с неоптимальностью решения этих задач.
История проблемы равенства P и NP началась в 1928 году, когда Давид Гильберт сформулировал проблему, названную Entscheidungsproblem (нем. задача разрешения). Ее суть заключается в нахождении алгоритма, определяющего доказуемость данного утверждения из аксиом с использованием правил логики. По названию очевидно, что это задача является задачей разрешения (выводит «да» или «нет»).
В ходе решения этой проблемы потребовалось определить термины «алгоритм» и «вычислимая функция». В 1936 году Алонзо Чёрч и Алан Тьюринг независимо показали, что общее решение Entscheidungsproblem невозможно, предположив, что интуитивное понятие «эффективная вычислимость» соответствует вычислимости функции на машине Тьюринга. Эта гипотеза сегодня известна как тезис Чёрча-Тьюринга.
20 марта 1956 в письме к Джону фон Нейману Курт Гёдель впервые поставил вопрос о вычислительной сложности. Гёдель интересовался, можно ли получить доказательство теоремы (в математико-логическом смысле слова) за квадратичное или линейное время. К сожалению, письмо было обнаружено лишь в 1989 году и получило широкую огласку, когда Юрис Хартманис опубликовал перевод и комментарий.
Статья Алана Кобэма 1965 года под названием «The intrinsic computational difficulty of functions» является одним из первых упоминаний класса сложности P, состоящего из разрешимых за полиномиальное время задач. Тезис Кобэма-Эдмондса (известный также как расширенный тезис Чёрча-Тьюринга), названный в честь Алана Кобэма и Джека Эдмондса, утверждает, что любая разумная модель вычислений может быть выражена через другую модель с замедлением, не более чем полиномиальным по размеру входных данных. Кобэм предположил, что класс P может быть хорошим способом для описания множества реально вычислимых задач. Любая проблема, не содержащаяся в P, невозможна, но если задача реального мира может быть решена с помощью алгоритма, существующего в P, то такой алгоритм в конечном итоге будет открыт.
В 1965 году Юрис Хартманис и Ричард Стернс опубликовали статью «On the Computational Complexity of Algorithms», отмеченную премией Тьюринга. В ней даются более точные определения сложности алгоритма и класса сложности. Хартманис и Стернс определили класс сложности как совокупность всех задач, которые можно решить за установленные временные рамки. В их статье показано, что существует бесконечная иерархия классов сложности (например, задачи, для которых наиболее быстрый алгоритм имеет время, пропорциональное n, n log n, n^2, n^3, 2^n и т. д.), где небольшое увеличение временного интервала позволяет решать больше задач. Во второй статье Хартманис совместно с Филипом М. Льюисом показали, что подобная иерархия существует и для количества памяти (функция от размера входа) при решении задачи на машине Тьюринга.
В 1967 году Мануэль Блюм разработал аксиоматическую теорию сложности, которая основана на его собственных аксиомах (аксиомы Блюма), и получил важный результат — теорему об ускорении. До этого мы говорили по большей части о сложности алгоритма. Хотелось бы аналогичным образом определить и сложность задачи: например, какова сложность самого эффективного (по времени и емкости) алгоритма, решающего эту задачу. Теорема об ускорении гласит, что есть некоторые задачи, для которых не существует самого быстрого алгоритма, потому что любой алгоритм для такой задачи можно «ускорить», построив более быстрый алгоритм.
Точная формулировка проблемы равенства P и NP была представлена в 1971 году. Тогда американский ученый Стивен Кук и работавший независимо советский ученый Леонид Левин доказали, что существуют практически актуальные проблемы, которые являются NP-полными. В США Стивен Кук опубликовал статью «The complexity of theorem proving procedures», в которой формализовал понятия редукции за полиномиальное время и NP-полноты, а также доказал существование NP-полной задачи (задача выполнимости булевых формул, SAT). Теорема была независимо доказана Леонидом Левиным и, таким образом, получила название «теорема Кука-Левина».
В 1972 году Ричард Карп сделал рывок в знаменитой статье «Reducibility among Combinatorial Problems», в которой показал, что около 20 разнообразных задач из комбинаторики и теории графов, известных своей вычислительной трудностью, являются NP-полными.
В августе 2010 года Виней Деолаликар, работавший в исследовательском отделении Hewlett-Packard в Пало-Альто в Калифорнии, заявил, что разгадал загадку P vs NP. Он утверждал, что P не равняется NP, однако научное сообщество нашло в его доказательстве фатальную ошибку. В начале 2002 года SIGACT News провел опрос среди 100 ученых, задав им вопрос о равенстве классов NP и P. 61 человек ответили, что «неравны», 9 — «равны», 22 затруднились ответить и 8 сказали, что гипотеза не выводима из текущей системы аксиом и, таким образом, не может быть доказана или опровергнута.
К чему приведет решение проблемы
Окей, теория вычислимости, формализация алгоритмов и абстрактные математические теории — все это конечно интересно, но как решение проблемы равенства NP и P классов отразится на практике? На самом деле, алгоритмы для решения NP-задач используются каждый день во многих сферах. Например, в криптографии, криптовалютах, восстановлении поврежденных файлов, системах блокировки спама, оптимизации в логистике и т. д. Более эффективные решения могли бы значительно сэкономить время и деньги, так как мы пользуемся в основном эвристическими методами, дающими лишь приближенные решения.
Однако существует и обратная сторона монеты. Солидная часть криптографии (криптосистемы с открытым ключом, технологии доказательства выполнения работы в блокчейне, системы блокировки спама) основывается на предположении о неравенстве NP и P классов. Если окажется, что некоторые задачи, для которых, как считалось, не существует эффективных алгоритмов, можно решать быстро, то многие методы защиты устареют.
Может оказаться и так, что последствия решения окажутся не такими тривиальными, как это часто и бывает в математике. В качестве примера рассмотрим континуум-гипотезу о существовании мощности, меньшей континуума и большей мощности счетного множества. Оказывается, существование такого кардинала нельзя ни доказать, ни опровергнуть в аксиоматике ZFC. Так что мы вправе считать, что такие мощности бывают (впрочем, как и считать, что не бывают). Однако ясно, что мы не можем конструктивно построить соответствующее множество. Возможно, точно также окажется и с алгоритмами для NP-задач в случае равенства NP и P (к слову, некоторые математики в опросе SIGACT News так и ответили: гипотеза не выводима из существующей системы аксиом, то есть не может быть доказана или опровергнута).
Пока что существующих методов доказательств недостаточно для строго математического ответа, но не нужно терять надежду. В марте 2001 года Ричард Карп предсказал, что проблема будет решена молодым математиком (до 30 лет) с использованием подхода, о котором еще никто не думал. Стивен Кук заявил, что кто-нибудь предоставит убедительное доказательство в ближайшие 20 лет.