Algoritmy a datové struktury

Slides:



Advertisements
Podobné prezentace
Lineární klasifikátor
Advertisements

Dynamické systémy.
Stavový prostor. • Existují úlohy, pro které není k dispozici univerzální algoritmus řešení • různé hry • problém batohu, problém obchodního cestujícího.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Rekonstrukce povrchu objektů z řezů Obhajoba rigorózní práce 25. června 2003 Radek Sviták
Algoritmizace Vývojové diagramy.
Semestrální práce KIV/PT Martin Kales Hana Hůlová.
PA081 Programování numerických výpočtů Přednáška 2.
PA081 Programování numerických výpočtů
ALGO – Algoritmizace 1. cvičení
Alg51 Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy –zadaný problém rozložíme na podproblémy –pro řešení podproblémů.
ENVIRONMENTÁLNÍ INFORMATIKA A REPORTING
Genetické algoritmy. V průběhu výpočtu používají náhodné operace. Algoritmus není jednoznačný, může projít více cestami. Nezaručují nalezení řešení.
Algoritmizace 9. Ročník.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Skip-List je datová struktura, která může být použita jako náhrada za vyvážené stromy. představují pravděpodobnostní alternativu k vyváženým stromům (struktura.
Optimalizace v simulačním modelování. Obecně o optimalizaci  Optimalizovat znamená maximalizovat nebo minimalizovat parametrech (např. počet obslužných.
Vývojové diagramy a základy algoritmizace
Funkce.
Algoritmizace a programování
Získávání informací Získání informací o reálném systému
Jazyk vývojových diagramů
Řadicí algoritmy autor: Tadeáš Berkman.
Seminář – Základy programování
Algoritmizace.
Informatika a práce s počítačem
KIV/PRO Cvičení Nalezení maxima Nalezněte (co nejefektivněji) maximum v následující posloupnosti: – 2; 12; 8; 39; 9; 4; 3; 20; 28; 19;
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Algoritmus po krocích rozepsaný návod k nějaké činnosti
Church-Turingova teze Univerzální Turingův stroj Diagonalizace
Informatika I 2. přednáška
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
Algoritmizace a základy programování
Algoritmy a programovací techniky
METODA KONEČNÝCH PRVKŮ
Algoritmy vyhledávání a řazení
Jazyk vývojových diagramů
KIV/PPA1 cvičení 7 Cvičící: Pavel Bžoch. Osnova cvičení Zadání samostatné práce –Vysvětlení nejasností –Způsob odevzdání –Hodnocení Řazení Vyhledávání.
Obchodní akademie, Náchod, Denisovo nábřeží 673
Algoritmizace a programování Třídící algoritmy - 12
Optimalizace versus simulace 9.přednáška. Obecně o optimalizaci  Maximalizovat nebo minimalizovat omezujících podmínkách.  Maximalizovat nebo minimalizovat.
Dokumentace informačního systému
Algoritmizace a programování Algoritmizace – základní pojmy - 01
Algoritmus a jeho vlastnosti
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
Kompresní algoritmus LZW Dokumentografické informační systémy.
Základy zpracování geologických dat
Gradientní metody Metoda největšího spádu (volný extrém)
doc. RNDr. Zdeněk Botek, CSc.
Úvod do teorie konečných automatů
Alternativy k evolučním optimalizačním algoritmům Porovnání genetických algoritmů a některých tradičních stochastických optimalizačních přístupů David.
Monte Carlo simulace Experimentální fyzika I/3. Princip metody Problémy které nelze řešit analyticky je možné modelovat na základě statistického chování.
Optimalizace versus simulace 8.přednáška. Obecně o optimalizaci  Maximalizovat nebo minimalizovat omezujících podmínkách.  Maximalizovat nebo minimalizovat.
11/2003Přednáška č. 41 Regulace výpočtu modelu Předmět: Modelování v řízení MR 11 (Počítačová podpora) Obor C, Modul M8 ZS, 2003, K126 EKO Předn./Cvič.:
Kontakty slajdy: ftp://ulita.ms.mff.cuni.cz/predn/POS.
Úvod do programování Vyučující: Mgr. Vítězslav Jersák
Postup při empirickém kvantitativním výzkumu
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Ověření modelů a modelování Kateřina Růžičková. Posouzení kvality modelu Ověření (verifikace) ● kvalitativní hodnocení správnosti modelu ● zda model přijatelně.
Úvod do databázových systémů
Algoritmizace – základní pojmy
Základní pojmy v automatizační technice
Vytváření dokumentace algoritmů
PROLOG strategie vyhodnocení dotazu
2018/6/10 Počítačový model Kateřina Růžičková.
ALG 07 Selection sort (Select sort) Insertion sort (Insert sort)
Algoritmizace a datové struktury (14ASD)
Algoritmizace Dynamické programování
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Algoritmy a datové struktury Úvodní slovo

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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); }

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í

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’

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)

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

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

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

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.

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

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

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

Konec