Чому важливо довести, що проблема неповна?


Відповіді:


26

Алі, хороше запитання.

Припустимо, ви хочете показати, що деяка проблема P обчислювально обчислювальна. Тепер ви можете припустити, що P важко лише виходячи з того, що в нас поки що немає ефективних алгоритмів. Але це доволі надумані докази, ні? Можливо, ми пропустили якийсь приємний спосіб поглянути на P, який би полегшив рішення. Отже, щоб припустити, що P важко, ми хотіли б накопичити більше доказів. Зниження - це інструмент, щоб зробити саме це! Якщо ми можемо звести якусь іншу природну задачу Q до P, то ми показали, що P принаймні так само важко, як і Q. Але Q може бути проблемою з якоїсь зовсім іншої області математики, і люди, можливо, десятиліттями намагаються вирішити Q також . Таким чином, ми можемо бачити наше неспроможність знайти ефективний алгоритм для Q як доказ того, що P важко. Якщо у нас багато таких Q '

Саме це забезпечує теорія повноти NP. Якщо ви докажете, що ваша проблема не є повною, то ви прив'язали її твердість до твердості сотень інших проблем, кожна з яких представляє значний інтерес для різних громад. Таким чином, морально кажучи, ви можете бути впевнені, що ваша проблема справді важка.


Отже, початкова мета - знайти ефективний алгоритм для P, але оскільки це видається недосяжним, слід припустити, що P обчислювально важко, а потім ваші відповіді пояснює решту?
Алі

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

4
@Ali: Я настійно пропоную вам ознайомитись із вступним підручником з теорії складності. Цей веб-сайт насправді не є форумом для таких питань, але більше для питань рівня досліджень.
arnab

5
@Ali: Я напевно рекомендую вам прочитати Гарі та Джонсона . Відомий мультфільм у книзі - обов’язковий!
Цуйосі Іто

9

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

Зазвичай це трамплін, тому що проблема все ще існує - вам просто доведеться розслабити свої вимоги. Зазвичай люди намагаються розібратися, як розслабити одне або кілька «ефективних», «точних» чи «загальних». Неефективне і точне-загальне - це спроба знайти кращі та кращі константи в експоненті цих алгоритмів. Ефективне і неточне загальне - це вивчення алгоритмів наближення. Ефективне і точне, але не загальне - це дослідження простежуваності фіксованого параметра та пошук підкласів введення, для яких можна знайти ефективні алгоритми.


Приємний момент для трьох способів послабити проблему! Я здогадуюсь, що рандомізовані алгоритми потрапляють у категорію "ефективні та неточні та загальні".
Сісен-Чі Чанг 張顯 之

Дійсно? Не всі рандомізовані алгоритми є неточними.
Jeffε

І звичайно, ти маєш рацію, JeffE. Також я розумію, що ви (або були) інструктуєте колишнього мого студента в алгоритмах! Щодо точки зору Сісен-Чі, я не думаю, що рандомізовані алгоритми добре вписуються в цю схему. Безумовно, деякі рандомізовані алгоритми (генетичні алгоритми та нейронні мережі приходять на думку) є неточними, але ефективними та загальними, але деякі рандомізовані алгоритми є досить точними - врахуйте, що алгоритм перевірки числа є простим! Це випадковий алгоритм, але я цілком впевнений, що ніхто ніколи не отримував непростого з будь-якої розумної реалізації.
Пітер Бут

5

Давайте розглянемо два різні випадки, чому дві різні особи хотіли б довести проблему :NП-cомpлете

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

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

NП-cомpлете

П=NП3-SАТ

NП-cомpлетеСLЯQUЕ

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


2
Багато людей вирішують неповні завдання на практиці, навіть якщо їх складно визначити. У середньому випадку багато проблем виявляються набагато простішими, хоча це може бути важко показати; ще важче довести що-небудь про евристичні алгоритми, які добре працюють на практиці. Я пропоную архітектору програмного забезпечення запитати когось, чи справді проблема "справді" складна перед тим, як відмовитись і змінити її дизайн.
Yuval Filmus

Я не кажу, що дизайн потрібно змінювати. Використання евристичного або алгоритму наближення мені здається (помилково?) Подібним до зміни проблеми ... адже знайте, ви просите менш точні рішення (прийнятні такі? Це залежить від програми!).
chazisop

3

Кожна проблема має кілька зв'язків з іншими проблемами. Крім того, існують зв’язки між класами проблем та складності.

Тому класифікація однієї проблеми як NPC зазвичай дає нам уявлення про інші проблеми, а також класи складності.

Наприклад, візьміть задачу про ізоморфізм графіка (GI). У наступній роботі:

Уве Шенінг, Графічний ізоморфізм знаходиться в низькій ієрархії , Праці 4-го щорічного симпозіуму з теоретичних аспектів інформатики , 1987, 114–124; також: Журнал комп'ютерних та системних наук, т. 37 (1988), 312–323.

доведено, що якщо GI ∈ NPC, то поліноміальна ієрархія (PH) руйнується до другого рівня; що стане серйозним проривом у теорії структурної складності.


3

pppp


1
Я чув, що був час, коли ви довели, що деякі проблеми є неповними, ви мали б кандидатську дисертацію. Це правда?
Hsien-Chih Chang 張顯 之

@ Hsien-ChihChang 張顯 之: Я не можу це коментувати, але ці результати, безумовно, були значно популярнішими кілька десятиліть тому. У цей час видається все складніше опублікувати документ, в якому ви "лише" докажете результат твердості (за винятком "відомих проблем", звичайно), тоді як це не було б проблемою в 70-х-80-х, судячи з достаток подібного роду паперів у той період.
Ентоні Лабарре
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.