Teorija kompleksnosti

Grana teorije izračunljivosti u računarstvu, računarska teorija kompleksnosti opisuje skalabilnost algoritama, i inherentnu teškoću u iznalaženju skalabilnih algoritama za specifične računarske probleme. Drugim rečima, teorija kompleksnosti odgovara na pitanje Kada se veličina ulaza za algoritam povećava, kako se menjaju vreme izvršavanja i memorijski zahtevi, i koje su implikacije i tih promena? Ova teorija određuje praktične granice onoga šta računari mogu da postignu.

Rezultati teorije kompleksnosti su od značaja i za nauku i za privredu. Brzina i memorijski kapacitet računara se stalno povećavaju, ali se povećava i količina podataka koja se analizira. Ako algoritmi nisu skalabilni, tada čak i jako velika unapređenja u računarskoj tehnologiji ponekad mogu da dovedu samo do neznatnih povećanja količine podataka koja može da se analizira.

Algoritmi i problemi su kategorizovani u klase kompleksnosti. Najvažnije otvoreno pitanje u teoriji kompleksnosti je da li je klasa P ista kao klasa NP, ili joj je samo podskup, kao što je opšte uverenje. Ovo nije samo suvo teorijsko razmatranje, jer ubrzo nakon što je ovo pitanje prvi put postavljeno, otkriveno je da su mnogi važni industrijski problemi iz podklase klase NP, koju nazivamo klasa NP-kompletnih problema. NP-kompletni problemi imaju svojstvo da se njihova rešenja mogu brzo proveriti, ali trenutno postojeći metodi za nalaženje tačnih rešenja nisu skalabilni. Ako je klasa NP jednaka klasi P, onda postoji skalabilno rešenje za sve probleme iz klase NP. Ovo međutim još uvek nije utvrđeno, i jedno je od najvažnijih otvorenih pitanja u računarstvu danas.[1]

Pregled uredi

Teorija se složenosti bavi relativnom računskom teškoćom izračunljivih funkcija. Ovo se razlikuje od teorije izračunljivosti, koja se bavi generalnim pitanjem može li se problem rešiti, bez obzira na zahtevane resurse.

Jedan „problem” je jedinstven skup povezanih pitanja, pri čemu je svako pitanje string konačne dužine. Na primer, problem FAKTORIZIRAJ jeste: za dati celi broj zapisan u binarnom sistemu, vrati sve proste faktore tog broja. Pojedinačno se pitanje zove instancom. Na primer, „daj faktore broja 15” je instanca problema FAKTORIZIRAJ.

Vremenska složenost problema je broj koraka potreban da bi se instanca problema rešila kao funkcija veličine ulaza (obično merenog u bitovima) koristeći najefektniji algoritam. Da bi se ovo intuitivno razumelo, može se razmotriti primer instance dužine n bitova koja može biti rešena u n² koraka. U ovom primeru kaže se da je problem vremenske složenosti n². Naravno, tačan će broj koraka zavisi od korištenog pristupa. Kako bi se izbegao taj problem, koristi se veliko O notacija. Ako problem ima vremensku složenost O(n²) na jednom tipičnom računaru, tada će takođe imati složenost O(n²) na većini drugih računara, tako da ova notacija omogućava poopštavanje detalja pojedinačnog računara.

Primer: Košenje trave ima linearnu vremensku složenost s obzirom da treba dvostruko više vremena kako bi se kosilo dvostruko veće područje. Međutim, binarno pretraživanje rečnika ima svega logaritamsku vremensku složenost budući da dvostruko veći rečnik treba biti otvoren tek jedan put više (npr. tačno u sredini - tada se veličina problema smanji za pola).

Prostorna složenost problema je povezan koncept, koji meri količinu prostora, ili memorije koju algoritam zahteva. Neformalna bi analogija bila količina papira korištenog za skiciranje prilikom rešavanja problema olovkom i papirom. Prostorna se složenost takođe meri velikom O notacijom.

Različita mera složenosti problema, korisna u nekim slučajevima, jest složenost sklopa. Ovo je mera veličine bulovskog sklopa potrebnog za računanje rešenja problema, u terminima broja logičkih vrata zahtevanih za izgradnju sklopa. Takva je mera korisna, na primer, prilikom izgradnje sklopovskih mikročipova za izračunavanje funkcije, radije nego programske podrške.

Klase složenosti uredi

Klasa složenosti je skup svih računskih problema koji se mogu rešiti koristeći određenu količinu određenog računskog resursa.

Klasa složenosti P je skup svih problema odluke koji mogu biti rešeni determinističkom Tjuringovim mašinom u polinomnom vremenu. Ova klasa odgovara intuitivnoj ideji problema koji mogu biti delotvorno rešeni u najgorim slučajevima.[2]

Klasa složenosti НП je skup problema odluke koji mogu biti rešeni nedeterminističkom Tjuringovom mašinom u polinomnom vremenu. Ova klasa sadrži mnoge probleme koje bi ljudi želeli delotvorno da reše, uključujući problem bulovske ispunjivosti, problem hamiltonovskog puta i problem prekrivanja vrhova. Svi problemi u ovoj klasi imaju svojstvo da im se rešenja mogu delotvorno proveriti.[2]

Mnoge se klase složenosti mogu karakterizirati u terminima matematičke logike potrebnih da bi se izrazili - ovo se polje zove deskriptivna složenost.

Otvorena pitanja uredi

P = NP pitanje uredi

Pitanje istovetnosti skupova NP i P (tj. mogu li problemi koji mogu biti rešeni u nedeterminističkom polinomnom vremenu, rešeni u determinističkom polinomnom vremenu) je jedno od najvažnijih otvorenih pitanja u teoretskom računarstvu, s obzirom na široke implikacije koje bi rešenje tog pitanja imalo.[2] Jedna negativna posledica je ta da bi se mnogi oblici kriptografije mogli jednostavno „razbiti” i stoga postali beskorisni. Međutim, postojale bi i ogromne pozitivne posledice, budući da bi mnogi važni problemi imali efikasna rešenja. Takvi problemi uključuju razne tipove celobrojnog programiranja u operacijskim istraživanjima, mnoge probleme u logistici, predviđanju strukture belančevina u biologiji, te sposobnosti delotvornog pronalaženja formalnih dokaza teorema u čistoj matematici korištenjem računara.[3][4] Klejov matematički institut je 2000. obavio da će isplatiti nagradu od USD$ 1 000 000 prvoj osobi koja dokaže rešenje.[5]

Pitanja poput ovih motiviraju koncepte težine i potpunosti. Skup problema X je težak za skup problema Y ako svaki problem u Y može "lako" biti transformiran u neki problem u X koji proizvodi rešenje. Definicija „lakog” je različita u različitim kontekstima. Važan teški skup u teoriji složenosti jeste NP-težak - skup problema koji nisu nužno sami u NP, ali na koje bilo koji NP problem može biti sveden u polinomnom vremenu.

Skup X je potpun za Y ako je težak za Y, ali je takođe i podskup od Y. Važan potpun skup u teoriji složenosti je NP-potpun skup. Ovaj skup sadrži „najteže” probleme u NP, u smislu da su to oni koji najizglednije nisu u P. Zbog činjenice da problem P = NP ostaje nerešen, svođenje bi problema na poznati NP-potpun problem indiciralo da ne postoji poznato vremenski polinomno rešenje za njega. Slično, budući da svi NP problemi mogu biti svedeni na skup, pronalaženje NP-potpunog problema koji bi mogao biti rešen u polinomnom vremenu bi značilo P = NP.[2]

Nepotpuni problemi u NP uredi

 
Dijagram klasa složenosti uz pretpostavku da vredi PNP. Postojanje problema izvan klasa i P i NP-potpun u ovom slučaju je postavio Ladner.[6]

Drugo otvoreno pitanje vezano za problem P = NP jeste postoje li problemi koji su u NP, ali ne i u P, koji nisu NP-potpuni. Drugim rečima, problemi koji trebaju biti rešeni u nedeterminističkom polinomnom vremenu, ali ne mogu biti svedeni na polinomno vreme iz drugih nedeterminističkih vremenski polinomnih problema. Jedan takav problem, za koji se zna da je NP ali ne i da je NP-potpun, jest problem izomorfizma grafa - problem koji pokušava odlučiti jesu li dva grafa izomorfna (tj. dele li ista svojstva). Pokazano je da ako vredi PNP, da takvi problemi postoje.[7]

NP = ko-NP uredi

Gde je ko-NP skup koji sadrži komplementarne probleme (tj. problem sa invertiranim da/ne odgovorima) NP problema. Veruje se da te dve klase nisu jednake, iako to dosad nije dokazano. Pokazano je da ako ove dve klase nisu jednake, da tada sledi da nedan NP-potpun problem ne može biti u ko-NP, i nijedan ko-NP-potpun problem ne može biti u NP.[7]

Vidi još uredi

Reference uredi

  1. ^ „P vs NP Problem | Clay Mathematics Institute”. www.claymath.org (na jeziku: engleski). Arhivirano iz originala 06. 07. 2018. g. Pristupljeno 14. 03. 2021. 
  2. ^ a b v g Sipser, Michael (2006). „Time Complexity”. Introduction to the Theory of Computation (2nd izd.). USA: Thomson Course Technology. ISBN 0-534-95097-3. 
  3. ^ Berger, Bonnie A.; Leighton, Terrance (1998). „Protein folding in the hydrophobic-hydrophilic (HP) model is NP-complete.”. Journal of Computational Biology. 5 (1): 27—40. PMID 9541869. doi:10.1089/cmb.1998.5.27. 
  4. ^ Cook, Stephen (2000). „The P versus NP Problem” (PDF). Clay Mathematics Institute. Arhivirano iz originala (PDF) 12. 12. 2010. g. Pristupljeno 2006-10-18. 
  5. ^ Jaffe, Arthur M. „The Millennium Grand Challenge in Mathematics” (PDF). Notices of the AMS. 53 (6). Pristupljeno 2006-10-18. 
  6. ^ Ladner, Richard E. (1975). „On the structure of polynomial time reducibility” (PDF). Journal of the ACM (JACM). 22 (1): 151—171. S2CID 14352974. doi:10.1145/321864.321877. 
  7. ^ a b Du, Ding-Zhu; Ko, Ker-I (2000). Theory of Computational Complexity. John Wiley & Sons. ISBN 978-0-471-34506-0. 

Literatura uredi

Spoljašnje veze uredi