Složitosti
Složitost algoritmů pro předmět UTI
Pro tuto látku je potřeba pochopit pořadí složitostí a potom co znamenají jednotlivé zápisy pro určení složitosti.
Svým způsobem je pořadí dost intuitivní, ale i tak je potřeba si ho trochu zapamatovat. Nyní k zápisům a jednotlivým porovnáním a zjednodušením, které se provádějí.
Mějme funkce
f1 =
f2 =
f3 =
f4 =
Jako první nás trápí, které funkce jsou složitější. Na první pohled vidíme, že f2 roste rychleji, než f1, ale jak je to s dalšími funkcemi, které nejsou vidět na první pohled? Pojďme to zjednodušit.
f1 =
f2 =
f3 =
f4 =
Při určování složitostí můžeme "smazat" jakékoliv konstanty a násobení konstantama a cokoliv, co je "jen číslo", nebo zanedbatelné. Např. pokud máme něco tak cokoliv, co je a nižší nás nezajímá. Stejně jako tak ta konstanta je zbytečná, protože nejvetší a nejhlavnější je složitost , násobení konstantou už je zbytečné. U logaritmu se dá aplikovat základní matematika, která říká, že pokud použijeme logaritmus na něco, co má exponent, tak ten exponent můžeme vytknout. Díky tomu nám vzniklo , jenže jak jsme si řekli, násobit konstantou je zbytečné, protože je konstanta, můžeme ji smazat.
f1 =
f2 =
f3 =
f4 =
Nakonec po úpravách je jasně vidět, která funkce je rychlejší, nebo které jsou stejně rychlé. Jdeme mrknout na nějaké pravidla zápisů a už si určíme na finále jak jsou na tom funkce.
funkce f roste pomaleji, nebo stejně rychle než nějaké s nějakou složitostí . funkce f roste pomaleji než nějaké s nějakou složitostí .
funkce f roste rychleji, nebo stejně rychle než nějaké s nějakou složitostí . funkce f roste rychleji než nějaké s nějakou složitostí .
funkce f roste stejně rychle jako nějaké s nějakou složitostí .
pokud platí potom zároveň platí
pokud platí potom zároveň platí
pokud platí potom zároveň platí V tomto případě potom ale neplatí protože a připouští stejně rychle, proto když platí , která říká, že něco roste stejně rychle, tak platí , , ale a stejně rychle nepřipouští, proto v tomto případě být nemůže.
Jak je to teda s funkcemi co jsme si ukázali?
- funkce se složitostí roste pomaleji, nebo stejně rychle jako funkce se složitostí . Zároveň tedy platí
- funkce se složitosti roste rychleji, nebo stejně rychle jako funkce se složitosti . Zároveň tedy platí
- funkce se složitosti roste rychleji, nebo stejně rychle jako funkce se složitosti . Zároveň tedy platí
- funkce se složitostí roste stejně rychle, jako funkce se složitostí . Zároveň tedy platí ALE NEPLATÍ