Nagy ordó jelölés

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez

Sablon:Hunfn

  1. Sablon:Label

A nagy O-jelölés (Big-O notation) egy matematikai jelölés, amely az algoritmusok aszimptotikus idő- vagy tárhely-igényét írja le, különös tekintettel a legrosszabb esetekre. A nagy O-jelölés nem a pontos időtartamot vagy tárhelyet adja meg, hanem az algoritmus skálázhatóságát mutatja meg a bemeneti adatok méretének növekedésével.

Definíció

Egy algoritmus f(n) futási ideje vagy tárhelyhasználata nagy O-jelöléssel O(g(n)), ha létezik egy c>0 és egy n0 pozitív egész szám, amelyre: f(n)cg(n)hann0 Ez azt jelenti, hogy g(n) felső korlátot ad f(n)-re az n bemeneti méret növekedésével.

Fontos tulajdonságok

1. A domináns tényező számít: Csak a leggyorsabban növekvő tagot vesszük figyelembe, mert az dominálja az algoritmus viselkedését nagy bemeneti méretek esetén. Példa: f(n)=3n2+5n+10 esetén O(n2), mert az n2 dominálja az n-t és a konstansokat.

2. Konstans szorzók elhagyhatók: Az algoritmus skálázhatósága nem változik a konstans tényezőkkel. Példa: Ha f(n)=2n, akkor O(2n)=O(n).

3. Különböző bemeneti méretek: A bemeneti méret, n, lehet például egy lista hossza, egy gráf csúcsainak száma, vagy más paraméter, amely az algoritmus futási idejét meghatározza.

Nagy O komplexitási kategóriák

1. O(1) – Konstans idő Az algoritmus futási ideje független a bemeneti mérettől. - Példa: Egy lista első elemének elérése.

2. O(logn) – Logaritmikus idő Az algoritmus futási ideje logaritmikusan nő a bemeneti mérettel. - Példa: Bináris keresés.

3. O(n) – Lineáris idő Az algoritmus futási ideje arányos a bemeneti mérettel. - Példa: Egy lista összes elemének bejárása.

4. O(nlogn) – Lineáris-logaritmikus idő Hatékonyabb algoritmusok időkomplexitása, például rendezési algoritmusok. - Példa: MergeSort, QuickSort (átlagos eset).

5. O(n2) – Kvadratikus idő Az algoritmus futási ideje a bemeneti méret négyzetével nő. - Példa: Két lista összes párosításának vizsgálata.

6. O(nk) – Polinomiális idő Az algoritmus futási ideje a bemeneti méret k-adik hatványával nő. - Példa: Mátrixszorzás (O(n3)).

7. O(2n) – Exponenciális idő Az algoritmus futási ideje exponenciálisan nő a bemeneti mérettel. - Példa: Backtracking algoritmusok (pl. a teljes kombinációk generálása).

8. O(n!) – Faktoriális idő A futási idő a bemeneti méret faktoriálisával nő. - Példa: Az összes permutáció generálása.

Gyakorlati példák

  1. Példa 1: Lineáris keresés Egy lista minden elemét végignézzük. Futási idő: O(n).
  2. Példa 2: Bináris keresés Egy rendezett listán keresünk egy elemet, és minden lépésben megfelezzük a keresési tartományt. Futási idő: O(logn).
  3. Példa 3: Rendezési algoritmusok - Bubble Sort: O(n2). - MergeSort: O(nlogn). - QuickSort (legrosszabb eset): O(n2), de átlagosan O(nlogn).

Összehasonlítás és rangsor Az alábbiakban bemutatjuk a komplexitások növekedési sorrendjét n függvényében:

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(2n)<O(n!)

Nagy O-jelölés az algoritmus tervezésben

1. Optimalizáció célja: Az algoritmus tervezésekor a legkisebb idő- és tárhelykomplexitást keressük. 2. Aszimptotikus elemzés: Segít előre jelezni az algoritmus viselkedését nagy bemeneti méreteknél. 3. Pontosítás nélkül: A nagy O csak az aszimptotikus felső korlátot adja meg, nem az algoritmus konkrét futási idejét.

A nagy O-jelölés megértése és alkalmazása alapvető fontosságú az algoritmusok hatékonyságának elemzéséhez és összehasonlításához. Sablon:-ford- Sablon:Trans-top

Sablon:Trans-bottom Sablon:Hunl