Что P = NP? И почему это такой известный вопрос?

Вопрос о том, P = NP, пожалуй, самый известный во всей компьютерной науке. Что это означает? А почему это так интересно?

О, и для дополнительной поддержки, пожалуйста, опубликуйте доказательство истинности или лжи утверждения. :)


person raldi    schedule 21.09.2008    source источник
comment
Как красиво изложил Скотт Ааронсон, Массачусетский технологический институт. Если P = NP, то мир будет совершенно другим местом, чем мы обычно предполагаем. Не было бы особой ценности в творческих скачках, не было бы принципиального разрыва между решением проблемы и признанием решения, когда оно будет найдено. Каждый, кто мог оценить симфонию, был бы Моцартом; каждый, кто мог бы следовать пошаговым аргументам, был бы Гауссом ... выдержка из en.wikipedia.org / wiki / Complexity_classes_P_and_NP.   -  person gts    schedule 01.08.2012
comment


Ответы (6)


P означает полиномиальное время. NP означает недетерминированное полиномиальное время.

Определения:

  • Полиномиальное время означает, что сложность алгоритма равна O (n ^ k), где n - размер ваших данных (например, количество элементов в списке для сортировки), а k - константа. .

  • Сложность - это время, измеряемое количеством операций, которые потребуются, в зависимости от количества элементов данных.

  • Операция - это то, что имеет смысл в качестве базовой операции для конкретной задачи. Основная операция сортировки - это сравнение. Для умножения матриц основной операцией является умножение двух чисел.

Теперь вопрос в том, что значит детерминированный и недетерминированный? Существует абстрактная вычислительная модель, воображаемый компьютер, называемый машиной Тьюринга (TM). Эта машина имеет конечное число состояний и бесконечную ленту с дискретными ячейками, в которые можно записывать и читать конечный набор символов. В любой момент времени TM находится в одном из своих состояний и смотрит на конкретную ячейку на ленте. В зависимости от того, что он читает из этой ячейки, он может записать новый символ в эту ячейку, переместить ленту на одну ячейку вперед или назад и перейти в другое состояние. Это называется переходом состояния. Как это ни удивительно, тщательно конструируя состояния и переходы, вы можете создать TM, который эквивалентен любой компьютерной программе, которую можно написать. Вот почему он используется в качестве теоретической модели для доказательства того, что компьютеры могут и не могут делать.

Здесь нас интересуют два типа ТМ: детерминированные и недетерминированные. Детерминированный TM имеет только один переход из каждого состояния для каждого символа, который он считывает с ленты. Недетерминированная TM может иметь несколько таких переходов, т.е. е. он может проверять несколько возможностей одновременно. Это похоже на создание нескольких потоков. Разница в том, что недетерминированная TM может порождать столько таких «потоков», сколько хочет, в то время как на реальном компьютере одновременно может выполняться только определенное количество потоков (равное количеству процессоров). На самом деле компьютеры - это в основном детерминированные TM с ограниченными лентами. С другой стороны, недетерминированный TM не может быть физически реализован, за исключением, возможно, квантового компьютера.

Было доказано, что любую проблему, которую можно решить с помощью недетерминированного TM, можно решить с помощью детерминированного TM. Однако неясно, сколько на это уйдет времени. Утверждение P = NP означает, что если задача занимает полиномиальное время на недетерминированном TM, то можно построить детерминированный TM, который решал бы ту же проблему также за полиномиальное время. Пока никто не смог показать, что это возможно, но никто не смог доказать, что это невозможно.

NP-полная проблема означает NP-проблему X, такую, что любая NP-проблема Y может быть сведена к X полиномиальной редукцией. Это означает, что если кто-нибудь когда-либо придет к решению NP-полной проблемы с полиномиальным временем, это также даст решение любой NP проблемы с полиномиальным временем. Таким образом, это доказывает, что P = NP. И наоборот, если бы кто-нибудь доказал, что P! = NP, то мы были бы уверены, что нет способа решить задачу NP за полиномиальное время на обычном компьютере.

Примером NP-полной проблемы является задача нахождения присвоения истинности, которое сделало бы истинным логическое выражение, содержащее n переменных.
На данный момент на практике любая проблема, которая требует полиномиального времени на недетерминированной TM, может быть только выполняется за экспоненциальное время на детерминированном TM или на обычном компьютере.
Например, единственный способ решить проблему назначения истинности - это попробовать 2 ^ n возможностей.

person Dima    schedule 24.09.2008
comment
Неверно, что единственный способ решить SAT - это перечисление кейсов. См. en.wikipedia.org/wiki/ для получения информации об алгоритме DPLL, который на самом деле очень эффективен во многих распространенных случаях. - person Doug McClean; 24.09.2008
comment
Хорошо, вы усложнили этот путь, добавив недетерминированные машины Тьюринга. Это совершенно второстепенная проблема. - person Derek Park; 24.09.2008
comment
Дерек, прошу не согласиться. Я действительно не понимаю, как вы объясняете P и NP без машин Тьюринга. Однажды я был в классе алгоритмов, который пробовал это. Если бы я не знал о ТМ, я был бы совершенно потерян. - person Dima; 24.09.2008
comment
Дерек, поправка. Я думаю, вы хорошо поработали. Сравнение вычислений и проверок имеет большой смысл. Однако труднее понять, почему то, что проверено в P-времени, может быть вычислено в P-времени без использования TM в качестве модели. - person Dima; 24.09.2008
comment
Что ж, мое заявление было излишне резким. Два выражения NP (ваше и мое), по-видимому, формально эквивалентны, поэтому оба на самом деле верны. Я всегда слышал, как P / NP выражается так, как я описал. - person Derek Park; 25.09.2008
comment
Что касается потребности в модели TM, мне честно говоря, у меня не меньше проблем с тем, чтобы увидеть, как все недетерминированные TM могут вычисляться на детерминированных TM, и с тем, чтобы увидеть, как все проблемы полиномиальной проверки могут быть проблемами полиномиальных вычислений. Мне трудно представить, что оба они правдивы. - person Derek Park; 25.09.2008
comment
Что ж, объясняя ТМ, вы начинаете с доказательства того, что для любой недетерминированной ТМ вы можете построить детерминированную ТМ, которая решает ту же проблему. Тогда вы, естественно, задаетесь вопросом: если у меня есть NTM с полиномиальным временем, могу ли я построить эквивалентный DTM с полиномиальным временем? - person Dima; 25.09.2008
comment
Re: эмуляция NDTM с помощью DTM - единственная разница в том, что NDTM "инстинктивно" знают, какой выбор сделать в любой точке ветвления. Вы можете смоделировать это поведение, делая каждый выбор в точках ветвления с помощью поиска в ширину, и в конечном итоге вы будете следовать тому же пути вычислений, что и NDTLM. - person HenryR; 28.09.2008
comment
Опаздываю на спор, который мне не по зубам, но, будучи неспециалистом, я обнаружил, что объяснение Димы легче понять, чем объяснения, основанные на проверяемости. Но это только я - person 1800 INFORMATION; 11.02.2009
comment
+1 за объяснение происхождения терминов NP и P, хотя что касается краткого объяснения проблемы, я предпочитаю подход Дерека. - person David Z; 27.03.2009
comment
Мне нравится этот ответ, за исключением того, что определение NP-complete в конце расплывчато / неверно. NP-полная означает NP-проблему X, такую, что любая NP-проблема Y может быть сведена к X полиномиальной редукцией. Полиномиальная редукция означает, что любой случай проблемы Y может быть решен путем решения одного или нескольких случаев проблемы X, и что если считать каждый случай решения X как 1, Y будет P. Так, например, сортировка задачи может быть полиномиальной. сводится к проблемному разделу, как в Quicksort. Оказывается, существует множество важных NP-полных задач, например, сумма подмножеств и 3-SAT. - person Steve Jessop; 19.02.2011
comment
Это правда на практике, что решение NP-полных задач на реальном компьютере занимает больше, чем полиномиальное время, но это не то, что это означает, это просто текущее состояние техники, как следствие того, что P = NP неизвестно. Если бы кто-нибудь нашел полиномиальный алгоритм для решения какой-либо NP-полной задачи, это доказало бы, что P = NP, а мы знаем, что этого не произошло, потому что это было бы в новостях! Наоборот, если бы было доказано, что P! = NP, то мы могли бы с уверенностью сказать, что никакая NP-полная задача не разрешима за полиномиальное время. - person Steve Jessop; 19.02.2011
comment
@ Стив Джессоп: спасибо за разъяснения. Вы правы, мое объяснение NP-complete расплывчато. Моя цель заключалась в том, чтобы показать практическое значение NP-полноты. - person Dima; 19.02.2011
comment
@Steve Jessop: Я отредактировал часть о NP-полноте. Пожалуйста, посмотрите, имеет ли это смысл сейчас. - person Dima; 19.02.2011
comment
@ Дима: да, это решает мою жалобу. Спасибо! - person Steve Jessop; 20.02.2011
comment
Я знаю, что это довольно давно, но я просто хочу сказать, что ответ эпичен, и это первое, что мне понравилось! Молодец - person Dimitar Dimitrov; 17.08.2013
comment
@DimitarDimitrov: спасибо! - person Dima; 18.08.2013
comment
Исправление в предпоследнем абзаце: мы были бы уверены, что нет способа решить задачу NP Complete за полиномиальное время на обычном компьютере, поскольку P является подмножеством NP и доказывает, что P! = NP не обязательно говорит что-либо о проблемах в NP, которые не являются NP-Complete, на самом деле в P. - person Millie Smith; 05.11.2014
comment
вау, какой отличный ответ, большое спасибо! - person Philippe; 08.12.2015
comment
У меня все еще есть один вопрос: поскольку NP - это недетерминированное полиномиальное время, а P не считается недетерминированным, означает ли это что P , тогда детерминировано? - person Rafael Eyng; 04.10.2016

  1. Задача «да» или «нет» задается в P (P полиномиальном времени), если ответ может быть вычислен за полиномиальное время.
  2. Задача "да" или "нет" задается в NP (N при детерминированном P олиномиальном времени), если ответ «да» может быть подтвержден. за полиномиальное время.

Интуитивно мы видим, что если проблема в P, то она в NP. Учитывая потенциальный ответ на проблему в P, мы можем проверить ответ, просто пересчитав ответ.

Менее очевидно и гораздо сложнее ответить, все ли проблемы в NP находятся в P. Означает ли тот факт, что мы можем проверить ответ за полиномиальное время, что мы можем вычислить этот ответ за полиномиальное время?

Существует большое количество важных проблем, о которых известно, что они NP -завершенные (в основном, если доказано, что какие-либо из этих проблем относятся к P, то все < / em> NP проблемы обнаружены в P). Если P = NP, то будет доказано, что у всех этих проблем есть эффективное (за полиномиальное время) решение.

Большинство ученых считают, что P! = NP. Однако никаких доказательств для P = NP или P! = NP пока не установлено. Если кто-нибудь представит доказательство любой гипотезы, он выиграет 1 миллион долларов США.

person Derek Park    schedule 24.09.2008

Чтобы дать самый простой ответ, который я могу придумать:

Предположим, у нас есть проблема, которая требует определенного количества входных данных и имеет различные потенциальные решения, которые могут или не могут решить проблему для заданных входных данных. Логическая головоломка в журнале головоломок может быть хорошим примером: входные данные - это условия («Джордж не живет в синем или зеленом доме»), а потенциальное решение - это список утверждений («Джордж живет в желтом доме»). дом, выращивает горох, владеет собакой »). Известным примером является задача коммивояжера: учитывая список городов и время, необходимое для того, чтобы добраться из любого города в любой другой, а также ограничение по времени, потенциальным решением может быть список городов в том порядке, в котором их посещает продавец, и это сработает, если сумма времени в пути будет меньше установленного срока.

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

(Эффективно здесь имеет точное математическое значение. На практике это означает, что большие проблемы не являются необоснованно трудными для решения. При поиске возможного решения неэффективным способом будет перечисление всех возможных решений или чего-то близкого к этому. , в то время как эффективный способ потребует поиска в гораздо более ограниченном наборе.)

Следовательно, проблема P = NP может быть выражена следующим образом: если вы можете эффективно проверить решение проблемы описанного выше типа, сможете ли вы найти решение (или доказать, что его нет) эффективно? Очевидный ответ: «Почему у вас должна быть такая возможность?», И именно в этом суть дела сегодня. Никто так или иначе не смог это доказать, и это беспокоит многих математиков и компьютерных ученых. Вот почему любой, кто сможет доказать решение, получит миллион долларов от Claypool Foundation.

Обычно мы предполагаем, что P не равно NP, что не существует общего способа найти решения. Если бы оказалось, что P = NP, многое бы изменилось. Например, станет невозможным криптография, а вместе с ней и любая конфиденциальность или возможность проверки в Интернете. В конце концов, мы можем эффективно взять зашифрованный текст и ключ и создать исходный текст, поэтому, если P = NP, мы могли бы эффективно найти ключ, не зная его заранее. Взлом пароля стал бы тривиальным делом. С другой стороны, есть целые классы проблем планирования и распределения ресурсов, которые мы могли бы эффективно решить.

Возможно, вы слышали описание NP-complete. NP-полная проблема - это проблема, которая является NP (конечно) и обладает этим интересным свойством: если она находится в P, каждая проблема NP является, и поэтому P = NP. Если бы вы могли найти способ эффективно решить задачу коммивояжера или логические головоломки из журналов-головоломок, вы могли бы эффективно решить все что угодно в NP. NP-полная проблема - это, в некотором смысле, самый сложный вид NP-проблемы.

Итак, если вы сможете найти эффективную общую технику решения любой NP-полной проблемы или доказать, что ее не существует, слава и удача принадлежат вам.

person David Thornley    schedule 24.09.2008
comment
Во втором последнем абзаце у вас в некотором роде самый сложный вид. Вы должны сказать, что NP-полные являются самыми сложными, поскольку они NP-сложные. - person grom; 24.11.2008
comment
Не уверен, что удача будет твоей. Правительству может понадобиться твоя голова. - person Millie Smith; 05.11.2014

Краткое изложение моих скромных знаний:

Есть несколько простых вычислительных задач (например, поиск кратчайшего пути между двумя точками на графике), которые можно вычислить довольно быстро (O (n ^ k), где n - размер входных данных, а k - константа (в в случае графов это количество вершин или ребер)).

Другие проблемы, такие как поиск пути, который пересекает каждую вершину в графе или получение закрытого ключа RSA из открытого ключа, сложнее (O (e ^ n)).

Но CS говорит, что проблема в том, что мы не можем `` преобразовать '' недетерминированную машину Тьюринга в детерминированную, однако мы можем преобразовать недетерминированные конечные автоматы (например, синтаксический анализатор регулярных выражений) в детерминированные (ну, вы можно, но машина будет работать долго). То есть мы должны попробовать все возможные пути (обычно умные профессора CS могут исключить несколько).

Это интересно, потому что никто даже не имеет представления о решении. Некоторые говорят, что это правда, некоторые говорят, что это неправда, но единого мнения нет. Еще один интересный момент - это решение может быть вредным для шифрования с открытым / закрытым ключом (например, RSA). Вы можете сломать их так же легко, как сейчас создается ключ RSA.

И это довольно вдохновляющая проблема.

person terminus    schedule 21.09.2008
comment
Это не совсем так - вы можете преобразовать NDTM в DTM, но новая машина имеет экспоненциальную зависимость времени работы от времени работы оригинала (вы эффективно сначала просматриваете график перехода состояний NDTM). - person Adam Wright; 24.09.2008

Я не так много могу добавить к части вопроса, что и почему в части P =? NP, но это касается доказательства. Доказательство не только стоит дополнительной оценки, но и решит одну из Проблемы тысячелетия. Недавно был проведен интересный опрос, и опубликовал результаты (PDF) определенно стоит прочитать в отношении предмета доказательства.

person rjzii    schedule 24.09.2008

Для начала несколько определений:

  • Особая проблема заключается в P, если вы можете вычислить решение за время меньше n^k для некоторого k, где n - размер входных данных. Например, сортировка может быть выполнена в n log n, что меньше n^2, поэтому сортировка выполняется за полиномиальное время.

  • Проблема в NP, если существует k такое, что существует решение размером не более n^k, которое вы можете проверить вовремя не более n^k. Возьмем трехкратную раскраску графов: для данного графа трехкратная раскраска представляет собой список пар (вершина, цвет), который имеет размер O(n), и вы можете вовремя проверить O(m) (или O(n^2)), все ли соседи имеют разные цвета. Таким образом, граф можно раскрасить в три цвета только при наличии короткого и легко проверяемого решения.

Эквивалентное определение NP - «проблемы, решаемые с помощью N детерминированной машины Тьюринга за P олиномиальное время». Хотя это говорит вам, откуда взялось название, это не дает такого же интуитивного ощущения того, на что похожи проблемы NP.

Обратите внимание, что P является подмножеством NP: если вы можете найти решение за полиномиальное время, есть решение, которое можно проверить за полиномиальное время - просто убедитесь, что данное решение совпадает с тем, которое вы можете найти.

Почему интересен вопрос P =? NP? Чтобы ответить на этот вопрос, сначала нужно увидеть, что такое NP-полные проблемы. Проще говоря,

  • Проблема L является NP-полной, если (1) L находится в P и (2) алгоритм, который решает L, может использоваться для решения любой проблемы L 'в NP; то есть, учитывая экземпляр L ', вы можете создать экземпляр L, у которого есть решение, тогда и только тогда, когда у экземпляра L' есть решение. Формально говоря, каждая проблема L 'в NP сводится к L.

Обратите внимание, что экземпляр L должен быть вычислимым за полиномиальное время и иметь полиномиальный размер, равный L '; Таким образом, решение NP-полной задачи за полиномиальное время дает нам решение за полиномиальное время для всех NP-задач.

Вот пример: предположим, мы знаем, что 3-раскраска графов - это NP-сложная задача. Мы хотим доказать, что определение выполнимости булевых формул также является NP-трудной задачей.

Для каждой вершины v имейте две логические переменные v_h и v_l и требование (v_h или v_l): каждая пара может иметь только значения {01, 10, 11}, которые мы можем рассматривать как цвет 1, 2 и 3.

Для каждого ребра (u, v) необходимо, чтобы (u_h, u_l)! = (V_h, v_l). Это,

not ((u_h and not u_l) and (v_h and not v_l) or ...) перечисление всех одинаковых конфигураций и оговорка, что ни одна из них не соответствует действительности.

AND 'объединение всех этих ограничений дает логическую формулу, которая имеет полиномиальный размер (O(n+m)). Вы можете проверить, что для вычисления также требуется полиномиальное время: вы делаете простые O(1) вещи для каждой вершины и каждого ребра.

Если вы можете решить созданную мной булеву формулу, вы также можете решить раскраску графа: для каждой пары переменных v_h и v_l пусть цвет v будет соответствовать значениям этих переменных. По построению формулы, у соседей не будет одинаковых цветов.

Следовательно, если 3-раскраска графов NP-полная, то выполнимость булевой формулы также является выполнимостью по логическим формулам.

Мы знаем, что 3-раскраска графов NP-полна; однако исторически мы узнали это, сначала показав NP-полноту выполнимости логической схемы, а затем уменьшив ее до трехцветности (а не наоборот).

person Jonas Kölker    schedule 11.02.2009