Kezdőoldal » Számítástechnika » Programozás » Hogy lehet kiszámolni egy kód...

Hogy lehet kiszámolni egy kód idő, és tér komplexitását?

Figyelt kérdés
Egy közepes, vagy hosszabb algoritmusnál, miből lehet tudni? Mik azok a dolgok, amikből következtetni, vagy számolni lehet, a komplexitására?
2023. ápr. 19. 17:16
 1/4 anonim ***** válasza:
73%

Nem írom le ide, mert ez egy komplett szakág, algoritmuselmélet a neve.

Van sokféle képlet, meg matek mögötte...

Ami neked lényeg, egy statikus kód analízis tool kéne, van olyan, amelyik meg tudja mondani.

2023. ápr. 19. 18:45
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
9%

A legegyszerűbben, a gyenguszok, matek undoritiszben szenvedők számára úgy, hogy:


- veszel egy doksit, ami tartalmazza a target processzor utasításainak listáját és a műveletek elvégzéséhez szükséges ciklusidőket. Ebből készítesz egy .csv fájlt.

- a forráskódból a fordítóval .asm kimenetet generáltatsz.

- írsz egy python/basic/c/pascal/java/whatever_you_want parsert, ami az .asm fájlból, a .csv segítségével kiszámolja és szummázza a ciklusidőket.


Ez lesz a time, azaz, az időigény.


- Ugyanezt a műveletet elvégezteted a felhasznált változók tipusainak tárigényével és az előfordulási gyakoriságukkal.


Na, ez utóbbi lesz a space, azaz, a tárigény.


Ha viszont következtetni is akarsz, na, azt már nem úszod meg matek nélkül.

2023. ápr. 19. 20:06
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
76%

O(1): állandó időkomplexitás, az algoritmus futási ideje nem változik a bemenet méretével.

O(log n): logaritmikus időkomplexitás, az algoritmus futási ideje logaritmikusan nő a bemenet méretével.

O(n): lineáris időkomplexitás, az algoritmus futási ideje lineárisan nő a bemenet méretével.

O(n^2): négyzetes időkomplexitás, az algoritmus futási ideje négyszereződik a bemenet méretének megduplázódásával.

O(2^n): exponenciális időkomplexitás, az algoritmus futási ideje exponenciálisan nő a bemenet méretével.

2023. ápr. 20. 01:34
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Tuladonképpen csak végig kell gondolni, hogy mit is csinál az az algoritmus.

De mivel nem sok esély van rá, hogy valami eredeti algoritmust fogsz kitalálni, ezért elég az alapalgoritmusok komplexitását figyelmbe venni és ha ezeket kombinálod, akkor megkapod a saját algoritmusod komplexitását.

Az alapalgoritmusok komplexitását meg megtalálod itt:

[link]

Ha mégis valami bonyolultabb esettel találkoznál, akkor bele kell magad ásnod a témába:

[link]

2023. ápr. 20. 11:08
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!