Kezdőoldal » Számítástechnika » Programozás » Ha egy algoritmus idő komplexi...

Ha egy algoritmus idő komplexitása összetett, hogyan állítjuk meg hogy beletartozik a pl.: O(n^2) osztályba?

Figyelt kérdés

Ha van egy algoritmusunk, aminek az idő-komplexitása ezen kifejezések egyike pl.:

[link]

[link]

[link]

Hogyan állapítjuk meg, hogy egy adott (esetünkben például O(n^2)) komplexitási osztályba tartozik vagy nem? Mi az a kritérium/kifejezés(típus) (exponenciális, logaritmikus, polinomiális, .. ) ami ezt eldönti?



2020. jún. 14. 14:12
 1/4 anonim ***** válasza:
19%
Hogys te hogy állapítod meg, azt nem tudom (valszleg sehogy), de maga a formula, az algoritmus "definiálja", vagy determinálja a futtatásához szükséges időt (or space-t).
2020. jún. 14. 14:27
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
38%
2020. jún. 14. 14:33
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
100%

Kifejted az egzakt képletet, megkeresed az aszimptotikusan domináns tagját, és megnézed hogy n^2-nél kisebb-e (azaz c*n^2 "túlnövi-e" n->végtelen esetén valamely c-re). Ha igen, akkor O(n^2) osztályba tartozik. Persze emellett tartozhat annál szűkebb osztályokba, pl O(n*log(n))-be vagy O(n)-be is.


Érdemes ismerni pár elemi függvény aszimptotikus viszonyát, pl:

konstans < log(log(n)) < log(n) < n^0.001 < n^0.5 < n < n^2 < n^3 < n^999 < e^n < e^e^n stb.


Első példád: (7 + n^3)*log(n^5) = (7 + n^3)*5*log(n), ami aszimptotikusan nagyobb, mint n^3, ami még mindig nagyobb mint n^2, tehát nem O(n^2).


Második: (n+log(n)) * gyök(n + log(n)), ami log(n)<n-t felhasználva aszimptotikusan kisebb, mint 2n*gyök(2n) = 2*gyök(2)*n^1.5, ami még mindig kisebb, mint n^2. Így O(n^2)-be tartozik.


Harmadik: n*(200 + log(n)^2) aszimptotikusan kisebb, mint n*(n^0.001 + (n^0.001)^2) ami kisebb mint n^1.01 ami kisebb mint n^2, tehát O(n^2)-be tartozik.


Ismerem annyira a gyakorit, hogy tudjam, hogy le leszek pontozva, de ne tévesszen meg: helyes a válaszom, csak elfelejtettem már a szakszavakat és szép definíciókat. Remélem a lényeg átment.

2020. jún. 15. 15:49
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Nem egy darab kritérium van, amit csak ellenőrzünk, hanem minden ilyen kifejezést a rá jellemző azonosságokkal kell átalakítani. Az alapvető összefüggéseket pedig - például, hogy polinom/exponenciális alakú kifejezés nullához tart - előre tanulnod kellett (volna) analízisből.

Végső soron a függvényosztályok definícióihoz nyúlunk vissza, ha a kérdéses függvény kivételes alakú és másként nem megy.

2020. jún. 15. 22:15
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!