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 n → f(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.
Reference
[уреди | уреди извор]- ^ Arora, Sanjeev; Barak, Boaz (2009), Computational Complexity: A Modern Approach, Cambridge, ISBN 978-0-521-42426-4, Zbl 1193.68112
- ^ Calude, Cristian (1988), Theories of Computational Complexity, Elsevier, стр. 487, ISBN 9780444703569
- ^ 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.
- ^ Babai, László; Campagnolo, Manuel (2009). „A Survey on Continuous Time Computations”. arXiv:0907.3117 [cs.CC].
- ^ 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.
Literatura
[уреди | уреди извор]- Du, Ding-Zhu; Ko, Ker-I (2000), Theory of Computational Complexity, John Wiley & Sons, ISBN 978-0-471-34506-0, ISSN 0167-5060
- Garey, Michael R.; Johnson, David S. (1979), Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, ISBN 0-7167-1045-5
- Goldreich, Oded (2008), Computational Complexity: A Conceptual Perspective, Cambridge University Press
- van Leeuwen, Jan, ур. (1990), Handbook of theoretical computer science (vol. A): algorithms and complexity, MIT Press, ISBN 978-0-444-88071-0
- Papadimitriou, Christos (1994), Computational Complexity (1st изд.), Addison Wesley, ISBN 0-201-53082-1
- Sipser, Michael (2006), Introduction to the Theory of Computation (2nd изд.), USA: Thomson Course Technology, ISBN 0-534-95097-3