VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
|
|
- Dominika Janečková
- před 8 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS VYHLEDÁVÁNÍ V AVL STROMECH V JAZYCE C BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR TOMÁŠ MINTĚL BRNO 2007
2 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS VYHLEDÁVÁNÍ V AVL STROMECH V JAZYCE C SEARCHING IN AVL TREES IN C LANGUAGE BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE TOMÁŠ MINTĚL AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Prof. Ing. JAN M. HONZÍK, CSc. BRNO 2007
3
4 1. Pan/paní LICENČNÍ SMLOUVA POSKYTOVANÁ K VÝKONU PRÁVA UŽÍT ŠKOLNÍ DÍLO uzavřená mezi smluvními stranami: Jméno a příjmení: Tomáš Mintěl Id studenta: Bytem: 17.listopadu 1105/24, Havířov Narozen: , Ostrava (dále jen autor ) a 2. Vysoké učení technické v Brně Fakulta Informačních technologií se sídlem Božetěchova 2/1, Brno, IČO jejímž jménem jedná na základě písemného pověření děkanem fakulty:... (dále jen nabyvatel ) Čl. 1 Specifikace školního díla 1. Předmětem této smlouvy je vysokoškolská kvalifikační práce (VŠKP): disertační práce diplomová práce bakalářská práce jiná práce, jejíž druh je specifikován jako... (dále jen VŠKP nebo dílo) Název VŠKP: Vedoucí/ školitel VŠKP: Ústav: Datum obhajoby VŠKP: Vyhledávaní v AVL stromech v jazyce C Honzík Jan M., prof. Ing., CSc. Ústav informačních systémů VŠKP odevzdal autor nabyvateli v * : tištěné formě počet exemplářů: 1 elektronické formě počet exemplářů: 2 (1 ve skladu dokumentů, 1 na CD) 2. Autor prohlašuje, že vytvořil samostatnou vlastní tvůrčí činností dílo shora popsané a specifikované. Autor dále prohlašuje, že při zpracovávání díla se sám nedostal do rozporu s autorským zákonem a předpisy souvisejícími a že je dílo dílem původním. 3. Dílo je chráněno jako dílo dle autorského zákona v platném znění. * hodící se zaškrtněte
5 4. Autor potvrzuje, že listinná a elektronická verze díla je identická. Článek 2 Udělení licenčního oprávnění 1. Autor touto smlouvou poskytuje nabyvateli oprávnění (licenci) k výkonu práva uvedené dílo nevýdělečně užít, archivovat a zpřístupnit ke studijním, výukovým a výzkumným účelům včetně pořizovaní výpisů, opisů a rozmnoženin. 2. Licence je poskytována celosvětově, pro celou dobu trvání autorských a majetkových práv k dílu. 3. Autor souhlasí se zveřejněním díla v databázi přístupné v mezinárodní síti ihned po uzavření této smlouvy 1 rok po uzavření této smlouvy 3 roky po uzavření této smlouvy 5 let po uzavření této smlouvy 10 let po uzavření této smlouvy (z důvodu utajení v něm obsažených informací) 4. Nevýdělečné zveřejňování díla nabyvatelem v souladu s ustanovením 47b zákona č. 111/ 1998 Sb., v platném znění, nevyžaduje licenci a nabyvatel je k němu povinen a oprávněn ze zákona. Článek 3 Závěrečná ustanovení 1. Smlouva je sepsána ve třech vyhotoveních s platností originálu, přičemž po jednom vyhotovení obdrží autor a nabyvatel, další vyhotovení je vloženo do VŠKP. 2. Vztahy mezi smluvními stranami vzniklé a neupravené touto smlouvou se řídí autorským zákonem, občanským zákoníkem, vysokoškolským zákonem, zákonem o archivnictví, v platném znění a popř. dalšími právními předpisy. 3. Licenční smlouva byla uzavřena na základě svobodné a pravé vůle smluvních stran, s plným porozuměním jejímu textu i důsledkům, nikoliv v tísni a za nápadně nevýhodných podmínek. 4. Licenční smlouva nabývá platnosti a účinnosti dnem jejího podpisu oběma smluvními stranami. V Brně dne:... Nabyvatel Autor
6 Abstrakt Tato práce se zabývá vyhledáváním v AVL stromu. Jsou zde vysvětleny principy vyhledávacích metod. Následně je podrobně vysvětlen princip funkčnosti AVL stromu. Cílem je přepsání nerekurzivních algoritmů zapsaných v jazyce Pascal do jazyku C, vytvoření rekurzivních obdob těchto algoritmů a vytvoření aplikace pro animovanou demonstraci těchto operací. Klíčová slova Algoritmy, AVL strom, vyhledávaní, jazyk Pascal, jazyk C, C#, demonstrační animace, rotace Abstract This thesis engages in search in AVL tree. There are explained principles of researching methods. Consequently is in detail explained principle of utility AVL tree. The main aims of this thesis are transcribing non-recursive algorithms from Pascal to C language, create recursive analogies of this algorithms and create application for animated show of these operations. Keywords AVL tree, searching, Pascal language, C language, C#, demonstrational animation, rotation Citace Tomáš Mintěl: Vyhledávaní v AVL stromech v jazyce C, bakalářská práce, Brno, FIT VUT v Brně, 2007
7 Prohlášení Vyhledávaní v AVL stromech v jazyce C Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Prof. Ing. Jana Maxmiliána Honzíka, CSc. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal. Tomáš Mintěl Poděkování Tímto bych rád poděkoval vedoucímu mé bakalářské práce, panu Prof. Ing. Janu Maxmiliánu Honzíkovi, CSc. Děkuji za rady, snahu a ochotu pomoci i za čas věnovaný při konzultacích. Tomáš Mintěl, Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů..
8 Obsah Obsah Úvod Algoritmy a programování Algoritmus Programování a programovací jazyky Pascal Jazyk C Vyhledávání Přístupová doba Vyhledávací klíč Sekvenční vyhledávaní v poli Nesekvenční vyhledávaní v poli Binární vyhledávaní Fibonacciho vyhledávaní Indexsekvenční vyhledávaní Vyhledávaní v binárním vyhledávacím stromu Vyhledávaní v tabulce s rozptýlenými položkami AVL strom Vlastnosti uzlu Rotace Rotace při rekurzivním zápisu Rotace při nerekurzivním zápisu Jednoduchá pravá rotace Jednoduchá levá rotace Dvojitá pravá rotace Dvojitá levá rotace Vložení uzlu Rekurzivní zápis vkládání Nerekurzivní zápis vkládání Mazání uzlu Rekurzivní zápis mazání Nerekurzivní zápis mazání Animovaná demonstrace AVL stromu Volba programovacího jazyku
9 5.2 Implementace Uživatelské rozhraní Závěr...22 Literatura...23 Seznam příloh
10 1 Úvod Tato bakalářská práce byla zadána jako přepis algoritmu v programovacím jazyce Pascal do jazyka C. Jedná se o algoritmy operací vkládání, mazání a příslušných rotací nad AVL stromem. Podnětem byla neustále se zvyšující obliba jazyku C mezi programátory. Výuka jazyka Pascal na fakultě informatiky přešla do ústraní a ve většině případů se mladí programátoři učí pouze v jazyku C. V předmětu Algoritmy se sice setkáme při výuce s Algoritmickým jazykem, což je podmnožina Pascalovských instrukcí, ovšem domácí úkoly a projekty se vypracovávají v jazyce C. Součástí je také kontrola studijní opory a její přepis tak, aby vyhovovala zápisu přepsaných algoritmů. Druhou částí této bakalářské práce je vytvoření rekurzivní obdoby již dříve zmíněných algoritmů. Obě tyto verze by měly sloužit jako příklady používané při výuce. Posledním bodem je pak vytvoření aplikace pro animační demonstraci jednotlivých funkcí prováděných nad AVL stromem. Aplikace nemá stanovený jazyk, ve kterém má být napsána. Zvolil jsem C#, který je příbuzný jazyku C. Dokumentace obsahuje 6 kapitol. První je úvod, poté následuje kapitola, v níž je objasněno několik pojmů úzce souvisejících s touto prací. Jedná se o vysvětlení pojmu Algoritmus, programování a popis programovacích jazyků Pascal a C. V kapitole tři jsou objasněny principy vyhledávání, uvedena jednotlivá kritéria pro hodnocení různých vyhledávacích algoritmů a popsány nejpoužívanější vyhledávací tabulky. Mezi ně patří sekvenční vyhledávaní, nesekvenční vyhledávaní v poli, vyhledávaní v binárním vyhledávacím stromu a vyhledávaní v tabulce s rozptýlenými položkami. Čtvrtá kapitola je věnována AVL stromu, popisu vlastností celého AVL stromu i jednotlivého uzlu. Následuje vysvětlení principu rotací. Podrobně jsou popsány jak zápisy nerekurzivních, tak rekurzivních operací pro vkládání a mazání. Pátá kapitola se zabývá samotnou aplikací pro animační demonstraci funkcí nad AVL stromem. Postupně popisuje jak výběr jazyka, tak samotnou implementaci až po uživatelské rozhraní. 3
11 2 Algoritmy a programování 2.1 Algoritmus Algoritmus je konečná uspořádaná množina úplně definovaných pravidel pro vyřešení nějakého problému. Algoritmus musí splňovat několik pravidel a je těmito pravidly definován: Konečnost algoritmus musí po určitém počtu kroků skončit, ať už je tento počet jakkoliv velký, vždy musí být konečný. Pokud se program dostane do smyčky, ze které se nikdy nedostane, říkáme tomu zacyklení. Hromadnost vlastnost, která zaručuje, že algoritmus proběhne správně a nalezne správný výsledek pro jakékoliv vstupní hodnoty. Je nesmysl psát algoritmus pro výpočet 1 + 1, ale není nesmysl napsat algoritmus pro výpočet a + b. Determinovanost algoritmus musí v každém kroku vědět, jak pokračovat. Musí být jednoznačně definován. Program nesmí obsahovat žádné slepé ulice. Tato vlastnost také zaručuje, že při zadání stejných hodnot na vstupu, bude při každém spuštění výsledek totožný. Efektivnost tato vlastnost se nevztahuje ke správnosti výsledku, ale zajišťuje, aby program proběhl co možná nejrychleji. Pokud je v programu několik výpočtů prováděno zbytečně, může to program zpomalit, což je často nepřípustné. 2.2 Programování a programovací jazyky Programování je zápis algoritmu v programovacím jazyce. Volba programovacího jazyka hraje při programování většinou zásadní roli. Programovacích jazyků je několik desítek. Dělí se podle několika kriterií. Podle míry abstrakce: nižší (assembler) a vyšší (většina jazyků) programovací jazyky. Vyšší programovací jazyky se pak dělí na: Procedurální o Strukturované (např. Pascal, C, BASIC) o Objektově orientované (např. Smalltalk, Java) Neprocedurální o Funkcionální (např. Lisp) o Logické (např. Prolog) Jazyky jako je například C++ tyto přístupy kombinují. 4
12 2.2.1 Pascal Programovací jazyk Pascal vznikl v 70. letech především pro potřeby výuky programování. Za jeho vznikem stojí profesor Niklaus Wirth z vysoké školy technické v Curychu. Hlavní cíle byli jednoduchost a srozumitelnost. Pascal se rychle rozšířil do světa a až dodnes je hojně používán při výuce. Jeho obliba mezi programátory už určitou dobu klesá a mnohem častěji je nahrazován jazykem C nebo jiným jazykem Jazyk C Vznik je datován na přelom 70. let minulého století. Autory jsou Ken Thompson a Dennis Ritchie z Bellových laboratoří AT&T. Jméno bylo odvozeno z jazyka B, ze kterého autoři většinu přebírali. Jazyk byl vytvořen pro potřeby operačního systému Unix. Poté, co byla dokončena práce na stabilní verzi tohoto jazyka, byla většina jádra operačního systému Unix přepsána do tohoto jazyka. V dnešní době je jazyk C nejpoužívanějším programovacím jazykem na světě, a to jak pro tvorbu malých programů až po rozsáhlé aplikace. 5
13 3 Vyhledávání Při ukládání a skladování velkého množství položek je dobré určitým způsobem je ukládat a mít možnost k nim co možná nejrychleji přistoupit. K tomuto nám slouží abstraktní datový typ vyhledávací tabulka. Jako nejvýznamnější metody toho typu můžeme jmenovat: sekvenční vyhledávaní nesekvenční vyhledávaní v poli vyhledávaní v binárním vyhledávacím stromu vyhledávaní v tabulce s rozptýlenými položkami 3.1 Přístupová doba Tato vlastnost je nejpodstatnější vlastností algoritmů vyhledávaní. Jedná se o dobu potřebnou k vyhledání položky se zadaným klíčem. Pro toto hodnocení se používá hned několik časových přístupů. Navíc se zvlášť musí vzít doba, za kterou byl hledaný prvek nalezen, a doba, za kterou nám vyhledávací algoritmus oznámí, že prvek se zadaným klíčem není obsažen mezi prohledávanými prvky. Doby, které jsou důležité z hlediska hodnocení algoritmu: Minimální doba úspěšného vyhledání Minimální doba neúspěšného vyhledání Maximální doba úspěšného vyhledání Maximální doba neúspěšného vyhledání Průměrná doba úspěšného vyhledání Průměrná doba neúspěšného vyhledání Průměrná doba se získá vyhledáním všech prvků ve vyhledávané oblasti a podělí se počtem těchto prvků. 3.2 Vyhledávací klíč Může být jednoduchý nebo složený. Při jednoduchém se při rozhodování porovnají oba klíče a určí se, prvek s menší a větší hodnotou. Složený prvek obsahuje několik složek typu jednoduchý klíč. Každá složka má pak určitou váhu neboli prioritu. Porovnání dvou složených klíčů se provádí tak, že se nejdříve porovná složka s nejvyšší prioritou. Při rovnosti se porovná složka s nižší prioritou a tímto způsobem to při rovnosti 6
14 pokračuje, než se porovná složka s nejnižší prioritou. Pouze prvky, které mají shodné všechny složky klíče, jsou totožné. Příkladem může být složený klíč datum. Ten se skládá ze složek rok, měsíc a den. Při vyhledávaní podle věku budou mít prvky tuto prioritu: 1. rok, 2. měsíc, 3. den. Číslo jedna značí nejvyšší prioritu. Pokud budeme ovšem chtít vyhledat podle pořadí narozenin v roce, budou priority změněny: 1. měsíc, 2. den, 3. rok. 3.3 Sekvenční vyhledávaní v poli Principy sekvenčního vyhledávání lze ilustrovat na sekvenčním vyhledávání v tabulce implementované seznamem s použitím základních operací ATD seznam. Vyhledání je nerovnoměrné podle pozice prvku v poli. Vyhledávaní se provádí postupným prohledáním od prvního prvku k nalezenému, popřípadě poslednímu v případě, že prvek nebyl nalezen. Při N prvcích jsou jednotlivé doby vyhledání tyto: Minimální doba vyhledání = 1 Maximální doba vyhledání = N Průměrná doba vyhledání = N/2 Doba neúspěšného vyhledání = N Realizace tohoto vyhledávacího algoritmu je jednoduchá, ovšem časová náročnost například u operací delete je vysoká. Proto se tento algoritmus nehodí pro větší objemy dat. 3.4 Nesekvenční vyhledávaní v poli Bude-li vyhledávací tabulka implementována seřazeným polem, je sekvenční vyhledávaní nevhodné. Mnohem vhodnější je postupovat metodou rozděl a panuj nebo metodou půlení intervalu Binární vyhledávaní Při vyhledávaní se hledaný klíč porovná s klíčem prvku, který je v polovině vyhledávaného intervalu. V prvním případě se jedná o celou oblast dat. Klíče se porovnají. Pokud se klíče rovnají, prvek je nalezen. Pokud je hledaný klíč menší, opakuje se stejný proces, ovšem pouze pro interval první prvek až prvek, se kterým jsme teď pracovali. Pokud je větší, prohledá se oblast od daného prvku po poslední prvek. Takto se postupně dělí interval dvěma. Tímto způsobem nám vznikne logaritmická složitost vyhledání. Základ logaritmu je dvě. 7
15 3.4.2 Fibonacciho vyhledávaní Existuje vzájemný vztah mezi binárním vyhledáváním v seřazeném poli a binárním stromem. Algoritmus Fibonacciho vyhledávaní pracuje podobně jako binární vyhledávaní. Daný interval v poli však nedělí na dvě poloviny, ale dělící bod odvozuje z Fibonacciho posloupnosti a k jeho získaní stačí aditivní operace, což zvýší rychlost vyhledání tam, kde aditivní operace jsou výrazně rychlejší než celočíselné dělení číslem Indexsekvenční vyhledávaní Stejně jako vyhledáváme ve slovníku, který je opatřen indexy písmen, tak i tato metoda nejprve nalezne podle určitého indexu oblast, v níž by se mohl nalézat hledaný prvek. Následné vyhledávaní pokračuje sekvenčně. Tato metoda je vhodná především pro externí vyhledávaní. 3.5 Vyhledávaní v binárním vyhledávacím stromu Jedná se o jednu z nejpoužívanějších metod pro plně dynamické vyhledávací tabulky. Binární vyhledávací strom je takový uspořádaný strom, pro jehož každý uzel platí, že jeho levý podstrom je buď prázdný, nebo sestává z uzlů, jejichž hodnoty klíčů jsou menší než hodnota klíče daného uzlu, a podobně jeho pravý podstrom je buď prázdný, nebo sestává z uzlů, jejichž hodnoty klíčů jsou větší než hodnota klíče daného uzlu Obr Binární vyhledávací strom 8
16 Při nevhodné kombinaci vkládaní může vzniknout strom, který ovšem bude mít vlastnosti sekvence. Například při postupném vložení prvku 1-5 budou časové náročnosti operací tohoto vyhledávacího algoritmu totožné s časovými náročnostmi operací při sekvenčním vyhledávaní Obr Degradovaný binární vyhledávací strom Vkládaní probíhá tak, že se vyhledává uzel s daným klíčem, pokud nalezneme uzel se stejným klíčem, jako je klíč nového uzlu, jsou data aktualizována, to znamená, že se původní data přepíší novými daty. Pokud se dostaneme do uzlu, jehož klíč bude větší než klíč daného uzlu, a zároveň bude jeho levý podstrom prázdný, pak vložíme nový uzel místo tohoto prázdného podstromu. Obdobně tomu je u pravé strany. Rušení uzlů je mnohem náročnější než vkládaní. Rušíme-li neterminální uzel, který má oba synovské uzly, pak levý synovský uzel připojíme k nadřazenému uzlu místo rušeného uzlu a pravý synovský uzel připojíme k nejpravějšímu listu podstromu levého synovského uzlu (tzv. levá varianta) nebo provedeme stranově sdruženou variantu ( pravá varianta). Je-li levý nebo pravý synovský prázdný, pak se situace zjednoduší. Na místo rušeného otcovského uzlu se připojí neprázdný synovský podstrom. Ruší-li se kořen, stane se kořenem levý (resp. pravý) synovský uzel a pravý (resp. levý) podstrom se připojí k nejpravějšímu (resp. nejlevějšímu) listu levého (resp. pravého) podstromu. 3.6 Vyhledávaní v tabulce s rozptýlenými položkami Princip vyhledávání v tabulkách s rozptýlenými položkami (dále jen TRP) je velmi podobný principu vyhledávání v indexsekvenčním souboru. Pomocí rozptylovací funkce se získá index pole, na nějž se 9
17 uloží (od něj se vyhledává) položka s daným klíčem. Obsahuje-li tabulka synonyma vzhledem k danému indexu (více různých klíčů mělo shodnou hodnotu rozptylovací), pak na daném indexu začíná lineární seznam synonym, v němž se vyhledává položka s daným klíčem. Vyhledávání v TRP bude účinné tehdy, jestliže počet seznamů synonym bude co největší a jejich délka bude co možná nejkratší. Obr. 2.6 Tabulka s rozptýlenými položkami Hlavním problémem této metody je nalezení vhodné mapovací funkce. Jak pro 31 různých prvků, které se mají zobrazit do 41prvkové množiny, existuje (tj. cca ) možných mapovacích funkcí. Přitom pouze (41!/31!) z nich dává odlišné hodnoty pro různé klíče (tzn. že funkce je jednojednoznačná). Tzn. že poměr vhodných funkcí ke všem možným funkcím je asi 1 : 10 miliónům. Jednoznačné funkce jsou tedy velmi řídkým jevem. 10
18 4 AVL strom Za vznikem a zároveň za názvem stojí ruští matematici. Jmenovitě G. M. Adelson-Velsky a E. M. Landis. Ti v roce 1962 popsali tuto datovou strukturu v článku An algorithm for the organization of information. V tomto článku popsali jak jednotlivé principy vyvažování při vkládání a mazání prvků, tak i složitost s jakou algoritmus přistupuje k jednotlivým položkám. 4.1 Vlastnosti uzlu Klíč Váha Data Levý Pravý Obr. 3.2 Struktura uzlu AVL strom je výškově vyvážený binární strom. Je složen z jednotlivých uzlů. Každý uzel obsahuje ukazatel na levý podstrom, ukazatel na pravý podstrom, klíč, data, váhový koeficient (při rekurzivním zápisu není nezbytný). Ukazatelé na levý a pravý podstrom jsou buďto prázdné, nebo ukazují na další uzel. Hodnota klíče uzlu, na který ukazuje levý ukazatel, je menší než hodnota daného uzlu. V pravém podstromu je pak hodnota uzlu větší. Pokud je jeden z ukazatelů prázdný, druhý může ukazovat pouze na list. Není možné, aby ukazoval na podstrom obsahující více než jeden prvek. Hlavní a jediný uzel, který je nutno uchovat, abychom měli možnost přistoupit k celému stromu, se obvykle nazývá kořen. Pomocí kořene se můžeme dostat k jakémukoliv uzlu stromu. Klíč je prvek, podle kterého se prvek ukládá, vyhledává nebo maže. Většinou se jedná o celé číslo nebo řetězec. Data mohou být jakákoliv. Ať už se jedná jen o jméno a příjmení v nějakém seznamu nebo o objemná data. Váhový koeficient je číslo v rozmezí -2 až 2. Toto číslo udává vyváženost daného uzlu. Pokud se jedná o rozdíl výšky levého a pravého podstromu, při hodnotě 0 jsou oba podstromy stejně vysoké. Při hodnotě -1 nebo 2 je levý podstrom vyšší než pravý podstrom. Při kladných hodnotách 11
19 je vyšší pravý podstrom. Při hodnotě -2 a 2 je uzel nevyvážený a je nazýván kritickým uzlem. Pro tento uzel je nutné zavolat příslušnou rotaci, která upraví okolí tohoto uzlu. 4.2 Rotace Při operacích vložení a mazání může dojít k porušení vyváženosti uzlu a vzniku kritického uzlu. Proto se po provedení těchto operací provádí kontrola kritického uzlu. Pokud je jeho hodnota rovna 2 nebo -2, je provedena rotace. Jelikož celý AVL strom je postaven na ukazatelích jednoho prvku na další, je třeba provádět rotaci neboli změnu ukazatelů v určitém pořadí Rotace při rekurzivním zápisu Při rekurzivním zápisu operací nad AVL stromem není nutno uchovávat váhu jednotlivých uzlů, proto se provede pouze výměna ukazatelů a to tak, že se vytvoří nové pomocné uzly a pomocí nich se vymění ukazatele podle příslušné rotace. Funkci, která reprezentuje rotaci předáváme kritický uzel. Funkce vrací ukazatel na uzel, který zaujal místo kritického uzlu Rotace při nerekurzivním zápisu Pro rotace při nerekurzivním zápisu operací neplatí totéž co pro operace zapsané rekurzivně. Musíme si uchovávat váhu jednotlivých uzlů, proto provádíme rekonfiguraci zúčastněných uzlů. Je třeba také provést napojení na nadkritický uzel, případně změnit ukazatel na kořenový uzel. Rekonfigurace uzlů se liší u operace vložení a mazání. Jinak jsou tyto rotace pro obě operace totožné. Funkcí, která reprezentuje rotaci, předáváme odkaz na kritický uzel, odkaz na nadkritický uzel a odkaz na kořenový uzel. Funkce nevrací žádnou hodnotu. 12
20 4.2.3 Jednoduchá pravá rotace Uzel nad kritickým uzlem Váha: -1-2 A B Váha=0 Váha: 0-1 Váha=0 B T3 n T1 n A T1 n T2 n T2 n T3 n Obr Jednoduchá pravá rotace Tato rotace bude zavolána pokud vložíme například uzly s hodnotou 3, 2, 1. Jednoduchá pravá rotace zapsaná v jazyce C. Jedná se o rotaci při rekurzivním zápisu operací. tavltnodeptr SingleRightRotation (tavltnodeptr *Koren) { tavltnodeptr K1,K2; K2 = (*Koren); K1 = K2->LPtr; K2->LPtr = K1->RPtr; K1->RPtr = K2; } return K1; Jednoduchá levá rotace Jedná se o zrcadlovou verzi jednoduché pravé rotace. Tato rotace bude zavolána, pokud vložíme například uzly s hodnotou 1, 2, 3. 13
21 4.2.5 Dvojitá pravá rotace Konfiguraci rotace DLR lze překreslit do tvaru uvedeného vpravo Váha: -1-2 A A 0 1 B T3 n B T3 n T1 n T2 n T1 n T2 C Přidaný uzel má levou a pravou variantu T2' n-1 T2'' n-1 Obr AVL strom po vložení uzlu a před dvojitou pravou rotací. Váha: 0 Váha: 0-1 C Váha: 1 0 B A T1 n T2' n-1 T2'' n - 1 T3 n Obr AVL strom po provedení rotace. Tato rotace bude zavolána, pokud vložíme například uzly s hodnotou 3, 1, 2. 14
22 Jednoduchá pravá rotace zapsaná v jazyce C. Jedná se o rotaci při rekurzivním zápisu operací. tavltnodeptr DoubleRightRotation (tavltnodeptr *Koren) { tavltnodeptr K1,K2,K3; K3 = (*Koren); K1 = K3->LPtr; K2 = K1->RPtr; K1->RPtr = K2->LPtr; K3->LPtr = K2->RPtr; K2->LPtr = K1; K2->RPtr = K3; } return K2; Dvojitá levá rotace Jedná se o zrcadlově otočenou verzi dvojité pravé rotace. Tato rotace bude zavolána, pokud vložíme například uzly s hodnotou 1, 3, Vložení uzlu Rekurzivní zápis vkládání Funkci se předávají tři parametry. Kořenový uzel, klíč a data. Pokud je kořenový uzel prázdný, pak na toto místo vložíme vkládaný uzel. Pokud není tento uzel prázdný a klíč vkládaného uzlu je větší než klíč kořenového uzlu, zavolá se rekurzivně funkce vkládání, přičemž kořenovým uzlem se stává uzel, na který ukazuje levý ukazatel kořenového uzlu. V opačném případě je klíč vkládaného větší a zavolá se obdobně funkce pro pravý podstrom. Po vložení uzlu postupně vystupujeme z rekurze a kontrolujeme, zda je kritický uzel nevyvážený, a tím pádem je nutné zavolat jednu z rotací. Zde jsou případy, které mohou nastat, a název rotace, která bude zavolána. Váha udává rozdíl výšky pravého a levého podstromu. 15
23 Váha kořenového uzlu je rovna -2 a váha uzlu, na který ukazuje levý ukazatel, není rovna 1, zavolá se jednoduchá pravá rotace Váha kořenového uzlu je rovna -2 a váha uzlu na, který ukazuje levý ukazatel, je rovna 1, zavolá se dvojitá pravá rotace Váha kořenového uzlu je rovna 2 a váha uzlu, na který ukazuje levý ukazatel, je rovna -1, zavolá se jednoduchá levá rotace Váha kořenového uzlu je rovna 2 a váha uzlu, na který ukazuje levý ukazatel, není rovna -1, zavolá se dvojitá levá rotace Nerekurzivní zápis vkládání Nerekurzivní zápis je mnohem složitější než zápis rekurzivní, je však mnohem rychlejší, a proto je i přes svou složitost více využíván. Nerekurzivní verze musí používat mnoho proměnných, ať už pro uzel, který je kritický, pro otce kritického uzlu, pro aktivní uzel či pro uzel, který je nad aktivním. Funkci zde předávají stejné parametry jako při rekurzivním zápisu. Pokud je kořenový uzel prázdný, znamená to, že i celý strom je prázdný, a proto se pouze vytvoří první uzel s daným klíčem. Pokud není kořenový uzel prázdný, pak se dostaneme do cyklu, který slouží k vyhledání vhodného místa pro vložení nového uzlu. Tento cyklus musí především zajistit nastavení všech potřebných proměnných. Zanořování probíhá tak, že se aktivní uzel přepíše uzlem, na který sám ukazuje, tedy levým nebo pravým ukazatelem. Cyklus je řízen proměnnou typu boolean. Dokud je tato proměnná rovna hodnotě false, pak je tento cyklus opakován. Cyklus je ukončen tak, že se do této proměnné zapíše hodnota true. Toto se stane v případě, že se nalezlo místo, kam se uzel vloží, nebo v případě nalezení uzlu se stejným klíčem, který má mít i vkládaný uzel. Následuje cyklus, který projde uzly od kritického až po uzel, na který se napojí nový uzel. Jelikož při nerekurzivním zápisu musíme ukládat váhový koeficient, je třeba od kritického uzlu všem uzlům přičíst čí odečíst jedničku. Až dojdeme do místa, kde vložíme uzel, ukončíme cyklus. Následuje ověření kritického uzlu, na nutnost provedení rotace. Pro výběr rotace platí totéž co u rekurzivního zápisu. 4.4 Mazání uzlu Rekurzivní zápis mazání Funkci se předávají dva parametry. Kořenový uzel a klíč. Pokud je kořenový uzel prázdný, pak uzel se zadaným klíčem neexistuje. Pokud není tento uzel prázdný a klíč mazaného uzlu je větší než klíč kořenového uzlu, zavolá se rekurzivně funkce mazání, přičemž kořenovým uzlem se stává uzel, na který ukazuje levý ukazatel kořenového uzlu. V opačném případě je klíč vkládaného větší a zavolá se 16
24 obdobně funkce pro pravý podstrom. Pokud není uzel prázdný, větší ani menší, pak jsme mazaný uzel nalezli. Dále se dělí algoritmus na dvě varianty. Pokud má uzel oba podstromy neprázdné, pak je třeba vyhledat nejpravější uzel z levého podstromu. To znamená nalézt uzel s největším klíčem menším než je mazaný uzel. Poté se klíč a data mazaného uzlu přepíší hodnotami nejpravějšího uzlu a zavolá se funkce mazání pro levý podstrom mazaného uzlu pro klíč nejpravějšího uzlu. Pokud má uzel alespoň jeden podstrom prázdný, pak se pouze neprázdný podstrom napojí místo mazaného uzlu. Vždy při výstupu z rekurze se provádí kontrola daného uzlu na vyváženost a případně se zavolá rotace Nerekurzivní zápis mazání Nerekurzivní zápis mazání je nejsložitější operací nad AVL stromem. Je třeba využít zásobníku pro ukládání uzlů, kterými jsme při hledání mazaného uzlu prošli. Do zásobníku je třeba uložit kromě samotného uzlu i to, jestli jsme se dál vydali do levého či pravého podstromu. Samotný algoritmus obdobně jako u rekurzivního zápisu porovná klíč mazaného uzlu s klíčem aktivního uzlu. Při nerovnosti klíčů se zanořujeme stromem a postupně nasouváme uzly do zásobníku. Při rovnosti, a tím pádem nalezení uzlu, se opět rozdělí podle toho, zda má uzel alespoň jeden prázdný podstrom. Následující postup je totožný s rekurzivním zápisem. Po nalezení a smazaní uzlu se dostáváme do cyklu, který slouží ke kontrole vyváženosti. Vytahujeme postupně uzly ze zásobníku a kontrolujeme, zda je potřeba provést rotaci. 17
25 5 Animovaná demonstrace AVL stromu Animace jako taková by se měla dělit na dvě trochu odlišné části. První by byla spíše výuková, druhá demonstrační. Animace by měla být jednoduchá jak po stránce ovládaní, tak po stránce možností. Výuková část pouze ukáže studentovi, jak se přesunou uzly, nastane-li jedna z rotací. Uživatel si pouze vybere, kterou rotaci by rád viděl a s jakou rychlostí. Demonstrační část má ukázat uživateli, jak vypadá AVL strom po vložení či mazání jednotlivých uzlů. Uživatel může uzly přidávat a odebírat buďto se zadanou hodnotou klíče, popřípadě s náhodně vygenerovanou hodnotou. Může také samozřejmě smazat všechny uzly najednou. Opět může určit, s jakou rychlostí se bude animace provádět. Uživatel také může zobrazit průchod stromem třemi metodam, Pre-Order, In-Order a Post-Order. 5.1 Volba programovacího jazyku Volba programovacího jazyka byla prvním rozhodováním během psaní bakalářské práce. Vybíral jsem z actionscriptu zastoupeného Flashem, Javou a mezi C#. Flash většinou zaujme především svou jednoduchostí a možností rychle vytvořit pěknou grafickou animaci. Ovšem práce s tímto jazykem mi přišla dosti odlišná než to, co jsem se během minulých semestrů naučil. Proto jsem tento jazyk vyloučil poměrně brzy. Java je jeden z nejpoužívanějších a nejpopulárnějších programovacích jazyků na světě. Za vznikem stojí firma Sun Microsystems. Díky své přenositelnosti se používá na velkém množství zařízení. Mezi ně patří mobilní telefony, deskové počítače nebo čipové karty. Nevýhody Javy jsou především v absenci preprocesoru, což znamená, že se aplikace spouští pomaleji, jelikož je třeba aplikaci vždy přeložit. Další nevýhodou je paměťová náročnost při jednodušších aplikacích. Jazyk C# vznikl jako reakce společnosti Microsoft na jazyk Java. Je třeba říct, že se na internetu objevují články, které tvrdí, že Microsoft použil spoustu myšlenek právě z Javy. Použití pro formulářové aplikace ve Windows, databázové či webové aplikace. Jeho syntax je většinou přebraná z jazyka C. Jako vývojové prostředí se nejčastěji používá Microsoft Visual Studio. Pro tuto bakalářskou práci jsem zvolil jazyk C#. Hlavním důvodem byla znalost jazyka C jako takového. Navíc jsem byl seznámen se základy tohoto programovacího jazyku v předmětu Tvorba uživatelského rozhraní v pátém semestru studia. Jako programovací prostředí jsem si vybral Microsoft Visual Studio. Především pak pro jednoduchost a intuitivní jednání při ladění či samotném psaní kódu. 18
26 5.2 Implementace Implementace vycházela z návrhu popsaného na začátku této kapitoly. Nejprve byly rozmístěny ovládací prvky. Mezi ně patří tlačítko pro přepínání výukové a demonstrační části, prvky ovládající AVL strom, průchod stromem a posuvník pro změnu rychlosti animace. Uzly a metody nad nimi jsou definovány ve třídě Uzel. Tato třída zajišťuje funkce samotného stromu. Obsahuje metody pro vložení a mazání uzlu, pomocné funkce pro tyto operace, dále pak jednotlivé rotace, metodu pro vykreslení uzlu, přepočtení pozice jednotlivých uzlů, přičítání bodu při vodorovném pohybu uzlu, zjišťování, zda byl vybrán uzel, a metody pro průchod stromem. Metoda vykreslení nejprve vykresluje na plátno úsečky, které demonstrují propojení jednotlivých uzlů, a následně se zanořuje, dokud nenarazí na prázdný ukazatel. Při výstupu z rekurze se vykreslují jednotlivé uzly. Uzel je tvořen podkladem, který zastupuje obrázek, a textem, který zobrazuje hodnotu klíče daného uzlu. Text je centrován vodorovně i svisle do středu obrázku. AVL strom je binární strom. Toto je třeba brát v potaz při vytváření algoritmu pro výpočet vodorovné vzdálenosti mezi dvěma uzly. Nejjednodušeji se to dá realizovat vzorcem, kde se vzdálenost zvětšuje exponenciálně podle výšky podstromu. Tvar vzorce pro výpočet uzlu levého podstromu: X = X1-20 * 2výška podstromu X je X-ová souřadnice daného uzlu a X1 otce daného uzlu. Tento vzorec používá konstantu 20 vzhledem k šířce uzlu. Pro pravý podstrom se pouze změní znaménko ze záporného na kladné. Druhou třídou je třída form. V této třídě jsou spravovány a ošetřovány především zásahy uživatelů. Je třeba definovat funkce při stisku tlačítek, kliknutí do oblasti vykreslování a podobně. Prvním tlačítkem je tlačítko pro změnu výukové a demonstrační části aplikace. Toto tlačítko pouze skryje, respektive zobrazí ovládací prvky, které jsou potřebné v jedné či druhé části. Textové pole je pouze dvouciferné, lze zadávat pouze hodnoty Nelze zadat jiné znaky než číslice 0-9. Při stisku tlačítka Vložit nebo Smazat se ověří zda není Textové pole prázdné. Pokud ano, vloží se nebo smaže uzel s náhodně vygenerovanou hodnotou z intervalu Nastaví se také výstupní text, který se zobrazí na stavovém řádku. Při kliknutí myší do vykreslované oblasti dochází k zavolání metody třídy Uzel, která zjistí, zda jsme vybrali některý z uzlů. Pokud ano, tento uzel se vykreslí s jiným barevným podkladem, a tím pádem se jeví jako vybraný. Při kliknutí kdekoliv mimo stromovou strukturu se všechny uzly odznačí. Animace je vytvářena přesunem animovaného objektu o jeden pixel. Toto je využito u rotací, kde je třeba rotovat zúčastněné uzly a jejich podstromy. Pokud dojde k situaci, kdy je třeba rotovat část stromu, je aktivován čítač, který je aktivní, dokud všechny uzly nejsou na pozici, na které mají 19
27 být. Během čítání je pro každý uzel, který uchovává jeho současnou pozici, volána funkce presun, ve které se uzel posune o jeden pixel směrem k cílové pozici. Ta je uchovávána v proměnné určené pouze pro tento účel. Pokud dosáhne strom výšky 5, zobrazí se vodorovný posuvník, který umožní zobrazení stromu s větším počtem prvků. 5.3 Uživatelské rozhraní Obr. 5.3 Úvodní obrazovka aplikace Rozhraní je navrženo tak, aby byla co možná největší plocha pro vykreslovaní AVL stromu. V levé části nalezneme všechna potřebná tlačítka pro manipulaci s AVL stromem. Zobrazení, které vidíme na obrázku 5.3, zobrazuje demonstrační část aplikace. Výuková část je obdobná, proto není nutné ji zde také ukazovat. Uživatel má možnost zadávat hodnotu uzlu pomocí textového pole. Pokud v tomto poli není hodnota zadána, aplikace přidělí novému či mazanému uzlu náhodnou hodnotu klíče. Strom je vykreslován na střed plátna. X-ová souřadnice bodu synovského uzlu je určena jeho podstromem, jak je uvedeno výše. Y-ová souřadnice je tvořena pouze součtem otcovské souřadnice a konstanty. Stavový řádek zobrazuje právě provedenou operaci. Při vložení nebo mazání se nám zobrazí hodnota prvku daného uzlu. Pokud vkládaný uzel již existuje nebo mazaný uzel neexistuje, pak se 20
28 nám vypíše tato informace také. Při průchodu stromem se nám postupně označují uzly a na stavovém řádku se vypisují jejich hodnoty tak, jak je postupně procházíme. Při změně rychlosti se na stavovém řádku zobrazuje aktuální nastavená rychlost. 21
29 6 Závěr Úkolem této bakalářské práce bylo přiblížení studijních materiálů studentům předmětu Algoritmy více zaměřených na jazyk C. Oporu jsem přepsal podle potřeby a v ní i všechny příklady kódu. Převedl jsem všechny operace v nerekurzivním zápise nad AVL stromu. Vytvořil jsem rekurzivní obdobu těchto operací. Všechny funkce jsou plně funkční a odladěny na školním serveru Merlin. Vytvořil jsem aplikaci pro demonstrační animaci operací nad AVL stromem. Aplikace je psána v jazyce C# a poskytuje ucelený náhled na strom jako takový i na jednotlivé rotace. Pomocí této animace by měl být každý student schopen pochopit problematiku AVL stromu během několika minut. Pro spuštění aplikace je třeba mít nainstalovaný.net framework 2.0, který je součástí novějších aktualizací operačního systému Microsoft Windows. Práce na této bakalářské práci probíhala již od čtvrtého semestru mého studia. Zpočátku se jednalo pouze o informativní schůzky s profesorem Honzíkem, následoval přepis opory a nerekurzivního zápisu operací v následujícím semestru. Práce v tomto semestru zahrnovala tvorbu rekurzivního zápisu operací a tvorbu aplikace. V průběhu celé práce probíhaly konzultace s profesorem Honzíkem. Rozšíření této bakalářské práce bych viděl ve vytvoření uceleného výukového programu pro demonstraci všech metod a algoritmů vyučovaných v předmětu Algoritmy. Tyto demonstrace by také mohly zobrazovat právě prováděný kód, a to jak v jazyce Pascal, tak v jazyce C. Popřípadě by tato aplikace mohla být multi-jazyková. Zadání obsahuje také tvorbu kontrolních otázek a otázek ke zkoušce. Tyto body zůstaly nesplněny po konzultaci s vedoucím bakalářské práce. AVL strom není probírán v předmětu Algoritmy tak důkladně, aby byl předmětem zkoušení. 22
30 Literatura [1] Honzík J.M.: Algoritmy. Studijní opora pro předmět Algoritmy, Elektronický text, FIT VUT v Brně [2] Honzík J.M. a kolektiv: Vybrané kapitoly z programovacích technik. Skriptum VUT [3] Wikipedie, free encyclopedia [online]. AVL-TREE [cit ]. Dostupný z WWW: < [4] Wikipedie, Otevřená encyklopedie [online] Dostupný z WWW: < 23
31 Seznam příloh Příloha 1. CD 24
Příloha 1. Náleţitosti a uspořádání textové části VŠKP
Příloha 1 Náleţitosti a uspořádání textové části VŠKP Náležitosti a uspořádání textové části VŠKP je určeno v tomto pořadí: a) titulní list b) zadání VŠKP c) abstrakt v českém a anglickém jazyce, klíčová
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY NÁVRH STRATEGIE ROZVOJE MALÉ RODINNÉ FIRMY THE DEVELOPMENT OF SMALL FAMILY OWNED COMPANY
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV FACULTY OF BUSINESS AND MANAGEMENT INSTITUT OF NÁVRH STRATEGIE ROZVOJE MALÉ RODINNÉ FIRMY THE DEVELOPMENT OF SMALL
Bakalářská práce bakalářský studijní obor Teleinformatika
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav telekomunikací Bakalářská práce bakalářský studijní obor Teleinformatika Student: Bílek Petr ID: 78462 Ročník: 3
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV MIKROELEKTRONIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF
Metodický pokyn č. 1/09 pro odevzdávání, ukládání a zpřístupňování vysokoškolských závěrečných prací
Metodický pokyn č. 1/09 pro odevzdávání, ukládání a zpřístupňování vysokoškolských závěrečných prací Článek I. Úvodní ustanovení (1) Pro účely této směrnice se vysokoškolskými závěrečnými pracemi rozumí
DIPLOMOVÁ PRÁCE (MMSE) Pokyny pro vypracování
Magisterský studijní obor 2. ročník ELEKTRONIKA A SDĚLOVACÍ TECHNIKA Akademický rok 2011/2012 FEKT VUT v Brně DIPLOMOVÁ PRÁCE (MMSE) Pokyny pro vypracování 1. Diplomová práce musí být svázána v pevných
NÁVRH ŘEŠENÍ FLUKTUACE ZAMĚSTNANCŮ VE SPOLEČNOSTI
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV FINANCÍ FACULTY OF BUSINESS AND MANAGEMENT INSTITUTE OF FINANCES NÁVRH ŘEŠENÍ FLUKTUACE ZAMĚSTNANCŮ VE SPOLEČNOSTI
Algoritmy a datové struktury
Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu
Semestrální práce 2 znakový strom
Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového
Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.
Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,
DIPL 2. Stručný manuál pro vysokoškolské kvalifikační práce.
DIPL 2 Stručný manuál pro vysokoškolské kvalifikační práce. Obsah STUDENTI VYTVOŘENÍ VOLNÉHO TÉMATU VŠKP VÝBĚR TÉMATU VŠKP Z VOLNÝCH TÉMAT KONTROLA ZADÁNÍ TÉMATU FORMÁLNÍ ÚPRAVA VYPLNĚNÍ ÚDAJŮ ELEKTRONICKÉ
SMĚRNICE REKTORA Č. 9/2007
Vysoké učení technické v Brně Rozdělovník: rektor, děkani fakult, ředitelé dalších součástí Zpracoval: doc. RNDr. Miloslav Švec, CSc. SMĚRNICE REKTORA Č. 9/2007 ÚPRAVA, ODEVZDÁVÁNÍ A ZVEŘEJŇOVÁNÍ VYSOKOŠKOLSKÝCH
AUTOMATIZACE CHYB OBJEDNÁVKOVÉHO SYSTÉMU AUTOMATION OF ORDERING SYSTEM ERRORS
VYSOKÉ UENÍ TECHNICKÉ V BRN BRNO UNIVERSITY OF TECHNOLOGY FAKULTA PODNIKATELSKÁ ÚSTAV INFORMATIKY FACULTY OF BUSINESS AND MANAGEMENT INSTITUT OF INFORMATICS AUTOMATIZACE CHYB OBJEDNÁVKOVÉHO SYSTÉMU AUTOMATION
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STAVEBNÍ ÚSTAV POZEMNÍCH KOMUNIKACÍ FACULTY OF CIVIL ENGINEERING INSTITUTE OF ROAD STRUCTURES PŘELOŽKA SILNICE II/150 DOMAŽELICE BYSTŘICE
AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující
Stromy 2 AVL AVL stromy jména tvůrců stromů: dva Rusové Adelson-Velskii, Landis vyvážené binární stromy pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1
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
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 Umíme z minulé hodiny Implementace zásobníku a fronty pomocí
Prohledávání do šířky = algoritmus vlny
Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé
Microsoft Office. Excel vyhledávací funkce
Microsoft Office Excel vyhledávací funkce Karel Dvořák 2011 Vyhledávání v tabulkách Vzhledem ke skutečnosti, že Excel je na mnoha pracovištích používán i jako nástroj pro správu jednoduchých databází,
Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)
13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací
DIPL 2. Příloha č. 1 ke Směrnici rektora č. 120/08 o vysokoškolských kvalifikačních pracích. Stručný manuál pro vysokoškolské kvalifikační práce.
Příloha č. 1 ke Směrnici rektora č. 120/08 o vysokoškolských kvalifikačních pracích DIPL 2 Stručný manuál pro vysokoškolské kvalifikační práce. Mgr. Martin Svitanek Obsah STUDENTI I. FÁZE ZADÁVÁNÍ VŠKP
Algoritmy výpočetní geometrie
Algoritmy výpočetní geometrie prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
Postupy práce se šablonami IS MPP
Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS PŘÍPRAVA DOMÁCÍCH
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz
Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)
Technologické postupy práce s aktovkou IS MPP
Technologické postupy práce s aktovkou IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Technologické postupy práce
Rekurzivní algoritmy
Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS
VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY
Jméno a příjmení: Školní rok: Třída: VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, 407 47 Varnsdorf 2007/2008 VI2 PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY Petr VOPALECKÝ Číslo úlohy: Počet
Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP
Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:
Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
Datové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz
aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz Operační systém Windows - první operační systém Windows byl představen v roce
Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.
Seznamy a stromy Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Klíčové pojmy: Seznam, spojový seznam, lineární seznam, strom, list, uzel. Úvod
FAKULTA REGIONÁLNÍHO ROZVOJE A MEZINÁRODNÍCH STUDIÍ MENDELOVY UNIVERZITY V BRNĚ. Vyhláška děkana č. 4/2014. o bakalářských pracích
FAKULTA REGIONÁLNÍHO ROZVOJE A MEZINÁRODNÍCH STUDIÍ MENDELOVY UNIVERZITY V BRNĚ Brno 7. ledna 2014 č.j.: 258/2014-391 Vyhláška děkana č. 4/2014 o bakalářských pracích Článek 1 Postup zadávání bakalářských
Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace
Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
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
Stromy úvod 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 Neorientovaný strom Orientovaný strom Kořenový orientovaný
a) b) c) Radek Mařík
2012-03-20 Radek Mařík 1. Čísla ze zadané posloupnosti postupně vkládejte do prázdného binárního vyhledávacího stromu (BVS), který nevyvažujte. Jak bude vypadat takto vytvořený BVS? Poté postupně odstraňte
Lekce 01 Úvod do algoritmizace
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním
Zadání maturitní práce ve školním roce 2016/2017
Zadání maturitní práce ve školním roce 2016/2017 vydané podle 15 odst. 1 vyhlášky č. 177/2009 Sb., o bližších podmínkách ukončování vzdělávání ve středních školách maturitní zkouškou, ve znění pozdějších
2. úkol MI-PAA. Jan Jůna (junajan) 3.11.2013
2. úkol MI-PAA Jan Jůna (junajan) 3.11.2013 Specifikaci úlohy Problém batohu je jedním z nejjednodušších NP-těžkých problémů. V literatuře najdeme množství jeho variant, které mají obecně různé nároky
Úvod do filtrace, Quick filtr
Příručka uživatele systému Památkový katalog Úvod do filtrace, Quick filtr verze 1.x.x Autorská práva Copyright 2015 MUSOFT.CZ, s.r.o.. Všechna práva vyhrazena. Tato příručka je chráněna autorskými právy
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ SMĚRNICE Č. 38/2017 ÚPRAVA, ODEVZDÁVÁNÍ, ZVEŘEJŇOVÁNÍ A UCHOVÁVÁNÍ VYSOKOŠKOLSKÝCH KVALIFIKAČNÍCH PRACÍ
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Datum vydání: 1. 5. 2017 Účinnost: 1. 5. 2017 Odpovědnost: Odbor studijních záležitostí Rektorátu Závaznost: všechny součásti VUT Vydává: rektor VUT Zrušuje: Směrnici rektora
JRm verze 2.0.0. Aplikace. Instalace. Ovládání
1 JRm verze 2.0.0 Aplikace JRm (Jízdní řády pro mobilní telefony) je aplikace pro vyhledávání spojení a zobrazování jízdních řádů MHD. Je určena pro telefony podporující Javu 2.0. MIDP 2.0 a zpracování
Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012
Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18
Nephele systém. Akademie výtvarných umění v Praze. Ústav teorie informace a automatizace AV ČR, v.v.i. Ústav anorganické chemie AV ČR, v.v.i.
Nephele systém Akademie výtvarných umění v Praze Ústav teorie informace a automatizace AV ČR, v.v.i. Ústav anorganické chemie AV ČR, v.v.i. RNDr. Mgr. M. Beneš, RNDr. B. Zitová, PhD., RNDr. J. Hradilová,
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
binární vyhledávání a bst Karel Horák, Petr Ryšavý 23. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Naimplementujte binární vyhledávání. Upravte metodu BinarySearch::binarySearch. 1 Příklad 2 Mysĺım
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky
Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání
Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou
Využití tabulkového procesoru MS Excel
Semestrální práce Licenční studium Galileo srpen, 2015 Využití tabulkového procesoru MS Excel Ing Marek Bilko Třinecké železárny, a.s. Stránka 1 z 10 OBSAH 1. ÚVOD... 2 2. DATOVÝ SOUBOR... 2 3. APLIKACE...
FAKULTA REGIONÁLNÍHO ROZVOJE A MEZINÁRODNÍCH STUDIÍ MENDELOVY UNIVERZITY V BRNĚ. Vyhláška děkana č. 5/2014. o diplomových pracích
FAKULTA REGIONÁLNÍHO ROZVOJE A MEZINÁRODNÍCH STUDIÍ MENDELOVY UNIVERZITY V BRNĚ Brno 7. ledna 2014 č.j.: 259/2014-391 Vyhláška děkana č. 5/2014 o diplomových pracích Článek 1 Postup zadávání diplomových
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)
Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog
VISUAL BASIC. Přehled témat
VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat
Inovace výuky prostřednictvím šablon pro SŠ
Název projektu Číslo projektu Název školy Autor Název šablony Název DUMu Stupeň a typ vzdělávání Vzdělávací oblast Vzdělávací obor Tematický okruh Inovace výuky prostřednictvím šablon pro SŠ CZ.1.07/1.5.00/34.0748
EQAS Online. DNY kontroly kvality a speciálních metod HPLC, Lednice 8.-9.11.2012
EQAS Online DNY kontroly kvality a speciálních metod HPLC, Lednice 8.-9.11.2012 Co je program EQAS Online Nový program od Bio-Radu pro odesílání výsledků externího hodnocení kvality Přístupný je prostřednictvím
Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620
Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 1. Vymezení pojmů Strom: Strom je takové uspořádání prvků - vrcholů, ve kterém lze rozeznat předchůdce - rodiče a následovníky - syny.
Právní kontrola Mgr. Michal Prokop právník Odpovědný pracovník Ing. Aleš Kocourek, Ph.D. prorektor
Název Směrnice rektora TUL č. 5/2018 Jednotná úprava a zveřejňování bakalářských, diplomových, disertačních, rigorózních a habilitačních prací Jméno Funkce Datum Podpis Garant doc. RNDr. Miroslav Brzezina,
Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT
Algoritmizace- úvod. Ing. Tomáš Otáhal
Algoritmizace- úvod Ing. Tomáš táhal Historie 9. století perský matematik a astronom Mohammed Al-Chorezím v latinském přepise příjmení= algoritmus Nejstarší algoritmus Euklides řecký matematik, 4. století
Reliance 3 design OBSAH
Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních
Nemocnice. Prvotní analýza a plán projektu
Nemocnice Projekt do předmětu AIS Prvotní analýza a plán projektu Lukáš Pohl, xpohll00, xkosti03 Jan Novák, xnovak79 2009/2010 1 Neformální specifikace FN potřebuje informační systém, který bude obsahovat
přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:
Metody řazení ve vnitřní a vnější paměti. Algoritmy řazení výběrem, vkládáním a zaměňováním. Heapsort, Shell-sort, Radix-sort, Quicksort. Řazení sekvenčních souborů. Řazení souborů s přímým přístupem.
Kontingenční tabulky v MS Excel 2010
Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data
IB111 Programování a algoritmizace. Programovací jazyky
IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím
UNIVERZITA PARDUBICE Směrnice č. 13/2007 ve znění dodatku č. 1 Pravidla pro zveřejňování závěrečných prací a jejich základní jednotnou formální úpravu
Věc: Působnost pro: Účinnost od: 1. října 2007 Číslo jednací: Předkládá: UNIVERZITA PARDUBICE Směrnice č. 13/2007 ve znění dodatku č. 1 Pravidla pro zveřejňování závěrečných prací a jejich základní jednotnou
Reranking založený na metadatech
České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Maturitní otázky z předmětu PROGRAMOVÁNÍ
Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti
Stromy. Jan Hnilica Počítačové modelování 14
Stromy Jan Hnilica Počítačové modelování 14 1 Základní pojmy strom = dynamická datová struktura, složená z vrcholů (uzlů, prvků) propojených hranami hrany chápeme jako orientované, tzn. vedou z uzlu A
ON-LINE PORADA PRO TEST
ON-LINE PORADA PRO TEST PŘIHLÁŠENÍ... 1 HOME... 2 NAJDI... 2 ODHLÁŠENÍ... 2 Nové téma... 2 Zpět... 3 Detail tématu... 4 Odpověď... 4 Vybrat soubor... 4 Další přílohu... 5 Uložit... 6 Vaše odpověď/ reakce...
Vyhledávací stromy. Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání.
Vyhledávací stromy Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání. Vytvářejí se vždy nad již existující datovou strukturou (zpravidla tabulkou). Vyhledávací stromy můžeme rozdělit
Elektronické zpracování dotazníků AGEL. Verze 2.0.0.1
Elektronické zpracování dotazníků AGEL Verze 2.0.0.1 1 Obsah 2 Přihlášení do systému... 1 3 Zápis hodnot dotazníků... 2 3.1 Výběr formuláře pro vyplnění dotazníku... 2 3.2 Vyplnění formuláře dotazníku...
Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.
Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?
Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu
zobrazuje názvy polí, vložené hodnoty jednotlivých záznamů, lze v něm zadávat data (přidávat záznamy) v návrhovém zobrazení:
DUM 02 téma: Tabulky v MS Access ze sady: 3 tematický okruh sady: Databáze ze šablony: 07 - Kancelářský software určeno pro: 2. ročník vzdělávací obor: vzdělávací oblast: číslo projektu: anotace: metodika:
Maturitní témata Školní rok: 2015/2016
Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní
Program a životní cyklus programu
Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
OBSAHOVÁ STRÁNKA DP, BP
OBSAHOVÁ STRÁNKA DP, BP Obsahová stránka BP i DP se řídí: 1. Směrnicí rektora č. 9/2007 Úprava, odevzdávání a zveřejňování vysokoškolských kvalifikačních prací na VUT v Brně 2. Směrnicí děkana č. 2/2007
Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.
Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA BAKALÁŘSKÁ PRÁCE 2002 SEDLÁK MARIAN - 1 - OSTRAVSKÁ UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA KATEDRA INFORMATIKY A POČÍTAČŮ Vizualizace principů výpočtu konečného
UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií
UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Katedra softwarových technologií Softwarový nástroj pro tvorbu a správu genealogických dat Manuál pro programátory Bc. František Hlaváček Součást
Programátorská dokumentace
Programátorská dokumentace Požadavky Cílem tohoto programu bylo představit barevné systémy, zejména převody mezi nejpoužívanějšími z nich. Zároveň bylo úkolem naprogramovat jejich demonstraci. Pro realizaci
Elegantní algoritmus pro konstrukci sufixových polí
Elegantní algoritmus pro konstrukci sufixových polí 22.10.2014 Zadání Obsah Zadání... 3 Definice... 3 Analýza problému... 4 Jednotlivé algoritmy... 4 Algoritmus SA1... 4 Algoritmus SA2... 5 Algoritmus
Lokality a uživatelé
Administrátorský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 15.října 2013
ŠVP Gymnázium Ostrava-Zábřeh. 4.8.16. Úvod do programování
4.8.16. Úvod do programování Vyučovací předmět Úvod do programování je na naší škole nabízen v rámci volitelných předmětů v sextě, septimě nebo v oktávě jako jednoletý dvouhodinový kurz. V případě hlubšího
Dynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.
Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků
Vyvažování a rotace v BVS, všude se předpokládá AVL strom
Vyvažování a rotace v BVS, všude se předpokládá AVL strom 1. Jednoduchá levá rotace v uzlu u má operační složitost a) závislou na výšce levého podstromu uzlu u b) mezi O(1) a Θ(n) c) závislou na hloubce
Převod na nový školní rok
Převod na nový školní rok Funkce pro převod na nový školní je součástí systému SAS od jeho počátku. Umožňuje převést třídy a žáky ze školního roku, který končí, do dalšího školního roku. Před tím, než
Modul Konfigurace. 2006... MTJ Service, s.r.o.
Modul Konfigurace Modul Konfigurace Představení Menu konfigurace sdružuje všechny konfigurační příkazy k celému systému Soft-4-Sale. Dále konfigurace kopíruje jednotlivé moduly systému tzn. že existuje
Monitoring mikroregionů a jejich rozvojových dokumentů. imr. On-line systém evidence mikroregionů a jejich rozvojových dokumentů
Monitoring mikroregionů a jejich rozvojových dokumentů imr On-line systém evidence mikroregionů a jejich rozvojových dokumentů Ministerstvo pro místní rozvoj Ústav územního rozvoje Brno, 2006 OBSAH Úvod
Výukový materiál zpracován v rámci projektu EU peníze školám
Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ. 1.07/1.5.00/34.0637 Šablona III/2 Název VY_32_INOVACE_39_Algoritmizace_teorie Název školy Základní škola a Střední
Informační systém Národní soustavy kvalifikací (IS NSK) Návod na obsluhu interního webu - tvorba kvalifikačního a hodnoticího standardu
Informační systém Národní soustavy kvalifikací (IS NSK) Návod na obsluhu interního webu - tvorba kvalifikačního a hodnoticího standardu 28.5.2013 Obsah Interní web IS NSK tvorba standardu Obsah... 2 Návod
Excel tabulkový procesor
Pozice aktivní buňky Excel tabulkový procesor Označená aktivní buňka Řádek vzorců zobrazuje úplný a skutečný obsah buňky Typ buňky řetězec, číslo, vzorec, datum Oprava obsahu buňky F2 nebo v řádku vzorců,