Пређи на садржај

Računarska složenost

С Википедије, слободне енциклопедије

U računarskoj nauci, računarska složenost ili jednostavno složenost algoritma je količina resursa potrebnih za njegovo pokretanje. Poseban fokus je dat na vreme računanja (uglavnom mereno brojem potrebnih elementarnih operacija) i zahtevima za skladištenje memorije. Složenost problema je složenost najboljih algoritama koji omogućavaju rešavanje problema.[1][2]

Proučavanje složenosti eksplicitno datih algoritama naziva se analiza algoritama, dok se proučavanje složenosti problema naziva teorija računske složenosti. Obe oblasti su veoma povezane, pošto je složenost algoritma uvek gornja granica složenosti problema koji se rešava ovim algoritmom. Štaviše, za projektovanje efikasnih algoritama, često je od suštinskog značaja da se uporedi složenost specifičnog algoritma sa složenošću problema koji treba rešiti. Takođe, u većini slučajeva, jedino što se zna o složenosti problema je da je niža od složenosti najefikasnijih poznatih algoritama. Zbog toga postoji veliko preklapanje između analize algoritama i teorije složenosti.[3][4][5]

Kako količina resursa potrebnih za pokretanje algoritma generalno varira u zavisnosti od veličine ulaza, složenost se obično izražava kao funkcija nf(n), gde je n veličina ulaza, a f(n) ili složenost u najgorem slučaju (maksimalna količina resursa koja je potrebna za sve ulaze veličine n) ili složenost prosečnog slučaja (prosek količine resursa za sve ulaze veličine n). Vremenska složenost se generalno izražava kao broj potrebnih elementarnih operacija na ulazu veličine n, pri čemu se pretpostavlja da elementarne operacije traju konstantno vreme na datom računaru i da se menjaju samo za konstantan faktor kada se pokreću na drugom računaru. Prostorna složenost se generalno izražava kao količina memorije koju algoritam zahteva na ulazu veličine n.

  1. ^ Arora, Sanjeev; Barak, Boaz (2009), Computational Complexity: A Modern Approach, Cambridge, ISBN 978-0-521-42426-4, Zbl 1193.68112 
  2. ^ Calude, Cristian (1988), Theories of Computational Complexity, Elsevier, стр. 487, ISBN 9780444703569 
  3. ^ Smale, Steve (1997). „Complexity Theory and Numerical Analysis”. Acta Numerica. Cambridge Univ Press. 6: 523—551. Bibcode:1997AcNum...6..523S. CiteSeerX 10.1.1.33.4678Слободан приступ. S2CID 5949193. doi:10.1017/s0962492900002774. 
  4. ^ Babai, László; Campagnolo, Manuel (2009). „A Survey on Continuous Time Computations”. arXiv:0907.3117Слободан приступ [cs.CC]. 
  5. ^ Tomlin, Claire J.; Mitchell, Ian; Bayen, Alexandre M.; Oishi, Meeko (јул 2003). „Computational Techniques for the Verification of Hybrid Systems”. Proceedings of the IEEE. 91 (7): 986—1001. CiteSeerX 10.1.1.70.4296Слободан приступ. doi:10.1109/jproc.2003.814621.