Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Algoritmy a datové struktury

Podobné prezentace


Prezentace na téma: "Algoritmy a datové struktury"— Transkript prezentace:

1 Algoritmy a datové struktury
Úvodní slovo

2 Obsah přednášky Seznámení s předmětem Algoritmus

3 Kdo je kdo Ladislav Beránek beranek@pf.jcu.cz J 510
Při komunikaci uvádějte do u předmět ve tvaru: [ADS1] +důvod

4 Plán semestru 1. Algoritmus 2. Složitosti algoritmu
3. Metody návrhu algoritmu 4. Abstraktní datové typy 5. Spojové seznamy 1. 6. Spojové seznamy 2. 7. Třídění - základ 8. Třídění Quicksort 9. Rychlá třídění 10. Stromy + BST 11. AVL + Red-Black 12. B stromy

5 Požadavky na zápocet Dle pokynů cvičící

6 Doporučená literatura
Moodle předmětu - ADS Literatura: např. R. Sedgewick: Algoritmy v C/Javě P. Wroblewski: Algoritmy

7 Pojem algoritmus Algoritmus Program
Všeobecná pravidla určující transformaci vstupních dat na výstupní Návod, který určuje postup vedoucí k řešení dané úlohy Posloupnost kroku vedoucích k řešení dané úlohy Např. recept – transformuje mouku, vodu, vajíčka na palačinky Program Realizace algoritmu

8 Základní vlastnosti algoritmu
Hromadnost Algoritmus je použitelný na libovolné vstupní údaje splňující požadované podmínky Algoritmus neřeší jeden konkrétní problém, ale obecnou třídu obdobných problému Např. nikoliv výpočet 2x8, ale součin dvou celých čísel Determinismus Každý krok algoritmu musí být jednoznačný a přesně definovaný Algoritmus nesmí být závislý na prostředí, ve kterém je realizován Rezultativnost V konečném poctu kroku musí algoritmus vrátit výsledek

9 Vytváření algoritmu Návrh algoritmu je tvořivý proces (nelze automatizovat) Neexistuje všeobecný návod Existují známé strategie a paradigmata pro návrh algoritmu

10 Postup při vytváření algoritmu
1. Formulace problému 2. Stanovení cílu 3. Volba strategie 4. Navržení postupu 5. Zápis vytvořených postupu 6. Ověření správnosti Definice vstupních dat Definice výstupních dat

11 Všeobecné strategie Dekompozice – rozdělení problému na podproblémy, které jsou z určitého hlediska jednodušší Abstrakce – zanedbání a/nebo ukrytí detailu

12 Způsob zápisu algoritmu
Přirozeným jazykem + Čitelnost + Srozumitelnost - Dlouhý zápis - Nízká přehlednost - Nejednoznačnost Příklad: Nalezení největšího čísla v posloupnosti. Vstupem je posloupnost čísel, výstupem je největší číslo v dané posloupnosti. Do pomocného prvku uložíme první číslo posloupnosti. Postupně procházíme jednotlivá čísla v posloupnosti a pokud je hodnota právě zkoumaného čísla vetší než hodnota v pomocném prvku, uložíme hodnotu právě zkoumaného čísla do pomocného prvku. Pomocný prvek obsahuje největší číslo v posloupnosti

13 Způsob zápisu algoritmu
Přirozeným jazykem (strukturovaně) + Citelnost + Srozumitelnost - Nejednoznačnost Příklad: Vstup: posloupnost čísel Výstup: největší číslo v posloupnosti 1. Do pomocné proměnné uložit první číslo posloupnosti 2. Postupně procházet jednotlivá čísla posloupnosti 2.1 Jestliže je aktuální číslo vetší než pomocná proměnná, pak uložit aktuální číslo do pomocné proměnné 3. Pomocná proměnná obsahuje největší číslo posloupnosti

14 Způsob zápisu algoritmu
Pseudokód + Jednoznačnost - Nesrozumitelnost Příklad: Vstup: posloupnost čísel P Výstup: největší číslo NEJ v posloupnosti P NEJ <- P[0] pro všechna čísla C z P dělej jestliže C > NEJ pak NEJ <- C vrat NEJ

15 Způsob zápisu algoritmu
Konkrétní jazyk + Jednoznačnost - Nemusí být obecný - Dlouhý zápis Příklad: // Vstup : posloupnost čísel P // Výstup : největší číslo NEJ v posloupnosti P NEJ = P [0]; foreach (C in P) { if(C>NEJ) NEJ = C; } return NEJ;

16 Způsob zápisu algoritmu
Vývojový diagram + Jednoznačný - Zápis Příklad

17 Klasifikace algoritmu podle implementace
Rekurzivní/iterační - rekurzivní algoritmus volá sám sebe dokud není dosažena ukončovací podmínka Iterativní algoritmus používá opakující se konstrukce (cykly) Některé problémy lze jednoduše řešit rekurzí, jiné iteračně Stromecek (délka , úhel ) { Kresli (délka , úhel ); Stromecek ( délka /2, úhel +45); Stromecek ( délka /2, úhel -45); }

18 Klasifikace algoritmu podle implementace
Sériové/paralelní využívají výhody paralelního zpracování ne vždy lze převádět sériový algoritmus na paralelní ne vždy je výhodné převádět sériový algoritmus na paralelní

19 Klasifikace algoritmu podle implementace
Deterministické/náhodné deterministické algoritmy vracejí pro stejný vstup vždy stejný výsledek náhodné algoritmy prohledávají náhodně prostor až dosáhnou přijatelné řešení Např. nalezení znaku ’a’ v poli s 50% znaku ’a’ a 50% znaku ’b’

20 Klasifikace algoritmu podle implementace
Přesné/přibližné hledají přesné nebo přibližné řešení problému u numerických výpočtů nelze určit přesné řešení kvůli konečné aritmetice u grafových problému nelze určit přesné řešení kvůli složitosti problému např. hledání kořene rovnice Pokud existuje analytické řešení – přesný výsledek (kořen kvadratické rovnice) Jinak nutno použít numerickou metodu (např. půlení intervalu)

21 Klasifikace algoritmu podle použitého paradigmata
Rozděl a panuj (Divide and conquer) opakovaně redukovat problém na jeden či více menších problému dokud nelze jednoduše vyřešit dělení většinou probíhá rekurzivně např. mergesort – ve více lidech abecedně setřídit knihy

22 Klasifikace algoritmu podle použitého paradigmata
Sniž a panuj (Decrease and conquer) jednoduší verze rozděl a panuj lze použít v případě, že vyřešení malé části je současně i řešením celku např. hledání půlením intervalu – hledání v telefonním seznamu

23 Klasifikace algoritmu podle použitého paradigmata
Žravé metody (Greedy methods) v každém kroku se vybírá možnost, která se jeví nejlepší hledá lokální optimum nevrací se zpět když funguje, bývá nejrychlejší např. Kruskaluv algoritmus pro minimální kostru grafu

24 Klasifikace algoritmu podle použitého paradigmata
Redukce převádí problém na jiný problém, jehož řešení je známé a není příliš náročné např. hledání mediánu v nesetříděném poli lze transformovat na problém řazení pole a výběru prostředního prvku v setříděném poli.

25 Klasifikace algoritmu podle použitého paradigmata
Dynamické programování při řešení problému se postupuje přes řešením série podproblému, atd. řešení podproblému se ukládají do tabulky, aby se předešlo opakovaným výpočtům podproblémy se překrývají např. výpočet hodnot Pascalova trojúhelníku

26 Klasifikace algoritmu podle použitého paradigmata
Heuristické algoritmy na základe heuristiky prohledávají prostor řešení většinou nevracejí přesné řešení, ale pouze aproximaci, protože přesné řešení není možné najít v rozumném čase např. hledání globálního extrému funkce bez omezení intervalu metodou simulovaného žíhání prozkoumává blízké okolí dosavadního řešení a s pravděpodobností T (teplota) přijímá i horší řešení I na rozdíl od žravých heuristik se metoda dostane i z lokálních extrému

27 Klasifikace algoritmu podle složitosti
K některým problémům existuje hned několik řešení některá z nich se pro rostoucí velikost vstupní množiny stávají nepoužitelná, jiná pracují rychle pro udávání rychlosti algoritmu nemá cenu uvádět časový údaj – pro každý počítač je jiný složitost algoritmu ukazuje trend růstu času/paměti s rostoucí vstupní množinou

28 Konec


Stáhnout ppt "Algoritmy a datové struktury"

Podobné prezentace


Reklamy Google