Algoritmien teoriassa luokka NP ( englanniksi non-deterministic polynomial ) on joukko ratkaistavuusongelmia , joiden ratkaisu voidaan tarkistaa Turingin koneella ajassa, joka ei ylitä jonkin syötteen koolla olevan polynomin arvoa. tiedot, joidenkin lisätietojen kera (ns. päätöstodistus ) .
Vastaavasti NP-luokka sisältää ongelmia, jotka voidaan ratkaista polynomiajassa epädeterministisellä Turingin koneella .
Tehtävät, joissa on polynomiaikaisia ratkaisualgoritmeja, voidaan ratkaista tietokoneella paljon nopeammin kuin suoralla laskennalla, jonka aika on eksponentiaalinen . Tämä määrittää luokkien P ja NP tasa-arvoongelman käytännön merkityksen .
Monimutkaisuusluokka NP on määritelty joukolle kieliä eli äärellisen aakkoston sanajoukkoja . Kielen L sanotaan kuuluvan luokkaan NP, jos luokasta P on olemassa kaksipaikkainen predikaatti ( eli polynomiajassa laskettavissa) ja sellainen vakio , että mille tahansa sanalle x ehto " x kuuluu L: lle " on vastaa ehtoa "on y , jonka pituus on pienempi kuin sellainen, että se on tosi " (jossa | x | on sanan x pituus ). Sanaa y kutsutaan sertifikaatiksi , että x kuuluu kieleen L. Siten, jos meillä on sana, joka kuuluu kieleen, ja toinen todistajasana, jonka pituus on rajoitettu (jota voi olla vaikea löytää), voimme nopeasti varmistaa, että x todella kuuluu L:hen .
Vastaava määritelmä voidaan saada käyttämällä epädeterministisen Turingin koneen käsitettä (eli Turingin konetta , jonka ohjelmassa voi olla eri suoria samalla vasemmalla sivulla). Jos kone on kohdannut "haarukan" eli epäselvyyden ohjelmassa, niin erilaiset laskentavaihtoehdot ovat mahdollisia edelleen. Predikaattia , joka edustaa tiettyä epädeterminististä Turingin konetta, pidetään yhtä suurena kuin yksi, jos on vähintään yksi laskentavaihtoehto, joka palauttaa arvon 1, ja nolla, jos kaikki vaihtoehdot palauttavat arvon 0. Jos laskutoimituksen pituus, joka antaa arvon 1, ei ylitä jotakin polynomia pituus x , niin predikaattia kutsutaan kuuluvaksi luokkaan NP. Jos kielellä on predikaatti luokasta NP, joka tunnistaa sen, kielen sanotaan kuuluvan luokkaan NP. Tämä määritelmä vastaa yllä annettua: todistajana voit ottaa laskelman haarukoista haluttujen oksien numerot. Koska kieleen kuuluvalla x :llä koko laskentapolun pituus ei ylitä x :n pituista polynomia , niin todistajan pituutta rajoittaa myös x :n pituinen polynomi .
Mikä tahansa ongelma sanan x kuulumisesta kieleen L , joka on luokassa NP, voidaan ratkaista eksponentiaalisessa ajassa luettelemalla kaikki mahdolliset alle :n pituusvarmenteet . Voit ratkaista sen kvanttitietokoneella GSA :n avulla . Tässä tapauksessa kaikkien mahdollisten lajiteltujen varmenteiden kokonaismäärä voidaan määrittää geometrisen progression jäsenten summan kaavalla, jonka nimittäjä on yhtä suuri kuin aakkosten merkkien määrä ja ensimmäinen jäsen on yhtä suuri kuin 1 :
Siksi Q-bittejä vaaditaan halutun varmenteen etsimiseen GSA-menetelmällä . Todistus löydetään enintään .
Kielten luokkaa, joiden komplementit kuuluvat NP:hen, kutsutaan co-NP- luokaksi , vaikka tämän luokan ei ole osoitettu eroavan NP-luokasta. Luokkien NP ja co-NP leikkauspiste sisältää luokan P . Erityisesti luokka NP sisältää luokan P. Tämän sisällyttämisen tiukkuudesta ei kuitenkaan tiedetä mitään.
Luokkien P ja NP tasa-arvoongelma on yksi keskeisistä avoimista ongelmista algoritmien teoriassa. Jos ne ovat yhtä suuret, mikä tahansa NP-luokan tehtävä voidaan ratkaista nopeasti (polynomiajassa). Tiedeyhteisö on kuitenkin taipuvainen kielteiseen vastaukseen tähän kysymykseen. [yksi]
NP-luokka sisältyy muihin, laajempiin luokkiin, kuten PH-luokkaan . Avoimia kysymyksiä on myös sen sisällyttämisen tiukkuuteen muihin luokkiin.
Voidaan mainita monia ongelmia, joista tällä hetkellä ei tiedetä kuuluuko ne P:hen, mutta tiedetään niiden kuuluvan NP:hen. Heidän keskuudessaan:
Kaikista NP-luokan tehtävistä voidaan erottaa "vaikeimmat" - NP-täydelliset ongelmat . Jos jokin niistä voidaan ratkaista polynomiajassa, niin kaikki luokan NP tehtävät voidaan ratkaista myös polynomiajassa.
Algoritmien monimutkaisuusluokat | |
---|---|
Kevyenä pidetty | |
Taitaa olla vaikeaa | |
Vaikeaksi pidetty |
|