P vs NP problema

Wikipedia, Entziklopedia askea

P vs NP problema informatika teorikoan konpondu gabeko problema garrantzitsua da. Termino informaletan esanda, problema baten ebazpena azkar egiaztatzea posible bada ea horrelakoetan ebazpen azkar aurkitzea ere posiblea ote den galdetzen du.

Goian erabilitako azkar termino informalak denbora polinomikoan exekutatzen den zeregina ebazten duen algoritmo baten existentzia esan nahi du; hau da, zeregina burutzeko denbora funtzio polinomiko gisa aldatzen da algoritmoaren sarreraren tamainaren arabera (esaterako, datu-kopurua handitzerakoan, ebazpena lortzeko behar den denbora ez dela handitzen funtzio esponentzial gisa, motelago baizik). Galdera edo problema bat ebazteko posible baldin bada denbora polinomikoan erantzuna eman dezakeen algoritmo bat aurkitzea problema horren klase orokorra "P" edo "P klasea" dela esaten da. Galdera batzuetarako, ez dago erantzuna azkar aurkitzeko modu jakinik, baina, erantzuna zein den erakusten duen informazioa ematen bazaio, erantzuna azkar egiaztatzeko aukera dago. Erantzuna denbora polinomikoan egiazta daitekeen galderen klasea NP da, «denbora polinomiko ez determinista» ("Nondeterministic Polynomial time") esan nahi duena[oh 1]

P versus NP galderarako erantzun batek zehaztuko luke ea denbora polinomikoan egiazta daitezkeen problemak denbora polinomikoan ere ebatzi daitezkeen. P ≠ NP frogatuko balitz (uste zabala hori da), horrek esan nahiko luke NPn badirela problemak zeinetan ebazpena bilatzea ebazpena egiaztatzea baino zailagoa den; eta ezingo lirateke denbora polinomikoan ebatzi, baina erantzuna denbora polinomikoan egiaztatzea bai.

Problemari informatikako problema ireki garrantzitsuena deitu izan zaio[1]. Teoria konputazionalean problema garrantzitsu bat izateaz gain, proba batek inplikazio sakonak izango lituzke matematika, kriptografia, algoritmoen ikerketa, adimen artifiziala, jokoen teoria, multimedia prozesatzea, filosofia, ekonomia eta beste hainbat esparrutan.

Konplexutasun konputazionalean aztertzen diren baliabideak hauek dira:

  • Denbora: algoritmo batek problema bat ebazteko erabiltzen dituen exekuzio-urratsen kopurua. Normalean ez da kalkulatzen zenbaki zehatz bat, zenbaki horren estimazio bat edo hurbilpen bat baizik.
  • Espazioa: problema ebazteko erabilitako memoriaren tamainaren hurbilpen bat.

Problemak multzo edo konplexutasun klaseetan sailkatzen dira (L, NL, P, PCOlea, NP, NP-Complete, NP Hard...). Artikulu hau P eta NP klaseetan zentratuko da.

Clay Mathematics Institute-k hautatutako zazpi Millennium Prize Problemetako bat da, eta horietako bakoitzak 1.000.000 dolarreko saria du lehen irtenbide zuzenarentzat.

Adibidea[aldatu | aldatu iturburu kodea]

Demagun Sudokua: jokalariari partzialki betetako zenbaki-sare bat ematen zaion eta, arau batzuk jarraituz, sarea osatzen saiatzen den jokoa. Sudoku sare osatugabea izanik, edozein tamainatakoa, ba al dago konponbide legal bat gutxienez? Proposatutako edozein soluzio erraz egiaztatzen da, eta soluzio bat egiaztatzeko denbora poliki-poliki (polinomikoki) hazten da, sarea handitu ahala. Hala ere, irtenbideak aurkitzeko algoritmo ezagun guztiek, adibide zailetarako, sarea esponentzialki handitu ahala hazten doan denbora hartzen dute. Beraz, Sudokua NPn dago (azkar egiazta daiteke), baina ez dirudi Pn dagoenik (azkar konpon daiteke). Beste milaka Problema antzekoak dirudite egiaztatzeko azkarrak, baina konpontzeko motelak direlako. Ikertzaileek frogatu dute NPko problema askok propietate gehigarria dutela, horietako edozeinen soluzio azkarra erabil daitekeela NPko beste edozein problema konponbide azkar bat eraikitzeko: NP-Complete izeneko propietatea. Bilaketa-hamarkadetan, ez zaio irtenbide azkarrik eman problema horietako bati ere ez, beraz, zientzialari gehienek susmatzen dute problema horietako bat ere ezin dela azkar konpondu. Hori, ordea, ez da inoiz frogatu.

Historia[aldatu | aldatu iturburu kodea]

P versus NP problemaren enuntziatu zehatza 1971n sartu zuen Stephen Cook-ek «The complexity of theorem proving procedures» artikuluan (eta independenteki Leonid Levin-ek 1973an[2]).

P versus NP problema, formalki, 1971n definitu bazen ere, bazeuden aurretiazko susmoak problemei, frogatzeko zailtasunari eta balizko ondorioei buruz. 1955ean, John Nash matematikariak gutun bat idatzi zion AEBko NSAri, eta bertan espekulatzen zuen nahikoa konplexua den kode bat pizteak denbora esponentziala beharko zukeela gakoaren luzeran[3] Frogatuz gero (eta Nash nahiko eszeptikoa zen), gaur egun P ≠ NP deitzen dena suposatuko luke horrek, proposatutako gako bat denbora polinomikoan erraz egiazta baitaiteke. Oinarrizko problemaren beste aipamen bat Kurt Gödelek John von Neumann-i 1956ko idatzitako gutun batean gertatu zen. Gödelek galdetu zuen ea teoremaren froga (gaur egun ko-NP-Complete dela ezagutzen dena) denbora koadratiko edo linealean ebatzi zitekeen[4], eta ondorio bat adierazi zuen: hala balitz, froga matematikoen aurkikuntzak automatizatu zitezkeen.

Algoritmoen ordena[aldatu | aldatu iturburu kodea]

T(n)-ren bidez, sarrera n tamainakoa duen algoritmo baten exekuzio-denbora adierazi ohi da. Algoritmoak hartzen duen denbora hori f(n)-ren ordenakoa dela esango da baldin eta soilik baldin k konstanteak existitzen badu, non instantzia bakoitzeko problema k * f(n) segundotan (mikrosegundotan, minututan...) gehienez ebazten baita. k konstanteari konstante biderkatzailea deritzo.[5]

Segundotan dela esatea erabat arbitrarioa da konstantearen balioa aldatzea besterik ez baita beharko unitatea beste bat izateko. Bestalde, gaur egun makina estandarrik ez dagoenez, ezingo da bat eredutzat hartu (ik. RAM). Honen guztiaren ondorioz, eraginkortasunak unitaterik ez duela esan dezakegu.[5]

Algoritmoen konplexutasuna neurtzeko gehienetan erabiltzen diren ordenak hauek dira:[5]

Maiz agertzen diren ordenak Algortimoaren konplexutasuna
n (n -ren ordenakoa) algoritmoa lineala da
n2 koadratikoa
n3 kubikoa
nk polinomikoa
an esponentziala

non aurreko k eta a konstante egokiak diren.

Kontzeptu hauek algoritmo jakin baten ordena kalkulatzerakoan erabiltzen dira, beti ere, beste algoritmo batzuen ordenekin konparatu ahal izateko, non beste algoritmo haork ere problema bera ebazten duten. Honela eraginkorrena zein den muga dezakegu. Azkarrena, memoria kudeaketan hoberena; oro har, baliabideen kudeatzaile onena zein den mugatu dezakegu.[5]

Oharrak[aldatu | aldatu iturburu kodea]

  1. Turing makina ez deterministikoa aurreko egoerak zehazten ez duen egoera batera mugi daiteke. Horrelako makina batek NP problema bat denbora polinomikoan ebatzi lezake erantzun zuzeneko egoeran eroriz (zortez), eta gero konbentzionalki egiaztatuz. Horrelako makinak ez dira praktikoak problema errealistak ebazteko, baina eredu teoriko gisa erabil daitezke.

Erreferentziak[aldatu | aldatu iturburu kodea]

  1. Fortnow, Lance. (2009). «The status of the P versus NP problem» Communications of the ACM 52 (9): 78–86.  doi:10.1145/1562164.1562186..
  2. (Errusieraz) L. A. Levin. (1973). Пробл. передачи информ 93: 115–116..
  3. NSA. (2012). Letters from John Nash. .
  4. Hartmanis, Juris. «Gödel, von Neumann, and the P = NP problem» Bulletin of the European Association for Theoretical Computer Science 38: 101–107..
  5. a b c d Arruabarrena Santos, Rosa. (1997). Algoritmika. UEU ISBN 978-84-86967-82-6. (Noiz kontsultatua: 2023-12-20).

Bibliografia[aldatu | aldatu iturburu kodea]

Bibliografia osagarria[aldatu | aldatu iturburu kodea]

Kanpo estekak[aldatu | aldatu iturburu kodea]