Примітка: я ще не ретельно перевірив відповідь, і є пропущені частини, які слід написати, вважайте це першим чернетом.
Ця відповідь призначена головним чином для людей, які не є дослідниками теорії складності чи споріднених галузей. Якщо ви теоретик складності і прочитали відповідь, будь ласка, повідомте мене, якщо ви помітили будь-яке питання або маєте ідею покращити відповідь.
Там, де ви можете знайти заявлені рішення P проти NP
- Існує сторінка P проти NP яка містить перелік таких претензій.
- Статті, які вимагають вирішити питання, регулярно публікуються на arXiv .
Інші списки того, як не вирішити P проти NP
Lance Fortnow, Отже, ти думаєш, що ти влаштувався П верюс NP , 2009
Скотт Ааронсон, вісім ознак Неправильне доведення P ≠ NP , 2010
Сторінка Polymath для статті Deolalikar , де в розділі подальших читань є хороший список посилань на проблему.
Як не підходити до П проти НП
Дозвольте мені обговорити "як не підходити до П проти НП" не в розумінні ідей, які не спрацюють, а в більш загальному сенсі. P проти NP - це проста проблема констатації (див. Мою відповідь тут ):
NP = P: Для кожної проблеми вирішення алгоритму перевірки поліноміального часу існує алгоритм багаточленного часу.
або рівнозначно
Існує поліноміальний алгоритм часу для SAT.
SAT можна замінити будь-якою іншою проблемою, що не стосується NP .
.
Часто люди надмірно спрощують та перефілософствують проблему та перебільшують практичну важливість проблеми (як зазначено вище). Такі твердження часто мають на меті зрозуміти інтуїцію, але вони жодним чином не заміняють фактичну математичну постановку проблеми.
Теоретична ефективність не є такою ж, як здійсненність на практиці.
Дозвольте спочатку з перебільшеними практичними наслідками.
I. Можливо, що P = NP, але це не допомагає для будь-якої проблеми на практиці!
Скажімо, наприклад, що SAT знаходиться в P, але найшвидший алгоритм його часу роботи -
. Цей алгоритм не корисний.2264н65536+ 22128
II. Цілком можливо , що P NP , і ми можемо вирішувати NP-повні задачі ефективно .≠
Скажімо, наприклад, що SAT не знаходиться в P, але має алгоритм із часом виконання .нlg∗lg∗н
Надати вхід, який складе ви повинні використовувати більше електронів, які, як вважають, є у Всесвіті. Отже показник по суті 2 .lg∗n > 62
Тут головним є те, що P - абстрактна проста модель ефективної обчислення, найгірша складність - це абстрактна проста модель оцінки вартості обчислення тощо. Все це абстракції, але ніхто на практиці не розглядає алгоритм як, наприклад, у (I) вище, як ефективний алгоритм. P - хороша абстрактна модель, вона має приємні властивості, робить технічні проблеми легкими, а також корисною. Однак, як і вся математична абстракція, вона приховує деталі, які на практиці можуть нас хвилювати. Існують різні більш вдосконалені моделі, але чим складніша модель стає тим менш приємним, про що можна було б сперечатися.
Те , що люди дбають про на практиці для обчислення в відповідь на проблему за винятком випадків , що вони піклуються про використання розумного кількості ресурсів. Є залежні від завдання і їх слід враховувати.
Спроба знайти кращі алгоритми для практичних випадків важких проблем NP - це цікаве та гідне починання. Існують евристичні алгоритми SAT-solver, які використовуються в галузі та можуть вирішувати практичні екземпляри SAT з мільйонами змінних. Існує навіть Міжнародний конкурс SAT .
(Але також є невеликі конкретні випадки, що всі ці алгоритми виходять з ладу і виходять з ладу досить сильно, ми можемо фактично довести, що всі найсучасніші сучасні SAT-вирішувачі потребують експоненціального часу для вирішення простих прикладів, таких як пропонований принцип «Голубця» .)
Майте на увазі, що правильність та час роботи програм неможливо отримати лише за допомогою програми на екземпляри . Не має значення, скільки екземплярів ви пробуєте, жодна сума недостатня. Існує нескінченно багато можливих входів, і ви повинні показати правильність та ефективність (тобто час роботи є поліном) для всіх програм. Словом, вам потрібні математичні докази правильності та ефективності. Якщо ви не знаєте, що є математичним доказом, то спочатку слід вивчити деякі основні математики (прочитайте підручник з дискретної математики / комбінаторики / теорії графів, це хороша тема, щоб дізнатися про те, що вважається математичним доказом).
Також будьте обережні щодо інших претензій щодо P проти NP та наслідків його відповідей. Такі твердження часто базуються на подібних спрощеннях.
Теоретики складності не дуже цікавляться відповіддю на П проти НП!
Я трохи перебільшував. Звичайно, нам важливо відповісти на П проти НП. Але ми дбаємо про це в контексті. P vs. NP - наша основна проблема, але це не є кінцевою метою. Викласти проблему легко, вона включає багато фундаментальних ідей, вона корисна для пояснення виду питань, які нас цікавлять, людям, які не знайомі з цією темою. Але ми не шукаємо жодної шматочки Так / Ні відповіді на питання.
Ми прагнемо краще зрозуміти природу ефективних обчислень . Ми віримо, що до вирішення питання вдасться з таким розумінням, і це справжня причина, коли ми його турбуємо. Це частина величезного комплексу досліджень. Якщо ви хочете покуштувати те, що ми маємо, перегляньте хороший підручник з теорії складності, наприклад, " Теорія складності: сучасний підхід " Арори та Барака ( версія версії ).
≠ ). Таким чином, ми можемо перевірити претензію з ймовірністю помилки, меншою, ніж метеор, який потрапив в наш будинок, ми цілком впевнені, що доказ правильний і P = NP, але ми не знаємо доказів. Це не створить для нас багато задоволення чи захоплення. Сам формальний доказ також не буде таким задоволенням. Те, що ми шукаємо, не є офіційним доказом, те, що ми прагнемо - це розуміння.
Словом, з точки зору теоретика складності
P vs. NP - це не головоломка з відповіддю Так / Ні. Ми шукаємо відповіді на P проти NP, оскільки вважаємо, що це дозволить краще зрозуміти природу ефективних обчислень. Відповідь без значного прогресу в нашому розумінні не дуже цікава.
Занадто багато випадків, коли неексперти заявляли про рішення для П проти НП, і ці вимоги зазвичай страждають від питань, яких вони не мали б висловити, якби просто прочитати стандартний підручник з теорії складності.
Загальні проблеми P = NP
Претензії Р = NP здаються більш поширеними. Я думаю, що наступним є найбільш поширений тип. Хтось має ідею і пише програму і тестує її в декількох випадках і вважає, що це поліноміальний час і правильно вирішує проблему, повну NP. Як я пояснив вище, жодна кількість тестувань не покаже P = NP. P = NP потребує математичного підтвердження , а не просто програми, яка, здається, вирішує повну задачу NP в поліноміальний час.
Ці спроби зазвичай страждають від одного з двох питань:
I. алгоритм насправді не є поліноміальним часом.
II. алгоритм не вирішує всі екземпляри правильно.
≠
[писати]
Як перевірити, що алгоритм насправді не працює
Ви не можете показати, що ваш алгоритм працює правильно, тестуючи. Але ви можете показати, що це не працює правильно, тестуючи! Отже, ось як ви можете переконатися, що ваш алгоритм невірний, якщо ви готові виконати якусь роботу.
По-перше, напишіть програму для перетворення екземплярів SAT (у стандартному форматі CNF) у важку для NP задачу, яку ви вирішуєте. SAT - одна з найбільш вивчених проблем, пов'язаних з NP, а зменшення з інших проблем до SAT - це легко. По-друге, візьміть приклади, з якими стикаються найсучасніші рішення SAT (наприклад, візьміть приклади із змагань SAT) та подайте їх у свій алгоритм і подивіться, як працює ваш алгоритм. Спробуйте такі важкі екземпляри, як пропозиційний принцип «Голубця» (і не обманюйте, жорстко кодуючи їх як особливі випадки), криптографічні екземпляри (наприклад, RSA Factoring Challenges ), випадкові випадки k-SAT біля порогу тощо.
10 н2
Як перевірити алгоритмічну ідею P = NP не може працювати
Якщо ви зробите це, ви будете впевнені, що ваш алгоритм не працює (якщо він працює краще, ніж найсучасніші SAT-вирішувачі, то змагатимуться у наступному змаганні, і багато людей будуть зацікавлені у вивченні вашого алгоритму та ідей).
Тепер ви знаєте, що це насправді не працює, але цього недостатньо. Ви хочете знати, чому,
це причина мого алгоритму не працює з невеликою проблемою, яку можна виправити, або є принципова причина, чому він не може працювати?
Іноді проблема з алгоритмом проста, і можна визначити, що було неправильно концептуально. Найкращий результат полягає в тому, що ви розумієте причину, коли ваша ідея не може працювати. Часто це не так, ваша ідея не працює, але ви не можете зрозуміти, чому. У цьому випадку пам’ятайте:
розуміння того, чому якась ідея не може працювати, може бути складніше, ніж вирішити П проти НП!
Якщо ви зможете формалізувати свою ідею достатньо, ви, можливо, зможете довести обмеження певних ідей (наприклад, є результати, які говорять про те, що конкретні формалізації жадібного алгоритму не можуть вирішити проблеми, заповнені NP). Однак це ще складніше, і ви не маєте великих шансів, якщо не прочитали стандартний підручник з теорії складності.
Іноді навіть немає чіткої концептуальної ідеї, чому алгоритм повинен працювати, тобто він заснований на деякій недостатньо зрозумілій евристиці . Якщо у вас немає чіткого концептуального уявлення про те, чому повинен працювати ваш алгоритм, ви, можливо, не будете мати багато шансів зрозуміти, чому це не так!
≠
≠
Випуск 1: автор не знає визначення Р і НП, або ще гірше не розуміє, що є математичним доказом. Оскільки автору бракує базової математичної підготовки, він не розуміє, коли йому кажуть, що він представляє, це не є доказом (наприклад, кроки не випливають із попередніх).
Випуск 2: автор плутає "ми не знаємо як" з "математичною неможливістю". Наприклад, вони роблять різні необґрунтовані припущення і на запитання "чому це твердження є правдивим?" вони відповідають "як це може бути помилковим?". Одним із загальних є припущення, що будь-яка програма, що вирішує проблему, повинна виконувати певні кроки, наприклад, вона повинна обчислювати конкретні проміжні значення, оскільки він не може придумати альтернативний спосіб вирішення проблеми.
[буде завершено]
≠
[писати]
≠
Якщо позов не страждає від цих основних питань, то відхилити його стає складніше. На першому рівні можна знайти неправильний крок у аргументі. Типова відповідь автора полягає в тому, що я можу це виправити, і це можна продовжувати. Подібно до рішень P = NP, часто буває дуже важко знайти фундаментальну проблему з ідеєю, яка може показати, що вона не може працювати, особливо коли сама ідея неформальна.
≠