Programování 4. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015



Podobné dokumenty
Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Binární vyhledávací stromy II

ŘÍZENÍ FYZIKÁLNÍHO PROCESU POČÍTAČEM

Algoritmy a datové struktury

MS WORD 2007 Styly a automatické vytvoření obsahu

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Tabulky Word egon. Tabulky, jejich formátování, úprava, změna velikosti

INFORMATIKA WORD 2007

František Hudek. květen ročník

Příklady a návody. Databázová vrstva

2.8.9 Parametrické rovnice a nerovnice s absolutní hodnotou

Grafy a hromadná korespondence Word egon. Tvorba grafů, jejich úprava a základy hromadné korespondence

3.2.4 Podobnost trojúhelníků II

Nerovnice s absolutní hodnotou

Stromy. Základní pojmy

Ministerstvo pro místní rozvoj. podprogram

IMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE

M - Rovnice - lineární a s absolutní hodnotou

A. Struktura grafického kódu na dokladech o získání základního vzdělání

Kalendář je nástroj, který vám pomůže zorganizovat si pracovní čas. Zaznamenáváme do něj události jako schůzky, termíny odevzdání práce a podobně.

Kvadratické rovnice pro učební obory

V týmové spolupráci jsou komentáře nezbytností. V komentářích se může např. kolega vyjadřovat k textu, který jsme napsali atd.

Lokální a globální extrémy funkcí jedné reálné proměnné

5 Rekurze a zásobník. Rekurzivní volání metody

KIV/ZI Základy informatiky. MS Excel maticové funkce a souhrny

Pohyb v listu. Řady a posloupnosti

Při návštěvě stránek trololol.tode.cz se stránky přesměrují na stránku mrshare.tode.cz

PHP formátování řetězců

STEREOMETRIE. Vzdálenost bodu od přímky. Mgr. Jakub Němec. VY_32_INOVACE_M3r0113

( ) ( ) ( ) 2 ( ) Rovnice s neznámou pod odmocninou II. Předpoklady: 2715

Popis připojení elektroměru k modulům SDS Micro, Macro a TTC.

PŘÍRUČKA K POUŽÍVÁNÍ APLIKACE HELPDESK

Pingpongový míček. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

Umělá inteligence I. Roman Barták, KTIML.

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Interpretace Dantova Pekla

Google Apps. pošta 2. verze 2012

Výukový materiál zpracován v rámci projektu EU peníze školám

PŘEPOČET ZÚČTOVANÝCH ZÁLOH V 10% NA 14% V KONOCOVÉ

Př. 3: Dláždíme čtverec 12 x 12. a) dlaždice 2 x 3 12 je dělitelné 2 i 3 čtverec 12 x 12 můžeme vydláždit dlaždicemi 2 x 3.

Dynamické datové struktury II.

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Abstrakt. Následující text obsahuje detailní popis algoritmu Minimax, který se používá při realizaci rozhodování

Modul účetnictví: Kontrolní výkaz DPH (SK) Podklady ke školení

VŠFS B_Prg Programování: Sbírka příkladů na cvičení RNDr. Jan Lánský, Ph.D.

Používání IS Carsystem

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Rekurzivní algoritmy

JAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY

Výsledky I. fáze Posouzení shody webu podrobný rozpis. Název. Splňuje. Důvod a způsob založení. Splňuje. Organizační struktura

2.7.2 Mocninné funkce se záporným celým mocnitelem

Tvorba trendové funkce a extrapolace pro roční časové řady

Vektorový grafický editor

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Tvorba a využití výukových animací pro praktikum z genetiky

Řízení pohybu robota ultrazvukovým a tlakovým senzorem II.

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

= musíme dát pozor na: jmenovatel 2a, zda je a = 0 výraz pod odmocninou, zda je > 0, < 0, = 0 (pak je jediný kořen)

Každý jednotlivý záznam datového souboru (tzn. řádek) musí být ukončen koncovým znakem záznamu CR + LF.

Datové struktury Úvod

{ } Kombinace II. Předpoklady: =. Vypiš všechny dvoučlenné kombinace sestavené z těchto pěti prvků. Urči počet kombinací pomocí vzorce.

Návod na připojení k ové schránce Microsoft Windows Live Mail

Dopravní úloha. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

3. Prohledávání grafů

( ) Neúplné kvadratické rovnice. Předpoklady:

ADT STROM Lukáš Foldýna

MŠ MOTÝL s. r. o. PŘIHLÁŠKA

Sekvenční logické obvody

PADS návrh jednoduchého regulátoru

KIV/ZIS - semestrální práce

Programovanie v jazyku C stromy

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Popis a funkce klávesnice Gama originální anglický manuál je nedílnou součástí tohoto českého překladu

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Dutý plastický trojúhelník by Gianelle

(a) = (a) = 0. x (a) > 0 a 2 ( pak funkce má v bodě a ostré lokální maximum, resp. ostré lokální minimum. Pokud je. x 2 (a) 2 y (a) f.

Ministerstvo pro místní rozvoj. bytů

Algoritmy II. Otázky k průběžnému testu znalostí

( ) Kreslení grafů funkcí metodou dělení definičního oboru I. Předpoklady: 2401, 2208

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Novinky v programu Účtárna 2.09

Pracovní ukázka vstupního testu DSA 1.

Plán předmětu Název předmětu: Školní rok: Ročník: Semestr: Typ předmětu: Rozsah předmětu: Počet kreditů: Přednášející: Cvičící: Cíl předmětu

Asymptoty grafu funkce

Microsoft Office. Word styly

Rozvrhování zaměstnanců

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

Google AdWords - návod

Algoritmy na ohodnoceném grafu

Svobodná chebská škola, základní škola a gymnázium s.r.o. Zlomky sčítání a odčítání. Dušan Astaloš. samostatná práce, případně skupinová práce

Řešení. ŘEŠENÍ 16 Dotazník uchazeče o zaměstnání

Kvadratické rovnice pro studijní obory

Sada 2 CAD CADKON 2D 2011 Nosníkový strop

ZŘ - Hodnocení. Otevírání nabídek

Teorie grafů. Bedřich Košata

Transkript:

Programování 4. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Umíme z minulé hodiny Stromy Reprezentace Binární vyhledávací stromy Create Find, Insert, Delete Vypis (inorder, preorder, postorder) Vyvážené stromy (stručně) Dokonale vyvážený binární vyhledávací strom AVL strom Jan Lánský Programování 4. hodina 2

Cíle hodiny Využití stromů při řešení praktických příkladů Načtení stromu z textového zápisů vztahů mezi daty Binární vyhledávací strom jako slovník Průchod obecným stromem do hloubky s využitím zásobníku Průchod obecným stromem do šířky s využitím fronty Vyhodnocení aritmetického výrazu Jan Lánský Programování 4. hodina 3

Rodokmen z textové podoby do podoby stromu Praktický příklad Textový soubor každý řádek reprezentuje otce a jeho potomky Otec: potomek,, potomek Označení osob musí být unikátní (v praxi jméno, příjmení, datum a místo narození) Chceme převést do podoby obecného stromu Txt soubor: pozor na umístění a počty mezer. Naše řešení je požaduje přesně. Pokud bude vstup vytvářet člověk, udělá chyby. Jan Lánský Programování 4. hodina 4

Rodokmen Jan Petr Pavel Pepa Lukas Jirka Ondra Adam Ales Filip Mirek Jan Lánský Programování 4. hodina 5

Myšlenka algoritmu Obecný strom, jehož kořen je otec z prvního řádku Projdeme soubor po řádcích. Rozpoznáme jméno otce a jeho synů Pokud se otec nevyskytuje ve stromu, chyba, končíme. V obecném stromu k otci přidáme jeho syny Pokud jména nejsou unikátní (chyba), přidáváme všechny syny prvnímu nalezenému jmenovci Jan Lánský Programování 4. hodina 6

Pomocný binární vyhledávací strom slovník V obecném stromu musíme projít všechny prvky, abychom nalezli hledaný uzel. Zrychlení: použijeme slovník (binární vyhledávací strom), který bude překládat jména osob na uzly obecného stromu Místo hledání v obecném stromu (lineární čas) budeme hledat v binárním vyhledávacím stromu (logaritmický čas) Stojí nás to dvojnásobek paměti Jan Lánský Programování 4. hodina 7

Datové struktury Místo celých čísel pracujeme s řetězci. Změní se těla funkcí Insert a Find Obecný strom: Jméno uzlu a pole synů Binární vyhledávací strom: Klíč: jméno uzlu Hodnota: uzel obecného stromu Levý: levý syn Pravý: pravý syn Jan Lánský Programování 4. hodina 8

Vytvoření uzlu Obecný strom: Vytvoříme pole pro dva syny Počet synů je nula. Binární vyhledávací strom: Známe z minulé hodiny Jan Lánský Programování 4. hodina 9

Přidání syna do obecného stromu Projdeme pole synů a hledáme prvek s hodnotou null. Pokud ho nalezneme, změníme ho na přidávaného syna a hodnotu null posuneme na další prvek Dynamické pole Bylo-li pole synů plné, zvětšíme ho na dvojnásobek. Do nového pole okopírujeme původní hodnoty, přidáme nový prvek, nastavíme zarážku null. Jan Lánský Programování 4. hodina 10

Oddělovač synů Pozor na mezery Otec končí před dvojtečkou Otec není ve slovníku. Buďto je to kořen, nebo chyba Pole řetězců se jmény synů Přidáme syna do slovníku Přidáme syna do obecného stromu Jan Lánský Programování 4. hodina 11

Průchod stromem AJ: Do hloubky: Deep first search (DFS) Do šířky: Breadth first search (BFS) Průchod do hloubky (DFS) - Backtracking Rekurze Zásobník prvky zásobníku jsou uzly stromu Průchod do šířky (BFS) - Vlna Fronta Prvky fronty jsou uzly stromu Přidáme datovou položku uzlu, zda byl navštíven nebo ne. Můžeme přidat i položku pro hloubku uzlu ve stromě. S uzly můžeme provést během průchodu požadovanou operaci (např. výpis hodnoty) Jan Lánský Programování 4. hodina 12

Průchod stromem do hloubky Preorder První je vypsán otec, pak synové Viz výstup nalevo od textu Inorder U binárních stromů: Pořadí výpisu je levý syn, otec, pravý syn. Postorder Nejprve jsou vypsání synové pak otec Jan Lánský Programování 4. hodina 13

Obecný strom nové položky Přidáme poznámku, zda jsme uzel už navštívili, nutné pro nerekurzivní průchody. Hloubka uzlu = vzdálenost od kořene v počtu uzlů Uzel je nenavštíveny při svém vzniku Uzel je kořen. Operace insert, delete nebudou měnit hloubku, zjistíme ji až při průchodu stromem Jan Lánský Programování 4. hodina 14

Pomocné funkce pro výpis Vypíše za každou úroveň hloubky hvězdičku a pak vypíše název uzlu. Vrátí dalšího nenavštíveného syna uzlu nebo null. Jan Lánský Programování 4. hodina 15

Preorder Minulou hodinu jsme použili na Binární vyhledávaci strom funkce Vypis Průchod do hloubky: rekurze Vypíšeme uzel a jeho hloubku Rekurzivní DFS stromem může projít syny v obyčejném cyklu, ale udělali jsme obecněji. Nastavíme mu hloubku uzlu a spostíme na něm rekurzi Další nenavštívený syn uzlu Start rekurze Jan Lánský Programování 4. hodina 16

Preorder Praktická ukázka bude na tabuli Průchod do hloubky: zásobník Dokud není zásobník prázdný Musí to být zásobník uzlů stromů Kořen stromu na zásobník Vyzvedneme vrchol zásobníku, Pokud nebyl navštíven, tak ho vypíšeme (a označíme navštívení). Otce bez synů dále nezpracováváme. Má-li uzel nenavštíveného syna, nastavíme synovi hloubku a otce i syna dáme na zásobník Jan Lánský Programování 4. hodina 17

Průchod stromem do šířky Uzly jsou vypisovány dle vzdálenosti od kořene Nejprve je vypsán kořen Poté synové kořene Poté vnuci kořene, Použití datové struktury Fronta Nevýhoda: z výpisu (nalevo) nepoznáme, kdo je čí otec Jan Lánský Programování 4. hodina 18

Praktická ukázka bude na tabuli Průchod do šířky: fronta Velmi podobné jako při použití zásobníku, pouze synové se přidávají do fronty najednou v cyklu Syny musíme označit za navštívené už při vložení do fronty, technické řešení kvůli funkci NextSon Jan Lánský Programování 4. hodina 19

Vyhodnocení aritmetického výrazu Praktická ukázka bude na tabuli Problém: lidé používají infixový zápis, který se musí pro optimální počítačové zpracování převést na prefixní zápis Infixní 2 + 3 * ( 7 + 2 ) 4 Prefixní: - + 2 * 3 + 7 2 4 Při uložení výrazu do stromu ho vyhodnotíme průchodem stromem do hloubky Uzly operace, listy čísla. Literatura Kučera: slajdy 93 99 Topfer: strany 63-70 Prefixní zápis nepotřebuje závorky Jan Lánský Programování 4. hodina 20

Zpětná vazba Objevili jste ve slajdech chyby? Včetně pravopisných Nechápete nějaký slajd? Je příliš obtížný, nesrozumitelný? Máte nějaký nápad na vylepšení? Anonymní formulář Odeslání za pár vteřin http://goo.gl/forms/wjx99cbyy9 Jan Lánský Programování 4. hodina 21