Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Rozměr: px
Začít zobrazení ze stránky:

Download "Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132"

Transkript

1 Ak. rok 2015/2016 vbp 1. ze 132

2 Ing. Vladimír Beneš, Ph.D. vedoucí katedry Petrovický K101 katedra informatiky a kvantitativních metod vbenes@bivs.cz Telefon: , Konzultační hodiny: středa 15:45 17:45 Ak. rok 2015/2016 vbp 2. ze 132

3 Hodinová dotace Prezenční studium 1 semestr 1/2 KZ 6 kreditů Kombinované studium 1 semestr 12/4 KZ 6 kreditů Ak. rok 2015/2016 vbp 3. ze 132

4 Požadavky ke klasifikovanému zápočtu Prezenční studium Kombinované studium Kompletní vypracování dané úlohy (přihlášení v ISu) Analýza úlohy Algoritmizace (Odladěný zdrojový kód programu v jazyce C++) Ak. rok 2015/2016 vbp 4. ze 132

5 Studijní literatura Literatura základní HEROUT, Pavel. Učebnice jazyka C. České Budějovice : Kopp, ISBN BENEŠ, Vladimír. Programování I. Elektronická studijní opora. Praha : BIVŠ, PRATA, Stephen. Mistrovství v C++. Brno : Computer Press, ISBN Literatura doporučená KADLEC, Václav. Učíme se programovat v jazyce C. Praha : Computer Press, ISBN MILKOVÁ, E. a kol. Algoritmy, základní konstrukce v příkladech a jejich vizualizace. Hradec Králové : Gaudeamus, KNUTH, Donald, E. Umění programování.1. díl, Základní algoritmy. Brno : Computer Press, 2008,. ISBN Ak. rok 2015/2016 vbp 5. ze 132

6 Obsah Algoritmus Datové struktury Odvozené datové struktury Třídění Ak. rok 2015/2016 vbp 6. ze 132

7 ALGORITMUS Ak. rok 2015/2016 vbp 7. ze 132

8 Algoritmus Algoritmus je základní matematický pojem. Nelze jej tedy definovat. Musíme se tedy uchýlit pouze k opisu. V případě PROGRAMOVÁNÍ jde o transformaci množiny vstupních dat na množinu výstupních dat. Ak. rok 2015/2016 vbp 8. ze 132

9 Algoritmus Opisná DEFINICE Je to postup, jak řešit danou úlohu pomocí počítače. Sestává z posloupnosti jednoduchých předem stanovených kroků (ekementárních operací, instrukcí) a vede od vstupních měnitelných údajů až k žádaným výstupním údajům (výsledku). Ak. rok 2015/2016 vbp 9. ze 132

10 Vlastnosti algoritmu Je ELEMENTÁRNÍ Skládá se z konečného počtu jednoduchých (snadno realizovatelných) činností, které označujeme jako kroky. Ak. rok 2015/2016 vbp 10. ze 132

11 Vlastnosti algoritmu Je DETERMINOVANÝ Po každém kroku lze určit, zda popisovaný proces skončil. Pokud neskončil, pak musí být dáno, kterým krokem má pokračovat. Ak. rok 2015/2016 vbp 11. ze 132

12 Vlastnosti algoritmu Je KONEČNÝ Počet opakování jednotlivých kroků je vždy konečný. Algoritmus tedy musí skončit po konečném počtu kroků. Poznámka: příklad s instrukcí 1 GOTO 1 Ak. rok 2015/2016 vbp 12. ze 132

13 Vlastnosti algoritmu Je REZULTATIVNÍ Vede ke správnému výsledku. Ak. rok 2015/2016 vbp 13. ze 132

14 Vlastnosti algoritmu Je HROMADNÝ Algoritmus můžeme použít k řešení celé (velké) skupiny (třídy) podobných úloh. Poznámka: např. řešení kvadratické rovnice, soustavy lineárních algebraických rovnic Ak. rok 2015/2016 vbp 14. ze 132

15 Poznámka 1. Pojem algoritmus se dá formalizovat např. pomocí matematické konstrukce označované jako Turingův stroj procesorová jednotka, tvořená konečným automatem, program ve tvaru pravidel přechodové funkce, pravostranně nekonečné páska pro zápis mezivýsledků. Churchova teze Ke každému algoritmu existuje ekvivalentní Thuringův stroj. Ak. rok 2015/2016 vbp 15. ze 132

16 Poznámka 1. Konečný automat = velice jednoduchý počítač, který může být v jednom z několika stavů, mezi kterými přechází na základě symbolů, které čte ze vstupu Ak. rok 2015/2016 vbp 16. ze 132

17 Poznámka 2. Pojem algoritmus se dá formalizovat také např. pomocí teorie parciálně rekurzivních funkcí v teorii vyčíslitelnosti se takto označují funkce v jistém smyslu složitější než tzv. primitivně rekurzivní funkce Ak. rok 2015/2016 vbp 17. ze 132

18 Metoda SHORA DOLŮ a ZDOLA NAHORU 1. Daný problém musíme vyřešit. 2. Známe-li řešení, potřebujeme jej zapsat jako algoritmus 3. Postup řešení rozkládáme na jednodušší operace elementární kroky tj. metoda SHORA DOLŮ Poznámka: řešení kvadratické rovnice (analýza a řešení) Ak. rok 2015/2016 vbp 18. ze 132

19 Metoda SHORA DOLŮ a ZDOLA NAHORU Kromě metody SHORA DOLŮ se setkáváme i s metodou ZDOLA NAHORU: Postupně z elementárních kroků vytváříme prostředky, které umožní zvládnout daný problém Vytváříme nový procesor tím, že ho učíme nové operace Použijeme vyšší programovací jazyk (procedury, knihovna procedur nebo systém pro vytváření programů (CASE)) Ak. rok 2015/2016 vbp 19. ze 132

20 Základní složky (konstrukce) algoritmu Posloupnost (sekvence) tvořena jedním nebo několika kroky (provedou se právě jednou v daném pořadí) nemusí jít o kroky elementární dalším zjemňováním se mohou rozpadnout na součásti, které samy tvoří posloupnosti, cykly nebo podmínky Ak. rok 2015/2016 vbp 20. ze 132

21 Základní složky (konstrukce) algoritmu Cyklus (iterace) část algoritmu, která se opakuje dokud je splněna podmínka opakování cyklus se vždy skládá z podmínky opakování a z těla cyklu (tj. operací, které se opakují) vyhodnocení podmínky může být před provedením (v C while nebo for), resp. po skončení těla cyklu (v C do-while) nebo i uvnitř těla cyklu (podmíněný skok nebo kombinace podmínky a break) Ak. rok 2015/2016 vbp 21. ze 132

22 Základní složky (konstrukce) algoritmu Podmíněná operace (selekce) představuje vždy větvení algoritmu tvořena podmínkou a 1, 2 nebo více výběrovými složkami pokud je jedna ze složek vybrána, provede se jednou v C příkazy if a switch (v kombinaci s příkazem break) Ak. rok 2015/2016 vbp 22. ze 132

23 Základní složky (konstrukce) algoritmu Podprogram opakuje-li se určitá část algoritmu na několika místech (může používat různá data) na elementární kroky ji rozložíme pouze jednou (např. narazíme-li na ni poprvé) na ostatních místech se na ni odvoláme jako na dílčí algoritmus nebo podprogram (procedura, resp. funkce) Ak. rok 2015/2016 vbp 23. ze 132

24 Algoritmus a data struktura vstupních, výstupních, ale i vnitřních dat spoluurčuje strukturu programu posloupnosti datových položek různých druhů odpovídá posloupnost různých příkazů Poznámka: Přirozeným prostředkem pro zpracování rekurzivních datových struktur (stromy nebo seznamy) jsou obvykle rekurzivní algoritmy! Ak. rok 2015/2016 vbp 24. ze 132

25 Časová a paměťová náročnost algoritmů potřebné množství operační paměti doba pro provedení algoritmu rozsah vstupních údajů celkový počet elementárních operací (instrukcí) Poznámka: Ve skutečnosti zpravidla stačí orientovat se podle vybraných skupin instrukcí, které jsou časově nejnáročnější (if)! Ak. rok 2015/2016 vbp 25. ze 132

26 Popis algoritmů Jazyk pro popis programů Program Description Language (PDL) slovní popis algoritmu, dnes velmi častý lehce upravený programovací jazyk, např. Pascal (Pseudopascal) Poznámka: Tradičním jazykem pro popis algoritmů býval Algol 60. Slovní popis programu se může stát základem dobrého komentáře k výslednému programu. Ak. rok 2015/2016 vbp 26. ze 132

27 Popis algoritmů Strukturogramy grafické znázornění algoritmu tvarově i barevně odlišné znázornění (sekvence, iterace, selekce) Poznámka: Základem obdélník; v záhlaví označení algoritmu nebo dílčí operace; uvnitř kroky, které algoritmus tvoří Ak. rok 2015/2016 vbp 27. ze 132

28 Popis algoritmů Vývojové diagramy klasický prostředek (ČSN , ÚNM, Praha 1974) graficky náročné (úpravy hotových VD) Poznámka: Spíše než logickou strukturu programu zdůrazňují druh operací. Ak. rok 2015/2016 vbp 28. ze 132

29 Vývojové diagramy mezní značka (začátek, resp. konec algoritmu) sekvence předem definovaná činnost (podprogram) selekce (rozhodování) Ak. rok 2015/2016 vbp 29. ze 132

30 Vývojové diagramy iterace (začátek, resp. konec iteračního cyklu) vstup, resp. výstup dat spojka komentář (poznámka) Ak. rok 2015/2016 vbp 30. ze 132

31 Vývojové diagramy obrazce (značky) propojeny čarami (svisle, vodorovně) implicitní směr shora dolů, zleva doprava, jinak šipky Ak. rok 2015/2016 vbp 31. ze 132

32 PŘÍKLAD Výpočet kořenů (reálných i komplexních) kvadratické rovnice ax 2 + bx + c = 0, kde a 0 Vstupní data: a, b, c Výstupní data: x 1, x 2 Ak. rok 2015/2016 vbp 32. ze 132

33 PŘÍKLAD Výpočet kořenů (reálných i komplexních) kvadratické rovnice ax 2 + bx + c = 0, kde a 0 Vstupní data: a, b, c Výstupní data: x 1, x 2 Ak. rok 2015/2016 vbp 33. ze 132

34 PŘÍKLAD Analýza úlohy Zápis algoritmu (VD) Zdrojový kód v jazyce C++ Odladění programu (testování) Ak. rok 2015/2016 vbp 34. ze 132

35 DATOVÉ STRUKTURY Ak. rok 2015/2016 vbp 35. ze 132

36 Datové struktury Základními kameny, součástí výkladu o algoritmech Souvisejí s algoritmy, které se používají pro práci s nimi Datové struktury rozdělujeme na: základní datové struktury odvozené datové struktury Ak. rok 2015/2016 vbp 36. ze 132

37 Základní datové struktury Algoritmizace I PROMĚNNÁ pojmenované místo v paměti počítače vytváří se na základě deklarace jméno (identifikátor) datový typ Specifikací datového typu určujeme množinu hodnot, které budeme moci do proměnné ukládat množinu operací, které budeme moci s proměnnou provádět velikost proměnné (množství paměti) Ak. rok 2015/2016 vbp 37. ze 132

38 Základní datové struktury DRUHY PROMĚNNÝCH globální proměnné vytvoří se při spuštění programu existují po celou dobu běhu programu v C jde o proměnné deklarované mimo těla funkcí lokální proměnné deklarované v těle podprogramů (funkcí) vznikají při volání PP, zanikají při ukončení PP dynamické proměnné vznikají a zanikají za běhu programu (na základě příkazů) jejich existence není vázána na podprogramy nebo bloky Ak. rok 2015/2016 vbp 38. ze 132

39 Základní datové struktury POLE homogenní datová struktura posloupnost proměnných stejného datového typu (složky) v paměti jsou uložené v nepřetržité řadě (chápány jako celek) v deklaraci určujeme: jméno (identifikátor) pole datový typ složek délku pole (počet složek) se složkami pracujeme pomocí indexů (mapovací funkce) Ak. rok 2015/2016 vbp 39. ze 132

40 Základní datové struktury POLE jednorozměrná pole (vektory) vícerozměrná pole pole s n indexy označujeme jako n-rozměrná konkrétně dvojrozměrné pole (matice) třírozměrné pole (kubická matice) mapovací funkce podstatně složitější než u jednorozměrného pole záleží i na uložení vícerozměrných polí v program. jazycích Ak. rok 2015/2016 vbp 40. ze 132

41 Základní datové struktury VÍCEROZMĚRNÉ POLE grafické znázornění dvourozměrného pole PV PV 1 a 11 a a 1n Přístupový vektor PV PV 2 PV 3 a 21 a a 31 a a 2n a 3n PV m-1 a m-11 a m a m-1n PV m a m1 a m2... a mn Řádky pole A Ak. rok 2015/2016 vbp 41. ze 132

42 Základní datové struktury Algoritmizace I VÍCEROZMĚRNÉ POLE Na počítačích, kde je velikost ukazatele rovna 1 (tj. ukazatel zabírá právě jednu adresovatelnou jednotku paměti), znamená použití PV zrychlení výpočtu (odpadá většina násobení). Na počítačích, kde je velikost ukazatele větší než 1, je použití PV stejně náročné jako výpočet mapovací funkce. Ak. rok 2015/2016 vbp 42. ze 132

43 Základní datové struktury ZÁZNAM (STRUKTURA) skupina proměnných chápaná jako jeden celek jde o strukturu nehomogenní (složky jsou různých datových typů) práce s jednotlivými složkami = kvalifikace spolu se jménem proměnné typu záznam uvedeme také jméno složky (relativní adresa vzhledem k počátku proměnné typu záznam) složky jsou uloženy v paměti v pořadí uvedeném v deklaraci velikost záznamu může být větší než součet velikostí jednotlivých složek (překladač může vložit prázdná místa pro přehlednost ) Ak. rok 2015/2016 vbp 43. ze 132

44 Základní datové struktury VARIANTNÍ ZÁZNAM (v C je to UNIE) představuje skupinu proměnných přeložených přes sebe všechny složky začínají na stejné adrese velikost variantní části je rovna velikosti největší složky přístup ke složkám variantního záznamu je totožný s přístupem ke složkám běžného záznamu Ak. rok 2015/2016 vbp 44. ze 132

45 Základní datové struktury OBJEKT definice objektového typu specifikuje: atributy (složky datového typu) metody (funkční a procedurální složky) Poznámka: instance (proměnná objektového typu) obsahuje pouze atributy (atributy instancí) atributy třídy jsou (vlastně) globální proměnné (ukládají se nezávisle na instancích třídy) Ak. rok 2015/2016 vbp 45. ze 132

46 Základní datové struktury OBJEKT Poznámka: pro ukládání atributů instancí platí stejná pravidla jako pro ukládání složek záznamů skryté atributy překladač může (pro zajištění správné funkce objektů) přidat do třídy skryté atributy pro uživatele nejsou tyto atributy přístupné! Ak. rok 2015/2016 vbp 46. ze 132

47 Odvozené (abstraktní) datové struktury SEZNAM (list) struktura představující posloupnost složek složky jsou uspořádány podle určitého klíče dle hodnoty dat uložených ve složkách dle hodnoty funkce vypočítané na základě těchto dat dle pořadí v jakém byly složky do seznamu přidávány Ak. rok 2015/2016 vbp 47. ze 132

48 Odvozené (abstraktní) datové struktury SEZNAM (list) seznam je uspořádaná datová struktura složky ale nemusí být uloženy dle daného pořadí na následující (předchozí) prvek ukazuje ukazatel (pointer, link, spojka) první prvek seznamu = hlava seznamu (head) zbytek seznamu po odtržení hlavy = ohon (tail) seznam může být také prázdný Ak. rok 2015/2016 vbp 48. ze 132

49 Odvozené (abstraktní) datové struktury SEZNAM (list) seznam je dynamická datová struktura v programu deklarujeme pouze ukazatel na hlavu seznamu jednotlivé složky (prvky) seznamu dynamicky alokujeme rušíme seznam je rekurzivní datovou strukturou každá složka (prvek) seznamu obsahuje odkaz na položku stejného typu Ak. rok 2015/2016 vbp 49. ze 132

50 Odvozené (abstraktní) datové struktury JEDNOSMĚRNÝ SEZNAM nejjednodušší varianta seznamu každý prvek obsahuje odkaz na následující prvek při práci s jednosměrným seznamem používáme zarážku poslední prvek seznamu neobsahuje užitečná data poslední prvek seznamu slouží jako zarážka při prohledávání např. v Pascalu NIL, v C NULL uchováváme tedy (kromě ukazatele na hlavu) také ukazatel na tuto zarážku Ak. rok 2015/2016 vbp 50. ze 132

51 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Vytvoření prázdného seznamu 1. Deklarujeme jako proměnné ukazatel na prvek (např. typ uprvek) ukazatel na hlavu seznamu hlava ukazatel na zarážku konec 2. Vytvoříme dynamickou proměnnou typu Prvek její adresu uložíme do proměnných hlava a konec 3. Do složky hlava.další (tj. do složky Další nově vytvořené dynamické proměnné) vložíme hodnotu NIL, resp. NULL Ak. rok 2015/2016 vbp 51. ze 132

52 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Přidání nového prvku na konec seznamu 1. Požadovaná data vložíme do složky zarážky 2. Alokujeme nový prvek (novou dynamickou proměnnou typu Prvek) Její adresu uložíme do složky Další zarážky a do konec. Nově alokovaný prvek převezme roli zarážky. 3. Do složky Další nové zarážky vložíme hodnotu NIL, resp. NULL. Ak. rok 2015/2016 vbp 52. ze 132

53 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Vyhledání prvku v seznamu (např. hledáme hodnotu dd) 1. Do pomocné proměnné p typu uprvek vložíme ukazatel na hlavu seznamu. 2. Do zarážky vložíme hledanou hodnotu, tj. přiřadíme konec.d = dd. 3. Prohledáváme postupně seznam. Platí-li p.d = dd, skončíme. Jinak do p uložíme adresu následujícího prvku seznamu. 4. Obsahuje-li po skončení p adresu zarážky, seznam hledaný prvek neobsahuje. V opačném př. obsahuje p adresu hledaného prvku. Ak. rok 2015/2016 vbp 53. ze 132

54 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Vložení nového prvku za daný prvek seznamu Předpokládejme: známe adresu p prvku, za který chceme vložit do jednosměrného seznamu nový prvek využijeme pomocnou proměnnou q typu uprvek Ak. rok 2015/2016 vbp 54. ze 132

55 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Vložení nového prvku za daný prvek seznamu 1. Alokujeme novou proměnnou typu Prvek a uložíme do ní potřebná data. Adresa nové proměnné je uložena v pomocné proměnné q. 2. Do q.další uložíme adresu prvku, který bude v seznamu následovat, tj. obsah proměnné p.další. 3. Do p.další uložíme adresu nově vloženého prvku, tj. obsah proměnné q. Ak. rok 2015/2016 vbp 55. ze 132

56 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Vymazání prvku za daným prvkem seznamu Chceme ze seznamu odstranit prvek, který následuje za prvkem s adresou uloženou v proměnné p. K tomu potřebujeme pomocnou proměnnou q. Ak. rok 2015/2016 vbp 56. ze 132

57 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Vymazání prvku za daným prvkem seznamu 1. Do q uložíme p.další (to je adresa mazaného prvku). 2. Do p.další uložíme p.další.další (to je adresa prvku, který leží za mazaným prvkem). 3. Zrušíme prvek, na který ukazuje q. Ak. rok 2015/2016 vbp 57. ze 132

58 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Smazání daného prvku seznamu Chceme smazat prvek, na který ukazuje ukazatel p. To je složitější, neznáme prvek před tím, který chceme smazat. Jak napojit předcházející a následující prvek? Umíme smazat prvek, který leží za označeným prvkem. Na datech v mazaném prvku nezáleží. Přesuneme do něj tedy obsah prvku následujícího a ten pak smažeme. Ak. rok 2015/2016 vbp 58. ze 132

59 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Smazání daného prvku seznamu 1. Přesuneme obsah p.další.d do p.d (nyní prvky p a p.další obsahují stejná data). 2. Smažeme prvek s adresou p.další. Ak. rok 2015/2016 vbp 59. ze 132

60 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Smazání celého seznamu Seznam nepotřebujeme (nepoužíváme): je třeba jej smazat, tj. uvolnit dynamicky přidělenou paměť Seznam je: prázdný skládá se z hlava + ohon Algoritmus mazání je rekurzivní. Ak. rok 2015/2016 vbp 60. ze 132

61 Odvozené (abstraktní) datové struktury OPERACE S JEDNOSMĚRNÝM SEZNAMEM Smazání celého seznamu 1. Je-li seznam prázdný, tedy konec. Jinak ulož adresu hlavy do pomocné proměnné. 2. Do ukazatele na hlavu vlož adresu hlavy ohonu. Smaž hlavu. 3. Smaž ohon, tj. seznam, který zbyl po smazání hlavy. Ak. rok 2015/2016 vbp 61. ze 132

62 Odvozené (abstraktní) datové struktury JINÉ TYPY SEZNAMŮ Dvousměrný seznam (double-linked list) každý prvek obsahuje odkaz nejen na následující prvek, ale i na předcházející prvek dvousměrný seznam lze procházet v obou směrech od hlavy k poslednímu prvku od posledního prvku k hlavě Ak. rok 2015/2016 vbp 62. ze 132

63 Odvozené (abstraktní) datové struktury JINÉ TYPY SEZNAMŮ Kruhový seznam (cyklický) může být jednosměrný i dvousměrný obvykle se nepoužívá zarážka poslední prvek odkazuje na první prvek pokud jde o seznam dvousměrný, pak i první prvek odkazuje na prvek poslední Ak. rok 2015/2016 vbp 63. ze 132

64 Odvozené (abstraktní) datové struktury STROM rekurzivní datová struktura Abstraktní definice stromu se základním typem T je rekurzivní: Strom se základním typem T je buď prázdná struktura nebo prvek typu T, na který je připojen konečný počet disjunktních stromových struktur se základním typem T (označujeme je jako podstromy). Ak. rok 2015/2016 vbp 64. ze 132

65 Odvozené (abstraktní) datové struktury STROM prvky stromu se označují jako vrcholy, resp. uzly vrchol, ke kterému není připojen žádný podstrom označujeme jako koncový vrchol, resp. list vrchol, který sám není připojen k žádnému jinému vrcholu označujeme jako kořen kořen spolu se všemi podstromy, které jsou k němu připojeny, tvoří celý strom prvky, které nejsou listy, označujeme jako vnitřní vrcholy stromu Ak. rok 2015/2016 vbp 65. ze 132

66 Odvozené (abstraktní) datové struktury STROM Je-li G kořen podstromu připojeného k uzlu C, říkáme také, že G je (přímým) následovníkem C a C je (přímým) předchůdcem G. A B C D E F G H I J K L M N O Ak. rok 2015/2016 vbp 66. ze 132

67 Odvozené (abstraktní) datové struktury STROM Kořen je vrchol, který nemá žádného předchůdce. A List je vrchol, který nemá žádného následovníka. B C D E F G H I J K L M N O Ak. rok 2015/2016 vbp 67. ze 132

68 Odvozené (abstraktní) datové struktury STROM Dodatek k definici stromu: Nechť počet podstromů připojený k libovolnému z vrcholů daného stromu nepřesáhne n. Potom takový strom označujeme jako n-ární. Nejčastěji: n = 2 binární strom n = 3 ternární strom Číslo n ( -aritu ) označujeme jako typ stromu. Ak. rok 2015/2016 vbp 68. ze 132

69 Odvozené (abstraktní) datové struktury STROM Příklad: A Ternární strom B C D E F G H I J K L M N O Ak. rok 2015/2016 vbp 69. ze 132

70 Odvozené (abstraktní) datové struktury STROM Pojmy: kořen stromu je na první úrovni uzly, následovníci kořene, jsou na druhé úrovni obecně: je-li uzel R na úrovni i a uzel S je následovníkem R, pak uzel S je na úrovni i+1 Ak. rok 2015/2016 vbp 70. ze 132

71 Odvozené (abstraktní) datové struktury STROM Pojmy: Nechť x je úroveň vrcholu X. Chceme-li projít stromem od kořene k vrcholu X, musíme projít x hran (včetně hrany, která vstupuje do kořene). Pak místo o úrovni vrcholu často hovoříme o délce vnitřní cesty daného vrcholu. Ak. rok 2015/2016 vbp 71. ze 132

72 Odvozené (abstraktní) datové struktury STROM Pojmy: Součet délek cest všech uzlů v daném stromě se nazývá délka vnitřní cesty stromu. Průměrná délka vnitřní cesty stromu je dána vztahem P i = 1 n i=1 n n i i n i je počet uzlů na i-té úrovni stromu Ak. rok 2015/2016 vbp 72. ze 132

73 Odvozené (abstraktní) datové struktury STROM A Pojmy: Zvláštní vrcholy D B E F G C H I J K L M N O Ak. rok 2015/2016 vbp 73. ze 132

74 Odvozené (abstraktní) datové struktury STROM Pojmy: D B E F A G C H I J K L M N O Délka vnější cesty stromu = součet délek cest všech zvláštních vrcholů. Průměrná délka vnější cesty stromu: m i = počet zvláštních vrcholů na i-té úrovni (m je celkový počet zvl. vrcholů) Ak. rok 2015/2016 vbp 74. ze 132

75 Odvozené (abstraktní) datové struktury STROM Pojmy: Stromy nejčastěji reprezentujeme jako dynamické datové struktury. Vrcholy stromu mohou být např. záznamy: obsahují ukazatele na kořeny připojených podstromů (nebo NULL, není-li podstrom připojen) užitečné informace jsou uloženy ve složce typu data (podobně jako u seznamu) Ak. rok 2015/2016 vbp 75. ze 132

76 Odvozené (abstraktní) datové struktury BINÁRNÍ STROMY Ke každému vrcholu jsou připojeny dva podstromy (jeden nebo oba mohou být prázdné) Jeden označujeme jako levý, druhý jako pravý podstrom Ak. rok 2015/2016 vbp 76. ze 132

77 Odvozené (abstraktní) datové struktury BINÁRNÍ STROMY Nejčastěji se setkáváme s binárními stromy s následujícím uspořádáním dat: Pro každý vrchol U platí, že všechny údaje, uložené v levém podstromu, připojenému k U, jsou menší, než je údaj uložený v U, a všechny údaje, uložené v pravém podstromu, připojenému k U, jsou větší, než je údaj uložený v U. Binární strom je přístupný pomocí ukazatele na kořen. Vrcholy alokujeme dynamicky. Ak. rok 2015/2016 vbp 77. ze 132

78 Odvozené (abstraktní) datové struktury BINÁRNÍ STROMY Při procházení binárního stromu využíváme některou z metod: přímé zpracování (preorder) (zpracujeme data v kořeni, pak levý podstrom, poté pravý podstrom) vnitřní zpracování (inorder) (projdeme levý podstrom, pak kořen, nakonec pravý podstrom) zpětné zpracování (postorder) (zpracováváme v pořadí levý podstrom, pravý podstrom, kořen) Ak. rok 2015/2016 vbp 78. ze 132

79 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Vytvoření binárního stromu Vytvoříme prázdný binární strom strom se skládá ze záznamů (struktur) typu vrchol musíme mít ukazatel na kořen stromu musíme mít proměnnou typu ukazatel na vrchol Vytvoření prázdného stromu = přiřazení hodnoty NULL této proměnné typu ukazatel na vrchol Ak. rok 2015/2016 vbp 79. ze 132

80 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Zrušení binárního stromu Je-li strom, na který t (ukazatel na kořen) ukazuje, prázdný, skončíme Smažeme levý podstrom připojený k vrcholu, na který ukazuje t Smažeme pravý podstrom připojený k vrcholu, na který ukazuje t Smažeme vrchol, na který ukazuje t Ak. rok 2015/2016 vbp 80. ze 132

81 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Vložení nového vrcholu Máme data dd a chceme je zařadit do stromu Pokud tam takový údaj ještě není, přidáme do stromu nový vrchol; jinak není třeba dělat nic Přidáváme-li vrchol do prázdného stromu, alokujeme pro něj paměť Uložíme do něj potřebná data a adresu vrcholu uložíme do ukazatele na kořen Ak. rok 2015/2016 vbp 81. ze 132

82 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Vložení nového vrcholu V nedprázdném stromě vyjdeme od kořene a porovnáme dd s hodnotou v něm je-li dd menší než uložená hodnota zařadíme nový vrchol do levého podstromu jinak jej zařadíme do pravého podstromu Ak. rok 2015/2016 vbp 82. ze 132

83 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Vyhledání údaje ve stromu 1. Je-li strom prázdný, hledaný údaj v něm není; konec 2. Jinak porovnáme dd s hodnotou v kořeni; jsou-li si rovny, nalezli jsme hledaný údaj; konec 3. Jinak je-li dd menší než hodnota uložená v kořeni, prohledáme levý podstrom připojený ke kořeni; Provedeme s ním tento algoritmus a skončíme 4. Jinak prohledáme pravý podstrom a skončíme Ak. rok 2015/2016 vbp 83. ze 132

84 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Zrušení vrcholu 1. Rušíme list. V takovém případě uvolníme dynamickou paměť přidělenou tomuto uzlu a odstraníme odkaz na rušený vrchol v jeho předchůdci (nebo ukazatel na kořen, jestliže měl strom jen jeden vrchol) 2. Rušíme vrchol, který má jen jednoho následovníka (analogie rušení prvku seznamu). Adresu rušeného prvku uložíme do pomocné proměnné; odkaz v předchůdci upravíme tak, aby ukazoval na následovníka a vrchol zrušíme. Ak. rok 2015/2016 vbp 84. ze 132

85 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Zrušení vrcholu 3. Rušíme vrchol, který má dva následovníky. Nastává problém, čím zrušený vrchol nahradit. Kromě hodnoty dd, která nás již nezajímá, obsahuje také odkazy na své následovníky, které je třeba uchovat. Výsledkem této operace musí být opět uspořádaný binární strom. Ak. rok 2015/2016 vbp 85. ze 132

86 Odvozené (abstraktní) datové struktury OPERACE S BINÁRNÍMI STROMY Zrušení vrcholu V tomto případě se používá následujícího triku: 1. Najdeme nejpravější vrchol levého podstromu připojeného k rušenému vrcholu (označíme jej Q; to je vrchol, v němž je uložena největší z hodnot menších než v rušeném vrcholu). Nalezený vrchol má nejvýše jednoho následovníka (jinak by nemohl být nejpravější). 2. Hodnotu z vrcholu Q přeneseme do vrcholu, který chceme zrušit. 3. Zrušíme vrchol Q. Analogicky nejlevější vrchol pravého podstromu, Ak. rok 2015/2016 vbp 86. ze 132

87 Odvozené (abstraktní) datové struktury B-STROM (b-tree) datová struktura podobná stromu vrcholy tohoto stromu se nazývají stránky Ak. rok 2015/2016 vbp 87. ze 132

88 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Pro b-strom řádu n platí: kořenová stránka obsahuje alespoň jednu položku každá stránka obsahuje maximálně 2n položek (ulož. údajů) každá stránka (kromě kořenové) obsahuje minimálně n položek Ak. rok 2015/2016 vbp 88. ze 132

89 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Pro b-strom řádu n platí: Každá stránka je buď listovou stránkou (nemá žádné následovníky), nebo má m+1 následovníků, kde m je počet položek v ní uložených. Všechny listové stránky jsou na stejné úrovni. Ak. rok 2015/2016 vbp 89. ze 132

90 Odvozené (abstraktní) datové struktury B-STROM (b-tree) B-stromy 1. řádu: stránky obsahují 1 nebo 2 položky Takové b-stromy se často nazývají 2-3-stromy: každá stránka kromě listů má 2-3 následovníky. Takové stromy se nazývají také binární b-stromy, resp. bb-stromy. Ak. rok 2015/2016 vbp 90. ze 132

91 Odvozené (abstraktní) datové struktury B-STROM (b-tree) B-strom 2. řádu (jeho stránky tedy obsahují 2 4 údaje) Ak. rok 2015/2016 vbp 91. ze 132

92 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Přidání údaje do b-stromu (1) a) Vyhledáme listovou stránku, do které nový údaj patří; pokud je v ní místo, (obsahuje méně než 2n údajů), vložíme nový údaj a skončíme. b) Je-li stránka zaplněná, obsahovala by 2n+1 údajů; údaj zařadíme na správné místo a takto vzniklou přeplněnou stránku rozdělíme na dvě po n údajích a prostřední údaj přesuneme do předchůdce (když stránka předchůdce nemá, vytvoříme ho). Ak. rok 2015/2016 vbp 92. ze 132

93 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Přidání údaje do b-stromu (2) V předchůdci se může situace opakovat. Z toho plyne: b-strom roste pouze tak, že se rozdělí kořenová stránka. Ak. rok 2015/2016 vbp 93. ze 132

94 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Odstranění údaje z b-stromu a) Odstraňovaný údaj neleží v listové stránce Vyhledáme nejbližší menší údaj (nejpravější prvek v levém podstromu připojeném k tomuto prvku). b) Tedy: Odstraňujeme-li m-tý prvek ve stránce S, vyhledáme největší prvek v (m - 1)-tém podstromu, připojeném k S. Tento náhradní prvek bude ležet v listovní stránce. Jeho hodnotu přeneseme na místo mazaného prvku a smažeme náhradní prvek v listu. Ak. rok 2015/2016 vbp 94. ze 132

95 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Odstranění údaje z b-stromu b) Odstranění prvku z listu Poté, co prvek z listu S vyjmeme, musíme se přesvědčit, kolik prvků v něm zůstalo (žádná stránka kromě kořene nesmí mít méně prvků než n). Pokud v listu S zůstalo alespoň n prvků, skončíme. Ak. rok 2015/2016 vbp 95. ze 132

96 Odvozené (abstraktní) datové struktury B-STROM (b-tree) Odstranění údaje z b-stromu b) Odstranění prvku z listu Pokud bude list S obsahovat n-1 prvků, pokusíme se vypůjčit si potřebný prvek ze sousední stránky (se společným předchůdcem). Ta musí mít n+1 prvků. Pokud má pouze n prvků (nemůžeme si od ní půjčit ), musíme tyto dvě stránky sloučit (to můžeme, neboť obě tyto listové stránky mají dohromady pouze 2n-1 prvků). Atd. Ak. rok 2015/2016 vbp 96. ze 132

97 Odvozené (abstraktní) datové struktury ZÁSOBNÍK (stack) Jde o datovou strukturu, do které odkládáme data v průběhu zpracování. Data ze zásobníku odebíráme v obráceném pořadí, než jsme data vkládali: poslední uloženou položku musíme vyjmout jako první předposlední uloženou položku musíme vyjmout jako druhou atd. Ak. rok 2015/2016 vbp 97. ze 132

98 Odvozené (abstraktní) datové struktury ZÁSOBNÍK (stack) vložení další položky vyjmutí položky vrchol zásobníku dno zásobníku Ak. rok 2015/2016 vbp 98. ze 132

99 Odvozené (abstraktní) datové struktury ZÁSOBNÍK (stack) Položku, která neleží na vrcholu zásobníku, nelze vyjmout. Známe-li její polohu, můžeme ji přečíst (získat její hodnotu, aniž byla ze zásobníku vyjmuta). Implementace zásobníku: pomocí pole (musíme si neustále pamatovat index posledně vloženého prvku, který je na vrcholu zásobníku) pomocí seznamu (definujeme hlavu seznamu jako vrchol zásobníku) Ak. rok 2015/2016 vbp 99. ze 132

100 Odvozené (abstraktní) datové struktury FRONTA Datová struktura podobná zásobníku. Má odlišnou vnitřní strukturu: prvky do fronty vkládáme na jedné straně (konec) prvky z fronty vybíráme na druhém konci (čelo) prvky ve frontě uloženy dle pořadí vložení prvky z fronty vybíráme ve stejném pořadí prvek lze z fronty vyjmout jen je-li na řadě (na čele fronty) Ak. rok 2015/2016 vbp 100. ze 132

101 Odvozené (abstraktní) datové struktury FRONTA Frontu reprezentujeme pomocí pole, resp. seznamu (jako zásobník) vyjmutí položky vložení položky čelo fronty konec fronty Ak. rok 2015/2016 vbp 101. ze 132

102 Odvozené (abstraktní) datové struktury FRONTA Fronta s prioritami Priorita prvku je funkce hodnoty v prvku uložené. Fronta s prioritami: prvky vkládáme v pořadí, ve kterém přišly prvky vybíráme v pořadí závislém na jejich prioritě Prioritu lze uplatnit i při vkládání. Fronty s prioritami se implementují pomocí seznamů. Ak. rok 2015/2016 vbp 102. ze 132

103 Odvozené (abstraktní) datové struktury FRONTA Fronta kruhová Např. pole Q[0, 1, 2,, n-1] a po prvku Q[n-1] bude následovat prvek Q[0]. Pro obsluhu kruhové fronty potřebujeme ukazatel f na čelo fronty ukazatel r na konec fronty Ak. rok 2015/2016 vbp 103. ze 132

104 Odvozené (abstraktní) datové struktury FRONTA Fronta kruhová [n-1] [0] [1] [2] Ak. rok 2015/2016 vbp 104. ze 132

105 Odvozené (abstraktní) datové struktury FRONTA Fronta kruhová Při každé operaci vkládání, resp. výběru kontrolujeme, zda f = r. rovnost nastane po výběru prvku, pak je fronta prázdná. rovnost nastane po vložení prvku, pak je fronta již plná. Ak. rok 2015/2016 vbp 105. ze 132

106 Odvozené (abstraktní) datové struktury TABULKA Tabulka symbolů je datová struktura umožňující rychle zjistit, zda se v ní někde daný prvek vyskytuje. Umožňuje: snadno prvek vložit snadno prvek vyjmout Takové tabulky se využívají v kompilátorech při lexikální analýze (např. zda již byl daný identifikátor deklarován). Ak. rok 2015/2016 vbp 106. ze 132

107 Odvozené (abstraktní) datové struktury TABULKA Tabulka symbolů Roli tabulky symbolů mohou hrát binární stromy. Nemáme-li žádné apriorní informace o statistickém rozdělení vkládaných prvků, nebudou vytvořené stromy příliš optimální. Proto se obvykla používají hešové tabulky: souvislá oblast paměti pro ukládání prvků hesel tabulka je rozdělena na tzv. koše (např. K(1), K(2),, K(k)) v každém z košů může být s hesel (každý koš má s pozic, často se volí s=1). Ak. rok 2015/2016 vbp 107. ze 132

108 Odvozené (abstraktní) datové struktury GRAFY Orientovaný graf G definujeme jako dvojici G = {U,H}, kde U je množina uzlů, H UxU je množina orientovaných hran. O orientované hraně e = <i, j>, kde i a j jsou uzly, říkáme, že jde z uzlu i do uzlu j. Orientovaný graf může také obsahovat hranu <i, i>. Někdy též zapisujeme i j, resp. i i. Ak. rok 2015/2016 vbp 108. ze 132

109 Odvozené (abstraktní) datové struktury GRAFY Ztotožníme-li hranu <i, j> s hranou <j, i>, jde o neorientovaný graf. Definujeme-li zobrazení h: H R, které jednotlivým hranám přiřadí číselné hodnoty, pak hovoříme o ohodnoceném grafu. Posloupnost orientovaných hran <i, i 1 >, <i 1, i 2 >,, <i k, j> označujeme jako cestu z uzlu i do uzlu j. Cesta, jejíž počáteční uzel je roven uzlu koncovému, je cyklus. Ak. rok 2015/2016 vbp 109. ze 132

110 Odvozené (abstraktní) datové struktury GRAFY Orientovaný graf Neorientovaný graf Ak. rok 2015/2016 vbp 110. ze 132

111 Odvozené (abstraktní) datové struktury MNOŽINY Množiny s prvky ordinálních typů Ordinálními typy mohou být znaky, intervaly, výčtové typy, (seznamy objektů). Ak. rok 2015/2016 vbp 111. ze 132

112 Třídění TŘÍDĚNÍ Ak. rok 2015/2016 vbp 112. ze 132

113 Třídění Pojmy: Třídění = uspořádání dané posloupnosti dat podle určitého klíče v neklesající, resp. nerostoucí pořadí. Prvky tříděné posloupnosti budou stejného datového typu. Obecně jde o záznamy (struktury). Klíčem bude: některá ze složek záznamu funkce vypočítaná na základě celého záznamu Ak. rok 2015/2016 vbp 113. ze 132

114 Třídění Pojmy: Vnitřní třídění známe počet prvků posloupnosti všechny prvky posloupnosti jsou uloženy ve vnitřní paměti počítače Vnější třídění neznáme počet prvků posloupnosti všechny prvky posloupnosti jsou uloženy ve vnější paměti se sekvenčním přístupem (magnetická páska, disk) Ak. rok 2015/2016 vbp 114. ze 132

115 Vnitřní třídění TŘÍDĚNÍ PŘÍMÝM VÝBĚREM 1. Ve zdrojové posloupnosti najdeme prvek s nejmenším klíčem. 2. Vyměníme tento prvek s prvkem na první pozici. 3. Nyní máme na první pozici prvek s nejmenším klíčem. Máme-li utřídit zbytek posloupnosti, opakujeme tyto kroky se zbylými n-1 prvky, dokud je n > 1. Ak. rok 2015/2016 vbp 115. ze 132

116 Vnitřní třídění TŘÍDĚNÍ PŘÍMÝM VÝBĚREM Příklad: neutříděno plně utříděné Ak. rok 2015/2016 vbp 116. ze 132

117 Vnitřní třídění TŘÍDĚNÍ BUBLINKOVÉ (bublesort) 1. Opakovaně procházíme polem 2. Porovnáváme dva sousední prvky 3. Pokud relace nevyhovuje, prohodíme je Při prvním průchodu vyplave nejlehčí prvek na hladinu, při druhém průchodu vyplave 2. nejlehčí prvek, atd. Ak. rok 2015/2016 vbp 117. ze 132

118 Vnitřní třídění TŘÍDĚNÍ BUBLINKOVÉ (bublesort) Vylepšení algoritmu při průchodu polem registrujeme uskutečněné výměny prvků v okamžiku, kdy při průchodu polem nenastala žádná výměna, je pole uspořádané Ak. rok 2015/2016 vbp 118. ze 132

119 Vnitřní třídění TŘÍDĚNÍ BUBLINKOVÉ (bublesort) Vylepšení algoritmu zapamatujeme si i index prvku, kterého se týkala poslední výměna za tímto prvkem již nebyly žádné další výměny tj. prvky jsou již uspořádány tento úsek již nemusíme procházet Ak. rok 2015/2016 vbp 119. ze 132

120 Vnitřní třídění TŘÍDĚNÍ BUBLINKOVÉ (bublesort) Vylepšení algoritmu evidentně záleží na směru pohybu v tříděném poli pohyb zleva doprava nejtěžší prvek vybublá nejrychleji pohyb zprava doleva nejlehčí prvek vybublá nejrychleji kombinujme (střídejme) tedy oba směry pohybu v tříděném poli třídění PŘETŘÁSÁNÍM Ak. rok 2015/2016 vbp 120. ze 132

121 Vnitřní třídění SHELLOVO TŘÍDĚNÍ (Shellsort) Příčina neefektivnosti předchozích algoritmů vyměňujeme pouze sousední prvky nejmenší prvek např. na konci pole potřebujeme n výměn preferujme výměnu prvků na velké vzdálenosti Ak. rok 2015/2016 vbp 121. ze 132

122 Vnitřní třídění SHELLOVO TŘÍDĚNÍ (Shellsort) Donald L. Shell ( ), americký počítačový vědec Myšlenka přeuspořádejme pole tak, že vezmeme-li každý h-tý prvek, dostaneme setříděné pole (pole setříděné s krokem h) pole setříděné s krokem h představuje h proložených nezávislých polí Ak. rok 2015/2016 vbp 122. ze 132

123 Vnitřní třídění SHELLOVO TŘÍDĚNÍ (Shellsort) Myšlenka při Shellově třídění třídíme nejprve s krokem h 1 pak s krokem h 2 (h 2 < h 1 ), atd. nakonec třídíme s krokem h n = 1 (dostaneme plně setříděné pole) při každém z průchodů třídíme pole, které je již částečně utříděné můžeme očekávat, že bude třeba jen málo výměn Ak. rok 2015/2016 vbp 123. ze 132

124 Vnitřní třídění RYCHLÉ TŘÍDĚNÍ (quicksort) (třídění rozdělováním) Myšlenka nejefektivnější je výměna prvků v poli na velké vzdálenosti mějme pole seřazené v opačném pořadí potřebujeme jen n/2 výměn porovnáme prvky na obou koncích pole a vyměníme je pak postoupíme o jedno pole ke středu a zopakujeme porovnání Ak. rok 2015/2016 vbp 124. ze 132

125 Vnitřní třídění RYCHLÉ TŘÍDĚNÍ (quicksort) (třídění rozdělováním) Myšlenka pokud pole není seřazené v obráceném pořadí, nemůže být náš postup tak přímočarý vyjdeme z principu Rozděl a panuj zvolíme náhodně prvek x uspořádáme pole tak, aby vlevo od x byly menší prvky a vpravo od x byly větší prvky máme 3 části vlevo jsou prvky menší než x prvek x je už na svém místě vpravo jsou prvky větší než x Ak. rok 2015/2016 vbp 125. ze 132

126 Vnitřní třídění RYCHLÉ TŘÍDĚNÍ (quicksort) (třídění rozdělováním) Myšlenka pokud pole obsahuje pouze 3 prvky za x volíme prostřední (pokud jde o velikost, tj. medián) předeslaným procesem získáme uspořádané pole pokud pole obsahuje pouze 2 prvky za x volíme kterýkoli z nich a je to Ak. rok 2015/2016 vbp 126. ze 132

127 Vnitřní třídění RYCHLÉ TŘÍDĚNÍ (quicksort) (třídění rozdělováním) Algoritmus 1. Zvolíme x a rozdělíme popsaným způsobem tříděné pole na úseky a1,, as,, an Platí, že a i <= x pro i=1, 2,, s-1 a s = x a i >= x pro i=s+1,, n Ak. rok 2015/2016 vbp 127. ze 132

128 Vnitřní třídění RYCHLÉ TŘÍDĚNÍ (quicksort) (třídění rozdělováním) Algoritmus 2. Proces rozdělení opakujeme pro úseky a 1,, a s a s+1,, a n 3. Dále pak pro jejich části, až dospějeme k úsekům délky A ty už budou automaticky utříděné Ak. rok 2015/2016 vbp 128. ze 132

129 Vnitřní třídění RYCHLÉ TŘÍDĚNÍ (quicksort) (třídění rozdělováním) Algoritmus rozdělení pole na dvě části 1. Vyjdeme od prvního prvku pole a budeme hledat prvek, který je větší než x. 2. Zároveň budeme pole prohledávat od konce, až narazíme na prvek, který je menší než x. 3. Tyto dva prvky zaměníme. 4. Až se oba směry prohledávání setkají uprostřed pole, skončíme. Ak. rok 2015/2016 vbp 129. ze 132

130 Některé základní algoritmy 1. Záměna dvou daných prvků 2. Seřazení tří daných prvků dle velikosti 3. Nalezení dané hodnoty v daném poli jednorozměrné pole dvourozměrné pole 4. Nalezení extrémní velikosti prvku a jeho polohy v daném poli jednorozměrné pole dvourozměrné pole 5. Součet, resp. součin prvků daného číselného pole (vektor, matice) Ak. rok 2015/2016 vbp 130. ze 132

131 Některé základní algoritmy Algoritmizace I 6. Záměna minimálního a maximálního prvku v daném poli 7. Součet, resp. součin matic 8. Záměna dvou řádků matice 9. Matice převlečená naruby (s využitím algoritmu v úloze 8) 10. Nalezení v absolutní hodnotě maximálního prvku v řádku (resp. sloupci) matice a jeho záměna s prvkem diagonálním Ak. rok 2015/2016 vbp 131. ze 132

132 Programování I Děkuji za pozornost Ak. rok 2015/2016 vbp 132. ze 132

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44 Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251

Více

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44 Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251

Více

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

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

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

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach vlož do fronty kořen opakuj, dokud není fronta prázdná 1. vyber uzel z fronty a zpracuj jej 2. vlož do fronty levého následníka

Více

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

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.

Více

GRAFY A GRAFOVÉ ALGORITMY

GRAFY A GRAFOVÉ ALGORITMY KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO GRAFY A GRAFOVÉ ALGORITMY ARNOŠT VEČERKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ

Více

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615) IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná

Více

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer

Více

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín Kolekce ArrayList napsal Pajclín Tento článek jsem se rozhodl věnovat kolekci ArrayList, protože je to jedna z nejpoužívanějších. Tento článek není kompletním popisem třídy ArrayList, ale budu se snažit

Více

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami. Maticové operace Definice Skalár Představme si nějakou množinu, jejíž prvky lze sčítat a násobit. Pěkným vzorem jsou čísla, která už známe od mala. Prvky takové množiny nazýváme skaláry. Matice Matice

Více

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti. Intervalové stromy Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme průběžně provádět tyto dvě operace: 1. Změna jednoho čísla v posloupnosti. 2. Zjištění součtu čísel

Více

3. Středoškolská stereometrie v anaglyfech

3. Středoškolská stereometrie v anaglyfech 3. Středoškolská stereometrie v anaglyfech V předchozích dvou kapitolách jsme zjistili, jak se zobrazují tělesa ve středovém promítání a hlavně v lineární perspektivě, a jak pomocí těchto promítání vytvořit

Více

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech.

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech. Kapitola 9 Skalární součin Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech. Definice 9.1 Je-li x = (x 1,..., x n ) T R n 1 reálný

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5, 5.1 a 5.2 8/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5, 5.1 a 5.2 8/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2014 5, 5.1 a 5.2 8/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 18 0:40 Algoritmus Algoritmem by se dal nazvat

Více

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Ukazatel a dynamické datové struktury v prostředí DELPHI Důležitým termínem a konstrukčním programovým prvkem je typ UKAZATEL. Je to vlastně

Více

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry. Kapitola Ohodnocené grafy V praktických aplikacích teorie grafů zpravidla graf slouží jako nástroj k popisu nějaké struktury. Jednotlivé prvky této struktury mají často přiřazeny nějaké hodnoty (může jít

Více

Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS )

Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS ) LINEÁRNÍ ALGEBRA Úvod vektor Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS ) Kartézský souřadnicový systém -je taková soustava

Více

Paměti a jejich organizace

Paměti a jejich organizace Kapitola 5 Paměti a jejich organizace 5.1 Vnitřní a vnější paměti, vlastnosti jednotlivých typů Vnější paměti Jsou umístěny mimo základní jednotku. Lze je zařadit mezi periferní zařízení. Zápis a čtení

Více

Algoritmizace prostorových úloh

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íce

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

Základy algoritmizace. Miroslav Virius

Základy algoritmizace. Miroslav Virius Základy algoritmizace Miroslav Virius 2 Obsah 1 Algoritmus 9 1.1 Vymezení pojmu............................................ 9 1.1.1 Co je to algoritmus....................................... 9 1.1.2 Příklad

Více

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE FAKULTA INFORMATIKY A STATISTIKY Hlavní specializace: Ekonometrie a operační výzkum Název diplomové práce Optimalizace trasy při revizích elektrospotřebičů Diplomant: Vedoucí

Více

8. Posloupnosti, vektory a matice

8. Posloupnosti, vektory a matice . jsou užitečné matematické nástroje. V Mathcadu je často používáme například k rychlému zápisu velkého počtu vztahů s proměnnými parametry, ke zpracování naměřených hodnot, k výpočtům lineárních soustav

Více

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce. Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 8: Dynamické datové struktury, ladění programů Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Dynamické datové struktury 1.1 Příklad:

Více

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace 1) Charakterizujte křížový překladač Překlad programu probíhá na jiném procesoru, než exekuce. Hlavním důvodem je náročnost překladače na cílovém stroji by ho nemuselo být možné rozběhnout. 2. Objasněte

Více

2 Spojité modely rozhodování

2 Spojité modely rozhodování 2 Spojité modely rozhodování Jak již víme z přednášky, diskrétní model rozhodování lze zapsat ve tvaru úlohy hodnocení variant: f(a i ) max, a i A = {a 1, a 2,... a p }, kde f je kriteriální funkce a A

Více

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j. Kapitola 3 Počítání s maticemi Matice stejného typu můžeme sčítat a násobit reálným číslem podobně jako vektory téže dimenze. Definice 3.1 Jsou-li A (a ij ) a B (b ij ) dvě matice stejného typu m n, pak

Více

Algoritmizace prostorových úloh

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íce

13. Třídící algoritmy a násobení matic

13. Třídící algoritmy a násobení matic 13. Třídící algoritmy a násobení matic Minulou přednášku jsme probírali QuickSort, jeden z historicky prvních třídících algoritmů, které překonaly kvadratickou složitost aspoň v průměrném případě. Proč

Více

Algoritmy a datové struktury

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

Více

8. Geometrie vrací úder (sepsal Pavel Klavík)

8. Geometrie vrací úder (sepsal Pavel Klavík) 8. Geometrie vrací úder (sepsal Pavel Klavík) Když s geometrickými problémy pořádně nezametete, ony vám to vrátí! Ale když užzametat,takurčitěnepodkoberecamístosmetákupoužijtepřímku.vtéto přednášce nás

Více

Rámcový manuál pro práci s programem TopoL pro Windows

Rámcový manuál pro práci s programem TopoL pro Windows Rámcový manuál pro práci s programem TopoL pro Windows Příkazy v nabídce Předmět Volba rastru rychlá klávesa F4 Příkaz otevře vybraný rastr; tj. zobrazí ho v předmětu zájmu. Po vyvolání příkazu se objeví

Více

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3 DobSort Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),

Více

Jak pracovat s absolutními hodnotami

Jak pracovat s absolutními hodnotami Jak pracovat s absolutními hodnotami Petr Matyáš 1 Co to je absolutní hodnota Absolutní hodnota čísla a, dále ji budeme označovat výrazem a, je jeho vzdálenost od nuly na ose x, tedy je to vždy číslo kladné.

Více

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 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.

Více

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

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10

Více

Binární vyhledávací stromy II

Binární vyhledávací stromy II Binární vyhledávací stromy II doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 19. března 2019 Jiří Dvorský (VŠB TUO) Binární vyhledávací

Více

Finanční. matematika pro každého. f inance. 8. rozšířené vydání. věcné a matematické vysvětlení základních finančních pojmů

Finanční. matematika pro každého. f inance. 8. rozšířené vydání. věcné a matematické vysvětlení základních finančních pojmů Finanční matematika pro každého 8. rozšířené vydání J. Radová, P. Dvořák, J. Málek věcné a matematické vysvětlení základních finančních pojmů metody pro praktické rozhodování soukromých osob i podnikatelů

Více

Matematika pro studenty ekonomie

Matematika pro studenty ekonomie w w w g r a d a c z vydání upravené a doplněné vydání Armstrong Grada Publishing as U Průhonu 7 Praha 7 tel: + fax: + e-mail: obchod@gradacz wwwgradacz Matematika pro studenty ekonomie MATEMATIKA PRO STUDENTY

Více

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012 Algebra - třetí díl Lenka Zalabová Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita v Českých Budějovicích zima 2012 Obsah 1 Dělitelnost 2 Grupy zbytkových tříd 3 Jedna z

Více

Dynamické datové struktury I.

Dynamické datové struktury I. Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Dynamické datové struktury IV.

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

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

Maturitní téma: Programovací jazyk JAVA

Maturitní téma: Programovací jazyk JAVA Maturitní téma: Programovací jazyk JAVA Insert Sort (třídění vkládáním) 1. Jako setříděnou část označíme první prvek pole. Jako nesetříděnou část označíme zbytek pole. 2. Vezmeme první (libovolný) prvek

Více

Kapitola 1. Tenzorový součin matic

Kapitola 1. Tenzorový součin matic Kapitola 1 Tenzorový součin matic Definice 1.1. Buď F komutativní těleso. Pro matice A F m n a B F r s definujeme tenzorový součin A B jako matici o rozměru mr ns zapsanou blokově: A 11 B A 12 B A 1n B

Více

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B PŘIJÍMACÍ TEST Z INFORMATIKY A MATEMATIKY NAVAZUJÍCÍ MAGISTERSKÉ STUDIUM V OBORU APLIKOVANÁ INFORMATIKA FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITY HRADEC KRÁLOVÉ ČÁST A Registrační číslo Hodnocení -

Více

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy

Více

Ten objekt (veličina), který se může svobodně měnit se nazývá nezávislý.

Ten objekt (veličina), který se může svobodně měnit se nazývá nezávislý. @001 1. Základní pojmy Funkce funkční? Oč jde? Třeba: jak moc se oblečeme, závisí na venkovní teplotě, jak moc se oblečeme, závisí na našem mládí (stáří) jak jsme staří, závisí na čase jak moc zaplatíme

Více

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické

Více

Tabulkové processory MS Excel (OpenOffice Calc)

Tabulkové processory MS Excel (OpenOffice Calc) Maturitní téma: Tabulkové processory MS Excel (OpenOffice Calc) Charakteristika tabulkového editoru Tabulkový editor (sprematuritníadsheet) se používá všude tam, kde je třeba zpracovávat data uspořádaná

Více

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

Základy algoritmizace

Základy algoritmizace Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice

Více

Rekurzivní algoritmy

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

Více

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu: Plán předmětu Název předmětu: Algoritmizace a programování (PAAPK) Školní rok: 2007/2008 Forma studia: Kombinovaná Studijní obory: DP, DI, PSDPI, OŽPD Ročník: I Semestr: II. (letní) Typ předmětu: povinný

Více

Jazyk matematiky. 2.1. Matematická logika. 2.2. Množinové operace. 2.3. Zobrazení. 2.4. Rozšířená číslená osa

Jazyk matematiky. 2.1. Matematická logika. 2.2. Množinové operace. 2.3. Zobrazení. 2.4. Rozšířená číslená osa 2. Jazyk matematiky 2.1. Matematická logika 2.2. Množinové operace 2.3. Zobrazení 2.4. Rozšířená číslená osa 1 2.1 Matematická logika 2.1.1 Výrokový počet logická operace zapisujeme čteme česky negace

Více

Euklidovský prostor Stručnější verze

Euklidovský prostor Stručnější verze [1] Euklidovský prostor Stručnější verze definice Eulidovského prostoru kartézský souřadnicový systém vektorový součin v E 3 vlastnosti přímek a rovin v E 3 a) eprostor-v2, 16, b) P. Olšák, FEL ČVUT, c)

Více

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

Prohledávání do šířky = algoritmus vlny

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é

Více

Soustavy lineárních rovnic

Soustavy lineárních rovnic 7 Matice. Determinant Soustavy lineárních rovnic 7.1 Matice Definice 1. Matice typu (m, n) jesoustavam n reálných čísel uspořádaných do m řádků a n sloupců a 11, a 12, a 13,..., a 1n a 21, a 22, a 23,...,

Více

12. Aproximační algoritmy

12. Aproximační algoritmy 12. Aproximační algoritmy (F.Haško,J.enda,.areš, ichal Kozák, Vojta Tůma) Na minulých přednáškách jsme se zabývali různými těžkými rozhodovacími problémy. Tato se zabývá postupy, jak se v praxi vypořádat

Více

POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA POKROČILÉ ČINNOSTI

POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA POKROČILÉ ČINNOSTI POČÍTAČOVÁ GRAFIKA VEKTOROVÁ GRAFIKA POKROČILÉ ČINNOSTI PASTELKA Naším dalším úkolem bude namalovat pastelku. Při tom si vyzkoušíme malování podle vodících linek, různé výplně, transformace i logické operace.

Více

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky. V průběhu budou vysvětlena následující témata: 1. Dynamicky alokovaná paměť 2. Jednoduché

Více

3. Matice a determinanty

3. Matice a determinanty . Matice a determinanty Teorie matic a determinantů představuje úvod do lineární algebry. Nejrozsáhlejší aplikace mají matice a determinanty při řešení systémů lineárních rovnic. Pojem determinantu zavedl

Více

Binární vyhledávací stromy pokročilé partie

Binární vyhledávací stromy pokročilé partie Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

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

Více

Kapitola 11. Vzdálenost v grafech. 11.1 Matice sousednosti a počty sledů

Kapitola 11. Vzdálenost v grafech. 11.1 Matice sousednosti a počty sledů Kapitola 11 Vzdálenost v grafech V každém grafu lze přirozeným způsobem definovat vzdálenost libovolné dvojice vrcholů. Hlavním výsledkem této kapitoly je překvapivé tvrzení, podle kterého lze vzdálenosti

Více

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 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í

Více

TVORBA VÝROBNÍ DOKUMENTACE CV

TVORBA VÝROBNÍ DOKUMENTACE CV Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní TVORBA VÝROBNÍ DOKUMENTACE CV Návody do cvičení předmětu Výrobní dokumentace v systému CAD Dr. Ing. Jaroslav Melecký Ostrava 2011 Tyto studijní

Více

8 A (strana 1) Soubory a složky, procházení, orientace

8 A (strana 1) Soubory a složky, procházení, orientace 8 A (strana ) Logické členění dat v počítači: V počítači je uloženo velmi mnoho dat. Některá jsou důležitá pro běh Windows, tedy tzv. operačního systému, což je základ naší práce s počítačem. Jiná data

Více

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury) definice ( tree) autoři: Rudolf Bayer, Ed McCreight vyvážený strom řádu m ( ) každý uzel nejméně a nejvýše m potomků s výjimkou kořene každý vnitřní uzel obsahuje o méně klíčů než je počet potomků (ukazatelů)

Více

1. D Y N A M I C K É DAT O V É STRUKTUR Y

1. D Y N A M I C K É DAT O V É STRUKTUR Y 1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové

Více

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

(Cramerovo pravidlo, determinanty, inverzní matice)

(Cramerovo pravidlo, determinanty, inverzní matice) KMA/MAT1 Přednáška a cvičení, Lineární algebra 2 Řešení soustav lineárních rovnic se čtvercovou maticí soustavy (Cramerovo pravidlo, determinanty, inverzní matice) 16 a 21 října 2014 V dnešní přednášce

Více

Semestrální projekt. Předmět: Programování v jazyce C. Zadání: Operace s maticemi. Uživatelský manuál. ver. 1.0

Semestrální projekt. Předmět: Programování v jazyce C. Zadání: Operace s maticemi. Uživatelský manuál. ver. 1.0 Semestrální projekt Předmět: Programování v jazyce C Zadání: Operace s maticemi Uživatelský manuál ver. 1.0 Jakub Štrouf Obor: Aplikovaná informatika Semestr: 1. Rok: 2009/2010 Obsah: 1. Úvod 1.1. Technická

Více

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické

Více

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory K množina reálných nebo komplexních čísel, U vektorový prostor nad K. Lineární kombinace vektorů u 1, u 2,...,u

Více

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

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 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

Více

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto

Na začátku rozdělíme práci a určíme, které podproblémy je potřeba vyřešit. Tyto Kapitola 1 Rozděl a panuj Rozděl a panuj je programovací metoda. Často se označuje latinsky Divide et Empera nebo anglicky Divide and Conquer. Vychází z toho, že umíme zadaný problém rozložit na menší

Více

2.2. SČÍTÁNÍ A NÁSOBENÍ MATIC

2.2. SČÍTÁNÍ A NÁSOBENÍ MATIC 22 SČÍTÁNÍ A NÁSOBENÍ MATIC V této kapitole se dozvíte: jak je definováno sčítání matic a jaké má základní vlastnosti jak je definováno násobení matic číslem a jaké má základní vlastnosti zda a proč se

Více

Západočeská univerzita v Plzni. Fakulta aplikovaných věd Katedra matematiky. Geometrie pro FST 1. Pomocný učební text

Západočeská univerzita v Plzni. Fakulta aplikovaných věd Katedra matematiky. Geometrie pro FST 1. Pomocný učební text Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra matematiky Geometrie pro FST 1 Pomocný učební text František Ježek, Marta Míková, Světlana Tomiczková Plzeň 29. srpna 2005 verze 1.0 Předmluva

Více

2. RBF neuronové sítě

2. RBF neuronové sítě 2. RBF neuronové sítě Kapitola pojednává o neuronových sítích typu RBF. V kapitole je popsána základní struktura tohoto typu neuronové sítě. Poté následuje definice a charakteristika jednotlivých radiálně

Více

0. Lineární rekurence Martin Mareš, 2010-07-04

0. Lineární rekurence Martin Mareš, 2010-07-04 0 Lineární rekurence Martin Mareš, 2010-07-04 V tomto krátkém textu se budeme zabývat lineárními rekurencemi, tj posloupnostmi definovanými rekurentní rovnicí typu A n+k = c 0 A n + c 1 A n+1 + + c k 1

Více

4. Lineární nerovnice a jejich soustavy

4. Lineární nerovnice a jejich soustavy 4. Lineární nerovnice a jejich soustavy 9. ročník 4. Lineární nerovnice a jejich soustavy 5 > 0 ostrá nerovnost 5.0 50 neostrá nerovnost ( používáme pouze čísla) ZNAKY NEROVNOSTI: > je větší než < je menší

Více

1 Úvod do kompilátorů

1 Úvod do kompilátorů 1 Úvod do kompilátorů 1.1 Úvodem několik slov Tyto texty obsahují úvod do návrhu programovacích jazyků a problematiky překladu programů. Téma pokrývá oblasti zahrnující lexikální analýzu (scanning), regulární

Více

NPRG030 Programování I, 2018/19 1 / :03:07

NPRG030 Programování I, 2018/19 1 / :03:07 NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování

Více

Uživatelem definované požadavky a parametry systému

Uživatelem definované požadavky a parametry systému Uživatelem definované požadavky a parametry systému J. Rybička, J. Přichystal, P. Talandová Koncepce parametrů Obecný model procesu zpracování dokumentu počítačem předpokládá, že uživatel pokud možno co

Více

ADT STROM Lukáš Foldýna

ADT STROM Lukáš Foldýna ADT STROM Lukáš Foldýna 26. 05. 2006 Stromy mají široké uplatnění jako datové struktury pro různé algoritmy. Jsou to matematické abstrakce množin, kterou v běžném životě používáme velice často. Příkladem

Více

Informatika Algoritmy

Informatika Algoritmy Informatika Algoritmy Radim Farana Podklady předmětu Informatika pro akademický rok 2010/2011 Obsah Algoritmus. Vlastnosti algoritmu. Popis algoritmu. Hodnocení algoritmů. Příklady algoritmů. Algoritmus

Více

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly Matice Matice typu (m, n) je uspořádaná m-tice prvků z řádky matice.. Jednotlivé složky této m-tice nazýváme Matice se zapisují Speciální typy matic Nulová matice všechny prvky matice jsou nulové Jednotková

Více

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např. 2 přednáška 2 října 2012 10:32 Souborově orientované uchování dat Slabý HW Není možné uchovávat "velká data" - maximálně řádově jednotky MB Na každou úlohu samostatná aplikace, která má samostatná data

Více

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT PEF ČZU Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT Okruhy SZB č. 5 Zdroje: Demel, J., Operační výzkum Jablonský J., Operační výzkum Šubrt, T., Langrová, P., Projektové řízení I. a různá internetová

Více

Office 2013. podrobný průvodce. Tomáš Šimek

Office 2013. podrobný průvodce. Tomáš Šimek Office 2013 podrobný průvodce Tomáš Šimek Seznámení se společnými postupy při práci s dokumenty Office Popis základních a pokročilejších postupů při práci s Wordem, Excelem, PowerPointem a OneNote Možnosti

Více

Základní datové struktury III: Stromy, haldy

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy 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í

Více

DUM 05 téma: Úvod do VBA for application

DUM 05 téma: Úvod do VBA for application DUM 05 téma: Úvod do VBA for application 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: vzdělávací oblast: číslo

Více

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. http://service.felk.cvut.cz/courses/y36bez lorencz@fel.cvut.cz

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. http://service.felk.cvut.cz/courses/y36bez lorencz@fel.cvut.cz Y36BEZ Bezpečnost přenosu a zpracování dat Róbert Lórencz 1. přednáška Úvod http://service.felk.cvut.cz/courses/y36bez lorencz@fel.cvut.cz Róbert Lórencz (ČVUT FEL, 2007) Y36BEZ Bezpečnost přenosu a zpracování

Více

Břetislav Fajmon, UMAT FEKT, VUT Brno. Poznámka 1.1. A) první část hodiny (cca 50 minut): představení všech tří metod při řešení jednoho příkladu.

Břetislav Fajmon, UMAT FEKT, VUT Brno. Poznámka 1.1. A) první část hodiny (cca 50 minut): představení všech tří metod při řešení jednoho příkladu. Břetislav Fajmon, UMAT FEKT, VUT Brno Poznámka 1.1. A) první část hodiny (cca 50 minut): představení všech tří metod při řešení jednoho příkladu. Na jiných příkladech je téma podrobně zpracováno ve skriptech

Více