Složitost algoritmu

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Asymptotická složitost: Oprava vzhledu)
m (Přidáno upozornění na omezení kapacity paměti.)
Řádka 6: Řádka 6:
 
*zajímá nás, který ze dvou algoritmů vrátí výsledek dříve.
 
*zajímá nás, který ze dvou algoritmů vrátí výsledek dříve.
 
<div class="Poznamka">Rychlejší algoritmus &rarr; lepší algoritmus!</div>
 
<div class="Poznamka">Rychlejší algoritmus &rarr; lepší algoritmus!</div>
 +
<div class="Varovani">Má to ale jeden háček &mdash; musí nám stačit systémové prostředky pro daný algoritmus, zejména operační paměť. ;)</div>
  
 
;Problém &mdash; čas je ovlivněn:
 
;Problém &mdash; čas je ovlivněn:
Řádka 27: Řádka 28:
 
# ''Zajímá nás maximální nebo průměrná složitost!''
 
# ''Zajímá nás maximální nebo průměrná složitost!''
 
#* Tím eliminujeme vliv konkrétního zadání.
 
#* Tím eliminujeme vliv konkrétního zadání.
 +
#* Viz [[#Maximální a průměrná složitost|průměrná složitost]].
 +
  
 
== Asymptotická složitost ==
 
== Asymptotická složitost ==
Řádka 51: Řádka 54:
 
* Hledání maxima
 
* Hledání maxima
 
</div>
 
</div>
 +
 +
 +
== Maximální a průměrná složitost ==
 +
* Počet vykonaných operací se může lišit podle podoby konkrétních dat.
 +
* Třeba při řazení podle abecedy může být počet operací jiný pro ''téměř setříděná'' data a jiná pro data, která jsou úplně přeházená.
 +
* Některé algoritmy mohou mít velmi dobré chování ve většině případů, ale pro nešťastně uspořádaná data mohou mít složitost větší. (Viz třeba známý řadící algoritmus ''QuickSort''.)
 +
 +
<div class="Priklad">
 +
* Při cestě do školy vstanu tak, abych v průměrném případě dorazil včas. Pokud dojde k&nbsp;nehodě na silnici, může se stát, že se zpozdím. Ale je to málo pravděpodobné a vyrážet o&nbsp;hodinu dříve pro případ nehody by bylo nepraktické &mdash; řeším ''průměrnou'' délku cesty.
 +
* Na druhou stranu pokud jdu k&nbsp;maturitě, čtvrthodinové zpoždění by znamenalo, že budu muset maturovat až na podzim a&nbsp;proto raději hodinu počkám &mdash; zajímá mě spíše délka cesty ''v&nbsp;nejhorším případě''.
 +
</div>
 +
  
 
== Související pojmy ==
 
== Související pojmy ==
Řádka 56: Řádka 71:
 
*Složitost nejlepšího algoritmu, který řeší daný problém.
 
*Složitost nejlepšího algoritmu, který řeší daný problém.
 
*× složitost nejlepšího ''známého'' algoritmu.
 
*× složitost nejlepšího ''známého'' algoritmu.
 
; Maximální × průměrná složitost
 
*viz QuickSort
 
*Aneb: Pojedete do školy o 4 hodiny později proto, že v nejhorším možném případě Vám cesta bude trvat pěšky 4 hodiny?
 
  
 
; Paměťová × časová složitost
 
; Paměťová × časová složitost

Verze z 2. 10. 2017, 09:08


Obsah

Složitost jako míra pro srovnání algoritmů

Hledáme nástroje pro porovnání efektivity algoritmů.

Rychlejší algoritmus → lepší algoritmus!
Má to ale jeden háček — musí nám stačit systémové prostředky pro daný algoritmus, zejména operační paměť. ;)
Problém — čas je ovlivněn


Měření složitosti

  1. Neměříme čas, ale počet operací!
    • Tím omezíme vliv konkrétního HW.
  2. Nepočítáme všechny dílčí operace!
    • Obvykle počítáme pouze „významné“ (časově náročné) operace (počet porovnání, počet přístupů na disk).
    • Tím eliminujeme vliv použitého překladače, knihoven, jazyka, procesorové architektury,...
  3. Zajímají nás velká data, řádový růst!
  4. Zajímá nás maximální nebo průměrná složitost!


Asymptotická složitost

Příklady růstu počtu operací
Úkol: Navrhněte algoritmus a odhadněte složitost
  • Hledání maxima


Maximální a průměrná složitost

  • Při cestě do školy vstanu tak, abych v průměrném případě dorazil včas. Pokud dojde k nehodě na silnici, může se stát, že se zpozdím. Ale je to málo pravděpodobné a vyrážet o hodinu dříve pro případ nehody by bylo nepraktické — řeším průměrnou délku cesty.
  • Na druhou stranu pokud jdu k maturitě, čtvrthodinové zpoždění by znamenalo, že budu muset maturovat až na podzim a proto raději hodinu počkám — zajímá mě spíše délka cesty v nejhorším případě.


Související pojmy

Složitost problému
Paměťová × časová složitost

Viz také

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje