computational complexity (tsz. computational complexities)
Computational complexity – magyarul: számítási bonyolultság – a számítástudomány egyik központi ága, amely azzal foglalkozik, hogy milyen erőforrások (idő, memória stb.) szükségesek egy algoritmus vagy probléma megoldásához. A cél az algoritmusok hatékonyságának elemzése és a problémák nehézségi szintjének osztályozása.
A számítási bonyolultság azt vizsgálja:
Ezeket aszimptotikus jelölésekkel írjuk le:
Erőforrás | Jelentés |
---|---|
Időkomplexitás | Hány lépés kell a végrehajtáshoz |
Térkomplexitás | Mekkora memóriaterület szükséges |
Kommunikációs komplexitás | Két vagy több fél közötti adatcsere mértéke |
Költség | Összesen felhasznált processzoridő, párhuzamos modellekben |
Vegyük az alábbi algoritmusokat:
Algoritmus | Időkomplexitás |
---|---|
Lista bejárása | |
Binaris keresés rendezett tömbön | |
Két ciklus egymásban | |
Faktoriális rekurzió | |
Kombinációs brute-force keresés |
Jelölés | Jelentés |
---|---|
Felső korlát – legrosszabb eset | |
Alsó korlát – legjobb eset | |
Pontos komplexitás (alsó és felső is) |
Osztály | Jelentés |
---|---|
P | Polinomiális időben megoldható problémák (hatékonyan) |
NP | Megoldásuk polinomiális időben ellenőrizhető |
NP-nehéz | Nehezebb vagy legalább olyan nehéz, mint a legnehezebb NP-probléma |
NP-teljes (NP-complete) | NP osztályhoz tartozik és NP-nehéz |
EXPTIME | Exponenciális időben megoldható problémák |
PSPACE | Polinomiális hely (memória) alatt megoldható problémák |
Téma | Kérdés |
---|---|
Algoritmus elemzés | Milyen gyors/lassú az algoritmus? |
Problémaosztályozás | Milyen típusú a probléma (P, NP, EXPTIME…)? |
Redukciók | Egy probléma visszavezethető-e egy másikra? |
Alsó korlátok | Milyen gyors megoldás lehetséges legjobb esetben? |
A számítástudomány egyik legnagyobb nyitott kérdése:
Vajon minden probléma, amelynek a megoldása gyorsan ellenőrizhető (NP), gyorsan meg is oldható (P)?
Ez a probléma a Millennium Prize Problems egyike, 1 millió dolláros díjjal
Fogalom | Leírás |
---|---|
Számítási komplexitás | Az algoritmus erőforrásigényének vizsgálata |
Idő / tér komplexitás | Futási idő és memóriaigény |
Aszimptotikus jelölés | stb. |
P, NP, NP-teljes | Problémák osztályozása nehézség szerint |
P vs NP | A modern informatika egyik legnagyobb kérdése |