Що таке "P = NP?", І чому це таке відоме питання? [зачинено]


234

Питання про те, чи P = NP чи не найвідоміший у всіх комп’ютерних науках. Що це означає? І чому це так цікаво?

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


11
Як чудово виклав Скотт Ааронсон, MIT "Якщо P = NP, то світ був би глибоко іншим місцем, ніж ми зазвичай вважаємо. Не було б особливої ​​цінності в" творчих стрибках ", а також принципового розриву між рішенням Проблема та розпізнавання рішення, коли його знайдуть. Кожен, хто може оцінити симфонію, був би Моцарт; кожен, хто міг би дотримуватися покрокового аргументу, був би Гауссом ... "уривок із en.wikipedia.org/wiki/Complexity_classes_P_and_NP .
gts

Відповіді:


365

P означає полиномний час. NP означає недетермінований поліном часу.

Визначення:

  • Поліномний час означає, що складність алгоритму дорівнює O (n ^ k), де n - розмір ваших даних (наприклад, кількість елементів у списку, який слід сортувати), а k - константа.

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

  • Операція - це все, що має сенс як основна операція для певного завдання. Для сортування основна операція - це порівняння. Для матричного множення основна операція - це множення двох чисел.

Тепер питання полягає в тому, що означає детермінований проти недетермінований? Існує абстрактна обчислювальна модель, уявний комп'ютер, який називається машиною Тюрінга (ТМ). Ця машина має кінцеву кількість станів і нескінченну стрічку, на якій є дискретні комірки, в які можна записати і прочитати скінченний набір символів. У будь-який момент часу ТМ знаходиться в одному зі своїх станів, і він дивиться на конкретну клітинку на стрічці. Залежно від того, що він читає з цієї комірки, він може записати новий символ у цю клітинку, перемістити стрічку на одну клітинку вперед або назад і перейти в інший стан. Це називається переходом держави. Досить дивно, ретельно будуючи стани і переходи, ви можете спроектувати TM, який еквівалентний будь-якій комп'ютерній програмі, яку можна записати.

Тут нас стосуються два види ТМ: детерміновані та недетерміновані. Детермінований TM має лише один перехід від кожного стану для кожного символу, який він зчитує із стрічки. Недетермінований ТМ може мати кілька таких переходів, тобто він здатний перевірити кілька можливостей одночасно. Це на зразок нересту кількох ниток. Різниця полягає в тому, що недетермінований TM може породити стільки таких "потоків", скільки хоче, тоді як на реальному комп'ютері одночасно може виконуватися лише певна кількість потоків (що дорівнює кількості процесорів). Насправді комп'ютери - це в основному детерміновані ТМ з кінцевими стрічками. З іншого боку, недетермінований ТМ не може бути реалізований фізично, за винятком, можливо, з квантовим комп'ютером.

Доведено, що будь-яка проблема, яку можна вирішити недетермінованою ТМ, може бути вирішена детермінованою ТМ. Однак не ясно, скільки часу це займе. Заява P = NP означає, що якщо проблема займає поліноміальний час на недетермінованій ТМ, то можна побудувати детерміновану ТМ, яка вирішила б цю ж проблему і в поліноміальний час. Поки ніхто не зміг довести, що це можна зробити, але ніхто так і не зміг довести, що цього не можна зробити.

Повна NP-задача означає задачу NP X, так що будь-яка NP-задача Y може бути зменшена до X шляхом зменшення полінома. Це означає, що якщо хтось коли-небудь придумає багаточленний час розв’язання NP-повної проблеми, це також дасть поліноміально-часове рішення будь-якої задачі NP. Таким чином, це могло б довести, що P = NP. І навпаки, якби хто-небудь доводив, що P! = NP, то ми були б впевнені, що немає можливості вирішити задачу NP в поліноміальний час на звичайному комп'ютері.

Прикладом NP-повної проблеми є проблема пошуку присвоєння істини, яка б зробила булевий вираз, що містить n змінних.
На даний момент на практиці будь-яка проблема, що займає поліноміальний час на недетермінованій ТМ, може бути виконана лише в експоненційний час на детермінованій ТМ або на звичайному комп'ютері.
Наприклад, єдиний спосіб вирішити задачу присвоєння істини - спробувати 2 ^ n можливості.


5
Неправда, єдиний спосіб вирішити SAT - це перерахування справ. Інформацію про алгоритм DPLL див. На en.wikipedia.org/wiki/… , яка насправді є дуже ефективною у багатьох поширених випадках.
Дуг МакКлін

44
Дерек, прошу не погодитися. Я справді не бачу, як ви пояснюєте P і NP без машин Тьюрінга. Я колись був у класі алгоритмів, який спробував це. Якби я не знав про ТМ, я б абсолютно загубився.
Діма

4
На практиці правда, що розв’язання задач, повних NP, займає більше часу, ніж поліном на реальному комп'ютері, але це не те, що це означає, це лише сучасний стан техніки, як наслідок того, що P = NP невідомий. Якщо хтось знайшов алгоритм полінома, щоб вирішити будь-яку задачу, повну NP, це доведеться P = NP, і ми знаємо, що цього не сталося, бо це було б у новинах! І навпаки, якби було доведено, що P! = NP, тоді можна з упевненістю сказати, що жодна задача, повна NP, не вирішується в поліноміальний час.
Стів Джессоп

21
Я знаю, що це досить старе, але я просто хочу сказати, що відповідь епічна, і це перше, що натиснуло на мене! Гарна робота
Димитър Димитров

4
Виправлення у другому до останнього абзацу: "ми були б впевнені, що немає способу вирішити NP Повна задача в поліномійному часі на звичайному комп'ютері", оскільки P - це підмножина NP, а доведення P! = NP не обов'язково говорить що-небудь про те, які проблеми в НП, які не є NP-Complete, є насправді в П.
Міллі Сміт

88
  1. Проблема "так" чи "ні" є в P ( P оліноміальний час), якщо відповідь можна обчислити в поліноміальний час.
  2. Так-або-ні проблем в NP ( N на детермінованою P olynomial часу) , якщо так , відповідь може бути перевірено в поліноміальний час.

Інтуїтивно ми можемо побачити, що якщо проблема є в P , то вона знаходиться в NP . Давши потенційну відповідь на проблему в P , ми можемо перевірити відповідь, просто перерахувавши відповідь.

Менш очевидна, і набагато важче відповісти, чи є всі проблеми в НП в P . Чи означає той факт, що ми можемо перевірити відповідь у поліноміальний час, що ми можемо обчислити цю відповідь у поліноміальний час?

Існує велика кількість важливих проблем, які, як відомо, є NP- неповними (в основному, якщо будь-які ці проблеми виявляються в P , то всі проблеми NP виявляються в P ). Якщо P = NP , то буде доведено, що всі ці проблеми мають ефективне (поліноміальний час) рішення.

Більшість вчених вважає, що P ! = NP . Однак досі не встановлено жодного доказу ні для P = NP, ні для P ! = NP . Якщо хтось надасть доказ для будь-якої думки, він виграє 1 мільйон доларів США .


23

Щоб дати найпростішу відповідь, яку я можу придумати:

Припустимо, у нас є проблема, яка займає певну кількість входів і має різні потенційні рішення, які можуть вирішити проблему для заданих входів або не можуть. Логічна головоломка в журналі-головоломці - хороший приклад: вхідні дані - це умови ("Джордж не живе в синьому або зеленому будинку"), а можливе рішення - це перелік тверджень ("Джордж живе в жовтому" будинок, вирощує горох і володіє собакою "). Відомий приклад - проблема продавця подорожей: враховуючи перелік міст, час переходу з будь-якого міста до будь-якого іншого, а також часовий ліміт, потенційним рішенням буде перелік міст у порядку, коли продавець відвідує їх, і це спрацювало, якби сума часу подорожі була меншою за часовий ліміт.

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

(Ефективно тут має точне математичне значення. Практично це означає, що великі проблеми не важко вирішити. Під час пошуку можливого рішення неефективним способом було б перерахувати всі можливі можливі рішення чи щось близьке до цього. , хоча ефективний спосіб вимагатиме пошуку значно обмеженого набору.)

Отже, проблема P = NP може бути виражена таким чином: Якщо ви можете ефективно перевірити рішення проблеми, описаної вище, чи вдасться знайти рішення (або довести, що його немає) ефективно? Очевидна відповідь - «Чому ти маєш це вміти?», І саме там сьогодні стоїть справа. Ніхто не зміг довести це так чи інакше, і це турбує багато математиків та вчених-комп'ютерів. Ось чому кожен, хто може довести рішення, коштує мільйон доларів від фонду «Клейпул».

Ми загалом припускаємо, що P не дорівнює NP, що немає загального способу пошуку рішень. Якби виявилося, що P = NP, багато чого змінилося б. Наприклад, криптовалюта стане неможливою, а з нею і будь-яка конфіденційність або перевіряється в Інтернеті. Зрештою, ми можемо ефективно взяти зашифрований текст та ключ та створити оригінальний текст, тож якщо P = NP, ми могли б ефективно знайти ключ, не знаючи його попередньо. Злом паролів став би банальним. З іншого боку, існують цілі класи проблем планування та проблем розподілу ресурсів, які ми могли б ефективно вирішити.

Можливо, ви почули опис NP-complete. Проблема, повна NP, - це проблема, що є NP (звичайно), і має цю цікаву властивість: якщо вона є в P, кожна проблема NP є, і так P = NP. Якщо ви зможете знайти спосіб ефективного вирішення проблеми продавця подорожей або логічних загадок із журналів-головоломок, ви могли б ефективно вирішити що-небудь в НП. Проблема, що завершується NP, є певним чином найважчою проблемою NP.

Тож, якщо ви зможете знайти ефективну техніку загального вирішення будь-якої проблеми, що не стосується НП, або довести, що такого не існує, слава і багатство є вашими.


1
У другому останньому абзаці у вас є "певним чином, найважче". Слід сказати, що NP-завершені є найскладнішими, оскільки вони жорсткі.
grom

1
Я не впевнений, що щастя буде вашим. Уряд може захотіти вашої голови.
Міллі Сміт

9

Короткий підсумок моїх скромних знань:

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

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

Але CS говорить говорить, що проблема полягає в тому, що ми не можемо "перетворити" недетерміновану машину Тьюрінга в детерміновану, але ми можемо, однак, перетворити недетерміновані кінцеві автомати (наприклад, аналізатор регулярних виразів) в детерміновані (ну, ви може, але час роботи машини займе багато часу). Тобто ми мусимо спробувати всі можливі шляхи (зазвичай розумні професори CS можуть виключати кілька).

Це цікаво тим, що ніхто навіть не має уявлення про рішення. Деякі кажуть, що це правда, деякі кажуть, що це неправда, але консенсусу немає. Ще одна цікава річ полягає в тому, що рішення може бути шкідливим для шифрування публічного / приватного ключа (наприклад, RSA). Ви можете зламати їх так просто, як зараз створювати ключ RSA.

І це досить натхненна проблема.


1
Це не зовсім вірно - ви можете перетворити NDTM в DTM, але нова машина має показник часу роботи в початковому режимі оригіналу (ви фактично впоперек шукаєте графік переходу стану NDTM).
Адам Райт

6

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


5

По-перше, деякі визначення:

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

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

Еквівалентне визначення NP - "задачі, вирішені N ондетермінованою машиною Тюрінга за П оліноміальним часом". Хоча це говорить вам, звідки походить назва, це не дає вам такого ж інтуїтивного відчуття, що таке проблеми 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-розфарбовування графіків є важкою проблемою. Ми хочемо довести, що вирішення відповідності булевих формул також є важкою проблемою.

Для кожної вершини 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-повноту задоволеності булевої схеми, а потім зменшили її до 3-кольоровості (замість навпаки).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.