ALGORITMIZACE A DATOV STRUKTURY 14 ASD 3 cvien

  • Slides: 12
Download presentation
ALGORITMIZACE A DATOVÉ STRUKTURY (14 ASD) 3. cvičení

ALGORITMIZACE A DATOVÉ STRUKTURY (14 ASD) 3. cvičení

Algoritmus • Definice • Návod jak provést určitou činnost • Přesný návod či postup,

Algoritmus • Definice • Návod jak provést určitou činnost • Přesný návod či postup, kterým lze vyřešit daný typ úlohy • … • Transformace vstupních dat na výstupní data • Vstupy mají definované množiny hodnot, jichž mohou nabývat • Algoritmus je procedura proveditelná Turingovým strojem • teoretický model počítače popsaný matematikem Alanem Turingem • Jedná se o posloupnost elementárních kroků • Jak si jej jednoduše představit: • postup pro výpočet obvodu kruhu • kuchařka: recepty • postup jak převést číslo ze z-adické soustavy do jiné

Vlastnosti algoritmů • Elementární • Skládá se z konečného počtu jednoduchých činností (kroky) •

Vlastnosti algoritmů • Elementární • Skládá se z konečného počtu jednoduchých činností (kroky) • Deterministický • Po každém kroku můžeme určit zda skončil nebo v jakém kroku budeme pokračovat • Konečný • Musí skončit po konečném počtu kroků • Resultativní • Vede k výsledku • Hromadný (obecný) • Můžeme použít k řešení celé skupiny podobných úloh • Efektivní • Vede k řešení v optimálním čase - rychlost

Metody řešení algoritmů • Shora dolů • Postup řešení rozkládáme na jednodušší operace, až

Metody řešení algoritmů • Shora dolů • Postup řešení rozkládáme na jednodušší operace, až dospějeme k elementárním krokům • Příkladem je kvadratická rovnice • Vypočti diskriminant • Podle něj rozhodneme, zda-li máme • Jedno řešení • Dvě komplexní řešení • Zdola nahoru • Skupiny elementárních operací chápeme jako nové elementární kroky • Postupně z elementárních kroků vytváříme prostředky, které nakonec umožní zvládnout požadovaný problém

Časová a paměťová náročnost • Samotné vyřešení úlohy ještě neznamená spokojenost • Často se

Časová a paměťová náročnost • Samotné vyřešení úlohy ještě neznamená spokojenost • Často se dá úloha řešit jednodušeji (efektivněji) • Musíme použít optimalizaci? • Náročnost pro počítač • Při komplikovanější úloze můžeme dlouho čekat na výsledek (procesor má příliš mnoho instrukcí) • Časová náročnost tedy zjednodušeně může být úměrná počtu elementů, které umístíme do algoritmu • Potom co nemůžeme ovlivnit: počet vstupních dat (ale…) • Příklad • Výpočet absolutní hodnoty zabere 3 takty procesoru • sin(x) nám zabere 291 taktů Není to moc, ale pokud budeme kombinovat mnoho funkcí…

Základní symboly vývojového diagramu

Základní symboly vývojového diagramu

robot Karel - pomůcka (shrnutí) Karel – elementární operace • Krok – posun o

robot Karel - pomůcka (shrnutí) Karel – elementární operace • Krok – posun o jedno políčko dopředu • Vlevo. Bok – natočení o 90° vlevo • Polož – položení jedné cihly na aktuální políčko • Zvedni – zvednutí jedné cihly z aktuálního políčka Karel – základní podmínky • Je. Cihla – podmínka je pravdivá, pokud Karel stojí na políčku s minimálně jednou cihlou • Je. Sever – podmínka je pravdivá, pokud je Karel otočen k severu (nahoru) • Je. Zeď – podmínka je pravdivá, pokud před Karlem je zeď (při provedení příkazu Krok by do ní narazil)

Nekonečný cyklus

Nekonečný cyklus

Obejdi. Místnost. Dokola. Zrohu – Karel stojí v libovolném rohu místnosti natočený zády ke

Obejdi. Místnost. Dokola. Zrohu – Karel stojí v libovolném rohu místnosti natočený zády ke stěně. Karel má obejít místnost buď ve směru nebo proti směru hodinových ručiček, podle toho, jak je na začátku natočen. proti směru po směru

Obejdi. Mistnost. Dokola – Karel má podél zdi obejít celou místnost dokola proti směru

Obejdi. Mistnost. Dokola – Karel má podél zdi obejít celou místnost dokola proti směru hodinových ručiček. Výchozí pozice je neznámá, stejně tak i směr natočení. Karel má na každé políčko u zdi stoupnout minimálně jednou. Z V zjednodušující pravidlo – na začátku Karel může „chvíli“ jít podél zdi i po směru hodinových ručiček

Obejdi. Mistnost. Dokola – efektivněji (stále proti směru hodinových ručiček) Snahou je, aby Karel

Obejdi. Mistnost. Dokola – efektivněji (stále proti směru hodinových ručiček) Snahou je, aby Karel zbytečně nevstoupil na políčka vícekrát. Nápověda – využijte cihlu (cihly) jako "zarážku„, na počátku je místnost bez cihel. Karel vstoupí pouze na jedno políčko u zdi dvakrát, na ostatní pouze jednou. Z V

Právě 5 Cihel. Ve. Všech. Rozích – Karel projde všechna políčka v rozích místnosti

Právě 5 Cihel. Ve. Všech. Rozích – Karel projde všechna políčka v rozích místnosti a naskládá na ně tolik cihel, aby po ukončení algoritmu ve všech rozích bylo přesně 5 cihel. Na počátku nevíme, kde robot stojí a jakým směrem se dívá. Na počátku v místnosti mohou být KDEKOLIV cihly v RŮZNÉM počtu.