Výpočtová zložitosť

Výpočtová zložitosť alebo výpočtová náročnosť je pojem z teórie algoritmov, vyjadruje nakoľko je výpočet podľa zvoleného algoritmu zložitý. Výpočtovú zložitosť študuje teória zložitosti.

Výpočtová zložitosť má dve základné miery:

Optimalizácia algoritmu sa týka minimalizácie jednej alebo obidvoch mier zložitosti.

Výpočtová zložitosť algoritmu priamo nesúvisí so zložitosťou samotného algoritmu z ľudského pohľadu. Algoritmus môže byť veľmi jednoduchý na pochopenie i implementáciu, napriek tomu môže byť jeho výpočtová zložitosť veľká a naopak.

Druhy výpočtovej zložitosti v závislosti od počtu vstupných prvkov n, (a,b,c sú konštanty, t je čas):

  1. lineárna zložitosť:
  2. logaritmicko lineárna:
  3. polynomiálna: t je funkciou nejakého polynómu n
  4. algoritmy so zložitosťou väčšou než je polynomiálna

Za rýchle algoritmy sa pokladajú prvé tri druhy.

Ilustráciou zložitosti je nasledujúca tabuľka, predpokladajme, že vykonanie jednej operácie trvá jednu mikrosekundu:

Funkcia počtu operácií204060801002005001000
n20 µs40 µs60 µs80 µs100 µs200 µs500 µs1000 µs
n.log n86 µs0,2 ms0,35 ms0,5 ms0,7 ms1,5 ms4,5 ms10ms
n20,4 ms1,6 ms3,6 ms6,4 ms10 ms40 ms0,25s1 s
n38 ms64 ms0,22 ms0,5 ms1 s8 s125 s17 min
n40,16 s2,56s13 s41 s100 s27 min17 h11,6 dní
2n1 s11,7 dní36 600 r3,6.109 r
n! 77 000 r

Z uvedenej tabuľky vidno, že aj keby sme rýchlosť operácii zväčšili 1000x, posledný algoritmus by bol tak či tak neriešiteľný v rozumnom čase a predposledný pre väčšie n tiež.

Tú istú úlohu možno väčšinou riešiť rôznymi algoritmami s rozličnou výpočtovou zložitosťou. Napríklad triedenie sa dá jednoducho implementovať s výpočtovou zložitosťou n2, ale existujú aj algoritmy triedenia so zložitosťou n.log n.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.