У суштини, питање П = НП? гласи: ако одговори на да-не питање који гласе да могу да се провере брзо (у полиномијалном времену), да ли сами одговори могу да се израчунају брзо?
Као пример може да се узме проблем суме подскупа, проблем код кога је за неко понуђено решење лако утврдити да ли је исправно, али се верује (није доказано) да је проналажење решења тешко. Ако је дат скуп целих бројева, да ли неки непразан подскуп овог скупа има збир једнак нули? На пример, да ли неки подскуп скупа {−2, −3, 15, 14, 7, −10} има збир једнак нули? Одговор да, јер је збир {−2, −3, −10, 15} једнак нули може брзо да се провери помоћу само неколико сабирања. Међутим, за проналажење таквог подскупа би било потребно много више времена. Ако је понуђен одговор на ово питање, тај одговор може да се верификује у полиномијалном времену, тако да овај проблем спада у класу НП.
Одговор на питање П = НП би одредио да ли је проблеме као што је сума подскупа подједнако лако решити као што је лако верификовати њихова решења. Ако би се испоставило да П није једнако НП, то би значило да је неке НП проблеме значајно теже решити него верификовати њихова решења.
Ограничење на проблеме одлучивања (да-не проблеме) није битно; резултујући проблем када се дозволе компликованији одговори (да ли је ФП = ФНП) је еквивалентан.[3]
Релација између класа комплексности П и НП се проучава у рачунарској теорији комплексности, која се бави ресурсима неопходним током израчунавања како би се решио дати проблем. Најчешће посматрани ресурси су време (колико корака је потребно да би се проблем решио) и простор (колико меморије је неопходно имати).
У таквој анализи је неопходно прецизирати модел рачунара који се користи за израчунавање. Уобичајено је да се претпостави да је рачунар детерминистички (за дато тренутно стање рачунара и за дати било који улаз, постоји само једна могућа акција коју рачунар може да предузме) и секвенцијалан (акције спроводи једну по једну). Данас (2008. година), ове претпоставке су задовољене за практично све рачунаре који постоје, чак и за оне који практикују паралелно израчунавање.[7][8][9]
У овој теорији, класа П се састоји од свих оних проблема одлучивања који могу да буду решени коришћењем детерминистичке секвенцијалне машине у времену које је полиномијално у односу на величину улаза; класа НП се састоји од свих оних проблема одлучивања чија позитивна решења могу да се верификују у полиномијалном времену ако је дата права информација, или еквивалентно, чије решење може да се нађе у полиномијалном времену помоћу недетерминистичке машине.[10] Једно од највећих, ако не и највеће отворено питање теоријског рачунарства се тиче односа између ове две класе:
Да ли је П једнако НП?
2002. године је спроведена анкета међу 100 стручњака и 61 је рекао да верује да је одговор не, 9 је сматрало да је одговор да, 22 није било сигурно а 8 је веровало да је питање можда независно у односу на тренутно прихваћене аксиоме, па би га стога било немогуће ни потврдити нити оповргнути.[7]
Формалне дефиниције за П и НП
Проблем одлучивања се може посматрати као проблем који као улаз узима неку ниску (реч), а као излаз даје да или не. Ако постоји алгоритам (рецимо Тјурингова машина, или рачунарски програм са неограниченом меморијом) који је у стању да да тачан одговор за било коју улазну ниску дужине у не више од корака, где су и константе независне од улазне ниске, онда се каже да је проблем решив у полиномијалном времену и налази се у класи комплексности П. Формално, П се дефинише као скуп свих језика који могу да буду одлучени детерминистичком полиномијалном Тјуринговом машином. То јест,
П = {L : L=L(M) за неку детерминистичку полиномијалну Тјурингову машину M }
где
а детерминистичка полиномијална Тјурингова машина је детерминистичка Тјурингова машина M која задовољава следећа два услова:
и = број корака који су потребни да би се M зауставила за улаз w.
НП може на сличан начин да се дефинише коришћењем недетерминистичке Тјурингове машине (традиционални начин) Међутим, модеран приступ у дефинисању НП подразумева концепт верификатора. Формално, НП се дефинише као скуп свих језика над коначном азбуком, за које постоји верификатор у полиномијалном времену, где се верификатор дефинише на следећи начин.
Нека је језик над коначном азбуком, .
ако и само ако постоји бинарна релација и позитиван цео број , такав да су следећа два услова задовољена:
Тјурингова машина која одлучује се назива верификатором за L.
Начелно, верификатор не мора да ради у полиномијалном времену. Међутим, да би L било унутар НП, неопходно је да постоји верификатор у полиномијалном времену.
НП комплетност
У решавању питања да ли је П = НП, врло је користан концепт НП-комплетности. Неформално, НП-комплетни проблеми су најтежи проблеми у класи НП у смислу да ако су неки НП проблеми изван класе П, онда су то НП-комплетни проблеми. НП-комплетни проблеми су они НП-тешки проблеми који су у класи НП, а НП-тежак проблем је онај проблем на који се било који проблем из класе НП може свести у полиномијалном времену. На пример, проблем трговачког путника дефинисан у виду проблема одлучивања је НП-комплетан, тако да сваки примерак сваког НП проблема може механички да се трансформише у неки примерак проблема трговачког путника и то у полиномијалном времену, тако да је одговор на почетни проблем даако и само ако је одговор на добијени примерак проблема трговачког путника да. Проблем трговачког путника је један од многих НП-комплетних проблема. Ако је било који НП-комплетан проблем у класи П, онда би следило да је П = НП. Међутим, иако је за многе важне проблеме показано да су НП-комплетни, још увек није пронађен ниједан брз алгоритам за било који од њих.
На основу саме дефиниције, није очигледно да постоје НП-комплетни проблеми. Тривијалан НП-комплетан проблем би могао да се дефинише на следећи начин: ако је дат опис Тјурингове машине M, за који се гарантује да ће стати у полиномијалном времену, да ли постоји улаз полиномијалне дужине који ће M прихватити?[11] Овај проблем је у НП, јер за дати улаз је једноставно проверити да ли ће га M прихватити простим симулирањем рада M (пустимо машину да изврши израчунавање); НП-тежак је, јер верификатор за сваку појединачну инстанцу проблема у НП може да се кодира у полиномијалну машину M која узима решење као верификован улаз. Онда се питање да ли је инстанца има решење или не решава одговором на питање да ли постоји валидан улаз.
Први природни проблем за који је показано да је НП-комплетан је био САТ-проблем. Ово је резултат Кук-Левинове теореме; њен доказ да је САТ проблем НП-комплетан садржи техничке детаље о Тјуринговим машинама и како се оне односе на дефиницију НП. Међутим, након што је за овај проблем доказано да је НП-комплетан, методом свођења је постало много лакше да се за разне друге проблеме докаже да су у овој класи (простим свођењем на САТ проблем). Тако данас постоји велика класа наизглед невезаних проблема који су сви узајамно сводљиви један на други, па у неку руку представљају исти проблем.
Формална дефиниција НП-комплетности
Постоје многи еквивалентни начини да се опише НП-комплетност, али је у контексту питања да ли је П = НП можда најзгодније да се НП-комплетни проблеми дефинишу у односу на НП проблеме.
Нека је L језик над коначном азбуком .
L је НП-комплетан ако и само ако су задовољена следећа два услова:
; и
свако је у полиномијалном времену сводљиво на L (што се записује као ), где је ако и само ако су следећа два услова задовољена:
Постоји таква да ; и
постоји полиномијална Тјурингова машина која се зауставља са на траци за сваки улаз .
Иако није познато да ли је П = НП, познати су проблеми изван П. Као што је класа П дефинисана у терминима полиномског времена рада, класа EXPTIME је скуп свих проблема одлучивања који имају експоненцијално време рада. Другим речима, било који проблем у EXPTIME се може решити детерминистичком Тјуринговом машином у O(2p(n)) времену, где је p(n) полиномска функција од n. Проблем одлуке је EXPTIME-потпун ако се налази у EXPTIME, а сваки проблем у EXPTIME има полиномску вишеструку редукцију. Познато је да су бројни проблеми EXPTIME-комплетни. Пошто се може показати да је П ≠ EXPTIME, ови проблеми су изван П, и стога захтевају више од полиномског времена. У ствари, према теореми о хијерархији времена, они се не могу решити за знатно мање од експоненцијалног времена. Примери укључују проналажење савршене стратегије за шаховске позиције на N × N табли[12] и сличне проблеме за друге друштвене игре.[13]
Проблем одлучивања о истинитости исказа у Пресбургеровој аритметици захтева још више времена. Фишер и Рабин су 1974. године[14] доказали да сваки алгоритам који одлучује о истинитости Пресбургерових изјава дужине n има време извођења од најмање за неку константу c. Дакле, познато је да проблему треба више од експоненцијалног времена рада. Још тежи су неодлучни проблеми, као што је проблем заустављања. Они се не могу у потпуности решити било којим алгоритмом, у смислу да за било који одређени алгоритам постоји бар један улаз за који тај алгоритам неће дати тачан одговор; или ће произвести погрешан одговор, завршити без давања коначног одговора, или ће на неки други начин трајати заувек без икаквог одговора.
Такође је могуће разматрати и друга питања осим проблема одлучивања. Једна таква класа, која се састоји од проблема са бројањем, зове се #П: док НП проблем пита „Има ли решења?”, одговарајући проблем #П пита „Колико решења има?”. Јасно је да #П проблем мора бити бар исто толико тежак као и одговарајући НП проблем, пошто број решења одмах говори да ли постоји бар једно решење, ако је број већи од нуле. Изненађујуће, неки #П проблеми за које се верује да су тешки одговарају лаким (на пример, у линеарном времену) П проблемима.[15] За ове проблеме је врло лако рећи да ли постоје решења, али се сматра да је веома тешко рећи колико их је. Многи од ових проблема су #П-потпуни, и стога међу најтежим проблемима у #П, пошто би полиномско временско решење за било који од њих омогућило полиномно временско решење за све друге #П проблеме.
Проблеми у НП за које се не зна да су у П или НП-потпуни
Проблем изоморфизма графа је рачунарски проблем одређивања да ли су два коначна графаизоморфна. Важан нерешен проблем у теорији сложености је да ли је проблем изоморфизма графа у П, НП-комплетан или НП-средњи. Одговор није познат, али се верује да проблем барем није НП-потпун.[17] Ако је изоморфизам графа НП-потпун, хијерархија полинома времена пада на свој други ниво.[18] Пошто је широко распрострањено веровање да се полиномска хијерархија не урушава ни на један коначни ниво, верује се да изоморфизам графа није НП-потпун. Најбољи алгоритам за овај проблем, због Ласла Бабаја, ради у квази-полиномском времену.[19]
Проблем факторизације целог броја је рачунски проблем одређивања основне факторизације датог целог броја. Изражен као проблем одлуке, то је проблем одлучивања да ли улаз има фактор мањи од k. Није познат ефикасан алгоритам за факторизацију целог броја и ова чињеница чини основу неколико савремених криптографских система, као што је RSA алгоритам. Проблем факторизације целог броја је у НП и у ко-НП (те чак и у УП и ко-УП[20]). Ако је проблем НП-потпун, хијерархија полинома времена ће се срушити на свој први ниво (тј. НП = ко-НП). Најефикаснији познати алгоритам за целобројну факторизацију је сито општег поља бројева, за које је потребно очекивано време
Сва горња дискусија претпоставља да П значи „лако“, а „не у П“ значи „тешко“, претпоставка позната као Кобамова теза. То је уобичајена претпоставка у теорији сложености; али постоје упозорења.
Прво, то у пракси може бити лажно. Теоријски полиномски алгоритам може имати изузетно велике константне факторе или експоненте, што га чини непрактичним. На пример, проблем одлучивања да ли граф G садржи H као минор, где је H фиксно, може се решити у времену рада од O(n2),[22] где је n број врхова у G. Међутим, велика О нотација крије константу која суперекспоненцијално зависи од H. Константа је већа од (користећи Кнутову нотацију стрелице нагоре), и где је h број врхова у H.[23]
С друге стране, чак и ако се покаже да је проблем НП-комплетан, па чак и ако је П = НП, и даље могу постојати ефикасни приступи проблему у пракси. Постоје алгоритми за многе НП-потпуне проблеме, као што су проблем ранца, проблем трговачког путника и проблем Булове задовољивости, који могу оптимално да реше многе стварне случајеве у разумном времену. Емпиријска сложеност просечног случаја (време у односу на величину проблема) таквих алгоритама може бити изненађујуће ниска. Пример је симплекс алгоритам у линеарном програмирању, који изненађујуће добро функционише у пракси; упркос томе што има експоненцијалну временску сложеност у најгорем случају, он ради упоредо са најпознатијим алгоритмима полиномског времена.[24]
Кук поново наводи проблем у П против НП као „Да ли је П = НП?“[25] Према анкетама,[7][26] већина компјутерских научника верује да је П ≠ НП. Кључни разлог за ово уверење је што после деценија проучавања ових проблема нико није успео да пронађе алгоритам полиномског времена за било који од више од 3000 важних познатих НП-потпуних проблема (погледајте Списак НП-потпуних проблема). Ови алгоритми су тражени дуго пре него што је концепт НП-потпуности уопште дефинисан (Карпов 21 НП-потпун проблем, међу првима пронађеним, сви су били добро познати постојећи проблеми у време када се показало да су НП-потпуни). Штавише, резултат П = НП би имплицирао многе друге запањујуће резултате за које се тренутно верује да су погрешни, као што су НП = ко-НП и П = ПХ.
Такође се интуитивно тврди да постојање проблема које је тешко решити, али за које је решења лако проверити, одговара искуству из стварног света.[27]
Ако би П = НП, онда би свет био потпуно другачије место него што обично претпостављамо да јесте. Не би било посебне вредности у „креативним скоковима“, нема суштинског јаза између решавања проблема и препознавања решења када се нађе.
С друге стране, неки истраживачи верују да постоји претерано самопоуздање у веровању у П ≠ НП и да би истраживачи такође требало да истраже доказе о П = НП. На пример, 2002. су дате ове изјаве:[7]
Главни аргумент у корист П ≠ НП је потпуни недостатак фундаменталног напретка у области исцрпног претраживања. Ово је, по мом мишљењу, веома слаб аргумент. Простор алгоритама је веома велик и тек смо на почетку његовог истраживања. [...] Резолуција Фермаове последње теореме такође показује да се врло једноставна питања могу решити само веома дубоким теоријама.
Везаност за спекулације није добар водич за планирање истраживања. Увек треба покушати у оба смера сваког проблема. Предрасуде су довеле до тога да познати математичари нису успели да реше чувене проблеме чије је решење било супротно њиховим очекивањима, иако су развили све потребне методе.
Када се „линеарно време на Тјуринг машини са више трака” замени "полиномским временом" у дефиницијама П и НП, добијају се класе DLIN и NLIN. Познато је[28] да је DLIN≠NLIN.
Референце
^R. E. Ladner "On the structure of polynomial time reducibility," J.ACM, 22, pp. 151–171, 1975. Corollary 1.1. ACM site.
^Sipser, Michael: Introduction to the Theory of Computation, Second Edition, International Edition, page 270. Thomson Course Technology, 2006. Definition 7.19 and Theorem 7.20.
^Arvind, Vikraman; Kurur, Piyush P. (2006). „Graph isomorphism is in SPP”. Information and Computation. 204 (5): 835—852. doi:10.1016/j.ic.2006.02.002.
^Babai, László (2018). „Group, graphs, algorithms: the graph isomorphism problem”. Proceedings of the International Congress of Mathematicians—Rio de Janeiro 2018. Vol. IV. Invited lectures. World Sci. Publ., Hackensack, NJ. стр. 3319—3336. MR3966534.
^Pisinger, D. 2003. "Where are the hard knapsack problems?" Technical Report 2003/08, Department of Computer Science, University of Copenhagen, Copenhagen, Denmark
„P vs NP Problem”. www.claymath.org (Cook, Levin). Архивирано из оригинала 18. 06. 2021. г. Приступљено 20. 6. 2021. „"Suppose that you are organizing housing accommodations for a group of four hundred university students. Space is limited and only one hundred of the students will receive places in the dormitory. To complicate matters, the Dean has provided you with a list of pairs of incompatible students, and requested that no pair from this list appear in your final choice. This is an example of what computer scientists call an NP-problem..."”CS1 одржавање: Формат датума (веза)