OZD. Organizace a zpracování dat. učební text

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

Download "OZD. Organizace a zpracování dat. učební text"

Transkript

1 OZD Organizace a zpracování dat učební tet

2 Datové typy Datové typy Dělení elementární strukturované = datové struktury základní (statické) základní struktury programovacího jazyka vyšší (dynamické) Datové struktury uspořádané tranzitivní (platí-li < y a y < z pak je < z), antisymetrické (platí-li < y pak neplatí y < ), irrefleivní (neplatí < ) neuspořádané částečně uspořádané Základní datové struktury Pole homogenní datová struktura, skupina dat stejného typu (i strukturovaného) jednorozměrné pole je určeno dolní mezí D a horní mezí H, platí že H D + 1 je rovno počtu prvků v poli každému prvku přísluší inde i (D i H) k prvku o indeu i se přistupuje pomocí selektoru A[i], kde A představuje název pole Obrázek 1: Jednorozměrné a dvourozměrné pole vícerozměrné pole je zobecněním pole jednorozměrného, pole o n rozměrech má n dolních mezí, n horních mezí a n indeů Záznam heterogenní datová struktura, skupina dat různého typu (i strukturovaného) každá složka je určena názvem k jednotlivým částem struktury se zpravidla přistupuje pomocí tečky a názvu Příklad: záznam Osoba 1. část Osoba.jméno 2. část Osoba.věk 3. část Osoba.ID strana 2

3 Základní datové struktury častým případem jsou datové struktury, jejihž prvky tvoří záznamy stejného typu pak může být jedna z částí určena pro jednoznačnou identifikaci záznamu nazýva se klíč (Osoba.ID) klíč lze využít pro vyhledávání, třídění Dynamické datové struktury Seznam odpovídá posloupnosti prvků záleží na pořadí prvku v posloupnosti, tentýž prvek se může v posloupnosti vyskytnout vícekrát základní operace se seznamy: určení, zda je prvek v seznamu obsažen přidání prvku na začátek nebo konec ubrání prvku ze začátku nebo konce přidání prvku na libovolnou pozici v seznamu odebrání prvku z libovolné pozice v seznamu určit počet prvků seznamu spojit 2 seznamy rozdělit jeden seznam na 2 speciální případy seznamu zásobník, fronta, oboustranná fronta zásobník LIFO (last in, first out) umožňuje přidání, odebrání a určení prvku pouze na konci seznamu fronta FIFO (first in, first out) umožňuje přidání prvku na konec seznamu, a odebrání a určení prvku na začátku Obrázek 2: Speciální typy seznamů - zásobník, fronta, oboustranná fronta oboustranná fronta umožňuje přidání, odebrání a určení prvku na obou koncích rychlost operací závisí na způsobu implementace seznamu 2 základní způsoby implementace: kompaktní seznam pouze pro seznamy, jejihž prvky jsou stejného typu pro implementaci použito pole L ma (maimání počet), L (aktuální délka), S[1]..S[L] (prvky seznamu) rychlé operace na konci (nezávisí na počtu prvků v poli), pomalé přidávání/ubírání z obecné pozice, dělení na 2 výhodné pro realizaci zásobníku lze optimalizovat pro frontu kromě indeu konce L držím i inde začátku Z, při odebrání ze začátku se neposouvají strana 3

4 Dynamické datové struktury prvky, ale jen inde.. točí se kolem dokola nevýhody časová náročnost některých operací, nutnost statické alokace paměti spojový seznam jedntolivé části seznamu jsou v paměti umístěny libovolně, jsou propojeny pomocí ukazatelů na následující položku Obrázek 3: Příklad spojového seznamu na první položku ukazuje proměnná Záhlaví typy jednosměrný seznam každá položka obsahuje ukazatel na následující položku obousměrný seznam každá položka obsahuje ukazatele na následující i předcházející položku cyklický seznam konec seznamu ukazuje na začátek výhody všechny operace jsou velice rychlé nevýhody fragmentace paměti při vynechávání položek seznamu (řeší garbage collector) při vynechání položky je třeba spojit předchůdce a následníka následníka určuje přímo vynechávaná položka, ale k předchůdci je nutno dojít procházením seznamu od začátku (řeší oboustranný spojový seznam) Kořenové stromy dynamická struktura, jejíž každý prvek může mít více následníků obecný strom (n-ární) názvosloví (syn je uzel v nižší vrstvě, bratr je uzel ve stejné vrstvě, otec ve vyšší vrstvě, kořen nejvyšší uzel) vrchol záznam, který obsahuje mj 2 ukazatele nejstaršího syna a nejstaršího z mladších bratrů (pokud neeistují speciální symbol) speciální záznam ukazující na kořen stromu Obrázek 4: n-ární strom a jeho možná reprezentace binární strom každý vrchol má buď jednoho, dva nebo žádného syna strana 4

5 Dynamické datové struktury Obrázek 5: Binární strom každý vrchol obsahuje 2 záznamy na levého a pravého syna (nebo speciální symbol neeistence syna) les skupina stromů, uspořádaná do spojového seznamu výhodné použít volné ukazatele na mladšího bratra u kořene (kořen stromu nemá bratry) Obrázek 6: Les a jeho možná reprezentace 4 tento způsob implementace dovoluje pohlížet na les jako na binární strom operace je-li třeba rychle procházet strom vzhůru, je vhodné doplnit odkaz na otce přidávání uzlů je očividné doplní se ukazatel odebírání je třeba rozhodnout co udělat se syny (například odebíraného otce zastoupí první syn) Množiny popis operací: MEMBER(,M) určení, zda je členem množiny M INSERT(,M) vložení do M, pokud mají být prvky unikátní, je nejhdřív třeba provést MEMBER DELETE(,M) vyjmutí z M předpokládáme, že leží v M, pokud si nejsme jisti, je opět třeba provést MEMBER další operace předpokládájí, že prvky jsou tvořeny záznamy s klíčy, pomocí nihž můžeme záznamy porovnávat MIN(M)/MAX(M) - určení minima/maima v množině M EXTRACT-MIN(M)/EXTRACT-MAX(M) určení a vyjmutí minima/maima (jedná se o kombinaci MIN/MAX a DELETE) UNION(M,N) sjednocení množin strana 5

6 Dynamické datové struktury Implementace charakteristickou funkcí množina je podmonžinou základní množiny (universa) U = { 1,.., n } pole A[i], i = 1..n platí, že pokud je A[i] = true, pak i patří do dané množiny tento způsob implementace je nepoužitelný pro velká n náročnost operací MEMBER, INSERT, DELETE probíhají v konstantním čase sjednocení, průnik, MIN, MAX probíhají v lineárním čase eistují i optimalizační algoritmy pro zrychlení těchto operací Implementace seznamem rychlost operací závisí na konkrétní implementaci seznamu pokud je seznam spojový, tak jsou operace MEMBER, MIN, MAX lineární, ostatní konstantní (za předpokladu, že se jedná o disjunkntní množiny) INSERT kamkoliv, sjednocení pomocí propojení seznamů realizace průniku je velmi komplikovaná (kvadratická náročnost) Implementace uspořádaným seznamem prvky jsou seřazeny podle klíčů velmi rychloá realizace operací MIN, MAX, EXTRACT MIN/MAX kvůli vkládání do uspořádaného seznamu se zpomalí INSERT kompaktní implementací seznamu se urychlí funkce MEMBER (binárním vyhledáváním), ale zkomplikuje se vkládání a výběr Vyhledávací stromy (binární) klíče v levém podstromě jsou menší než klíče ve vrcholu klíče v pravém podstromě jsou větší než klíče ve vrcholu pro množiny o n prvcích lze použít libovolný binární strom o n vrcholech, vrcholy se ohodnotí dle definice Obrázek 7: Příklad binárního vyhledávacího stromu MEMBER C, ohodnocení vrcholů dáno funkcí c, pomocná proměnná v není-li strom prázdný, v = kořen strana 6

7 Dynamické datové struktury a) je-li C = c(v), je v hledaný vrchol konec b) je-li C < c(v) a v nemá levého následníka konec (neúspěch) c) je-li C > c(v) a v nemá pravého následníka konec (neúspěch) d) je-li C < c(v) a v má levého následníka v = levý následník v e) je-li C > c(v) a v má pravého následníka v = pravý následník v INSERT C podobné, v situaci b nebo c přidáme C jako nového následníka (viz Obrázek 8a) MIN, MAX provádíme operaci v = levý/pravý následník v tak dlouho, dokud následník eistuje. Až následník nebude, v je etrém DELETE v nemá-li v následníky, vynecháme jej má-li v 1 následníka, v vynecháme, následníka propojíme s otcem (viz Obrázek 8b) má-li v 2 následníky, w je levý následník, položíme z = w a opakujeme z = pravý následník z tak dlouho, dokud má z pravého následníka. Pak vrchol z přeneseme na pozici v a vrchol z vynecháme (viz Obrázek 8c) a) c) 8 b) Obrázek 8: Operace s vyhledávácím stromem náročnost do stromu o výšce h se vejde 2 h 1 prvků tzn výška pro n prvků je log(n + 1) je vhodné udžovat, pak je čas závislý na log n, pokud není až n čas operací je úměrný výšce stromu problém výšky při INSERT a DELETE se strom deformuje řešení používat algoritmy pro vyvažování, spolehnout se na náhodu (při větším množství náhodných operací je náročnost 1,4 log(n)) Vyvažování binárních stromů AVL strom je binární strom takový, že po každý jeho vrchol v platí strana 7

8 Dynamické datové struktury buď je v koncový vrchol nebo v má jediného následníka, kterým je koncový vrchol nebo v má 2 následníky s výškami h 1 a h 2, jejihž rozdíl je menší nebo roven 1 nebo-li strom, jehož všechny vrcholy jsou vyváženy, hloubka levého a pravého podstromu se liší ma o 1 Pro každý vrchol zavedeme funkce vrcholu l(v) a p(v), l(v) je rovno výšce levého a p(v) je rovno výšce pravého následníka. Pokud daný následník neeistuje, l(v) nebo p(v) = -1 Dále označíme b(v) = l(v) p(v).. pak vrchol v nazveme vyvážený, pokud je b(v) = -1, 0 nebo 1 Vznik nevyváženého vrcholu z z y y T3 T3 T1 T2 a) T1 T2 z z y y T3 T3 s s T1 T1 T2 b) T2' T2 Obrázek 9: Vznik a odstranění nevyvážeností při operaci INSERT v AVL stromu jedná se o případy, kdy se přidáním vrcholu do stromu změní hodnota b(v) z 1 na 2 (z -1 na -2) určení vrcholu, který je třeba vyvážit: vrchol leží na cestě od kořene stromu k přidanému vrcholu a platí b() = 1, je-li nový vrchol přidán vlevo od b() = -1, je-li nový vrchol přidán vpravo od Pro ostatní vrcholy y, které leží mezi a přidaným vrcholem, musí platit b(y) = 0, protože by se: buď změnilo b(y) z 1 nebo -1 na 0 pak zůstane zachována výška stromu a není třeba vyvažovat nebo se změnilo b(y) na 2 nebo -2, pak by ale vyvážení proběhlo v y a nebylo by třeba v strana 8

9 Dynamické datové struktury Na obrázku lze vidět 2 možné způsoby vzniku nevyvážeností původně měly T1 T3 stejnou výšku, po přidání prvku do stromu T1 (viz Obrázek 9a) nebo T2 (viz Obrázek 9b) se porušila vyváženost vrcholu vyváženost byla obnovena změnou tvaru stromu vyvažuje se vždy nejnižší nevyvážený vrchol algoritmus INSERT C vkládáme, T strom, c je ohodnocení, pro vrchol v je hodnota b(v) v právě probíraný vrchol, kandidát na vyvažování, u, z předchůdci v, 1) je strom prázdný ano vložíme kořen, konec ne v, = kořen, u = záhlaví 2) procházení stromem (opakování operací) a) C = c(v) C již eistuje, konec algoritmu b) C < c(v) a v nemá levého následníka přidáme k v levého následníka w, b(v)++, b(w) = 0, dále bod 3 c) C < c(v) a v má levého následníka provedeme: je-li b(v) nenulové, pak =v, z=u; poté (bez ohledu na b(v)) položíme u=v, v=levý následník v d) C > c(v) a v nemá pravého následníka přidáme k v pravého následníka w, b(v)--, b(w) = 0, dále bod 3 e) C > c(v) a v má pravého následníka provedeme: je-li b(v) nenulové, pak =v, z=u; poté (bez ohledu na b(v)) položíme u=v, v=levý pravý následník v 3) aktualizace hodnot b u všech vrcholů y, které leží na cestě od do v (včetně) zvýšíme b(y) o 1, pokud se sem pokročilo z 2c, nebo snížíme b(y) o 1, pokud se sem pokročilo z 2e 4) modifikace stromu pokud je po bodu 3 hodnota b() = 2 nastává situace z 10a, b, pokud je -2, nastává zrcadlově symetrická situace. Strom je třeba upravit dle obrázků 10a, b a u vrcholů s novými následníky je třeba provést odpovídající úpravu hodnoty b z z y y T3 T3 T1 T2 T1 T2 Obrázek 10: Vznik nevyvážeností při operaci DELETE v AVL stromu Při operaci DELETE lze opět použít ilustrace z obrázku 9, ovšem s následujícími změnami: T1 a T3 (a), resp T2 a T3 (b) měly původně stejnou výšku, o 1 větší než T2 resp T1.. Ubráním v T3 se narušila vyváženost, takže ji je třeba dle obrázků obnovit, dojde k poklesu výšky stromu obecně je třeba modifikaci provádět víckekrát (na rozdíl od INSERTU) Při DELETE může nastat další situace (viz Obrázek 10). T1-T3 měly stejnou výšku, v T3 byl ubrán prvek a strom je třeba modifikovat veškeré popsané situace mají své symetrické protějšky, jejichž řešení je analogické strana 9

10 Dynamické datové struktury algoritmus DELETE máme strom T, vrchol ke smazání v, pro vrchol w je dána hodnota b(w) 1) v má ma 1 následníka v vynecháme dle algoritmu pro vynechání vrcholu obecného vyhledávacího binárního stromu poté probíráme předchůdce v až ke kořeni, dokud se nedostaneme ke kořeni nebo není ukončen výpočet pro každého následníka w provedeme tyto operace: a) pokud jsme do w vstoupili z levého následníka a platí b(w) >=0, pak b(w)--, a bylo-li původně b(w)=0, výpočet ukončíme b) pokud jsme do w vstoupili z pravého následníka a platí b(w) <=0, pak b(w)++, a bylo-li původně b(w)=0, výpočet ukončíme c) není-li splněno a) ani b), nastala jedna ze situací z obrázků 9 a 10, provedeme příslušné úpravy, pokud nastala situace z obrázku 10, výpočet ukončíme 2) v má 2 následníky případ převedeme na případ 1 pomocí postupu uvedeného v algoritmu pro vynechání vrcholu obecného vyhledávacího binárního stromu operace MEMBER, MIN a MAX nemění výšku stromu není třeba vyvažovat použijeme-li MEMBER, MIN, MAX, upravený INSERT a upravený DELETE, všechny operace se stromem budou k provedení vyžadovat čas závislý na logaritmu počtu prvků Halda Jednoduchá datová struktura, umožňující rychlé provádění množinových operací INSERT a EXTRACT-MIN Jedná se o binární strom v následujícím tvaru: Každý vrchol haldy, který neleží v předposlední nebo poslední řadě, má 2 následníky v předposlední řadě následují zleva doprava vrcholy se dvěma následníky, pak případně jeden s jedním následníkem a pak již bez následníků Ohodnocení libovolného vrcholu není větší než ohodnocení kteréhokoliv z jeho následníků Počet vrcholů jednoznačně určuje tvar haldy výhoda umožňuje určovat předchůdce a následníky výpočtem vrcholy haldy lze uspořádat do posloupnosti v 1 v N tak, že levý následník v i je v 2i, pravý je v (2i+1) a předchůdce v i div 2 díky tomu lze haldu implementovat jako pole, halda velmi dobře využívá paměť Obrázek 11: Příklad haldy INSERT 1) vloží se nový vrchol za poslední vrchol v posledním řádku, je-li řádek plný, začne se nový 2) přidaný vrchol w se ohodnotí C strana 10

11 Dynamické datové struktury 3) není-li w kořen, pak je-li ohodnocení předchůdce z vrcholu w větší než ohodnocení w, pak se vrcholy prohodí, bod 3 opakujeme EXTRACT-MIN 1) vyjmeme kořen máme ihned nejmenší vrchol 2) vyjmeme nejposlednější vrchol a dáme jej na místo kořene, označíme w 3) dokud má w následníka s nižším ohodnocením, prohazujeme w s menším z méně ohodnocených následníků Haldu lze i uzpůsobit pro rychlé provádění EXTRACT-MAX definice je opačná k uvedené Reprezentace grafu Matice sousednosti nejjednodušší způsob maticové operace jsou podporovány většinou programovacích jazyků graf n je popsán čtvercovou maticí W o rozměrech n n, W[i, i] = 0 (stejný uzel 0 vzdálenost) W[i, j] = (mezi uzly i a j je hrana s ohodnocením ) W[i, j] = inf (mezi uzly není hrana) v případě malého počtu hran (rovinné grafy) plýtvání pamětí, výpočetní náročnost Reprezentace rovinných grafů každému vrcholu se přiřadí seznam sousedů (spojový seznam) L(H) H Q(H) Obrázek 12: Rovinný graf každá hrana je chápána jako dvojice opačně orientovaných hran hranu H popisuje ZAC(H), KON(H) počáteční a koncový vrchol, REV(H) = (KON(H), ZAC(H)) opačně orientovaná hrana Q(H) orientovaná hrana, začínající v témže vrcholu H, na kterou narazíme jako první při oběhu kolem ZAC(H) po směru pohybu hodinových ručiček Qinv(H) proti směru L(H), R(H) vychází z koncového vrcholu H, určené jako pokračování H co nejvíce doleva/doprava L(H) = Q(REV(H)), Q(H) = L(REV(H)) R(H) = Qinv(REV(H)), Qinv(H) = R(REV(H)) Třídění REV(H) Q2(H) slouží pro uspořádání skupiny datových typů pro urychlený přístup k informaci datový typ musí obsahovat klíč vlastnost, podle které je možné jej uspořádat strana 11

12 Třídění třídění uspořádání dat tak, aby jejich klíče vytvořily nerostoucí nebo neklesající posloupnost přirozené třídění je rychlejší pro částečně uspořádanou množinu stabilní třídění zachovává pořadí záznamů se stejnou hodnotou klíče (důležité při třídění podle více klíčů) základní metody Insert sort třídění přímým vkládáním třídění probíhá přímo při vkládání prvků před vložením prvku je třeba nalézt jeho pozici pomocí vhodné metody vyhledávání efektivita závisí na efektivitě vyhledávacího algoritmu (sekvenční hledání, binární hledání) přirozený a stabilní algoritmus Bubble sort třídění záměnou 2 prvků prochází se celá posloupnost, porovnávají se dva sousední prvky, pokud nevyhovují podmínce, jsou prohozeny velice jednoduchý algoritmus, pomalý (O(n 2 )) v nejhorším případě je potřeba projít celou posloupnost n 2 krát přirozený a stabilní algoritmus velice rychlý pro zjištění, zda je pole setříděné možná vylepšení zarážka, při každém průchodu sledujeme, zda došlo k záměně, pokud ne algoritmus končí shakersort třídění přetřásáním při každém průchodu měníme směr Shell sort úprava bubblesortu, neporovnávají se sousední prvky, ale prvky o vzdálenosti d, tato délka se po každém průchodu posloupností snižuje na polovinu algoritmus je nestabilní, přirozený Quicksort původní, neodvozená metoda, autor C.A.R Hoare (1962) princip v posloupnosti zvolíme číslo k, nalevo od něj dáme všechny prvky menší než k (část 1), pak necháme všechny prvky rovné k (část 2) a napravo dáme všechny prvky větší než k (část 3) poté setřídíme část 1 a část 3 vznikne uspořádaná posloupnost k setřídění použijeme opět quicksort rekurzivní volání pokračujeme, dokud nejsou podposloupnosti prázdné další varianta posloupnost dělíme pouze na 2 části v jedné části jsou prvky menší nebo rovno k, v druhé části jsou prvky větší než k nestabilní, nepřirozený algoritmus pro setříděná pole dává horší výsledky Heap sort pro třídění využívá vlastnosti hromady strana 12

13 Třídění neuspořádané prvky se použijí pro vytvoření hromady, pak se postupně odebírají z vrcholu výsledkem je setříděná posloupnost použití heapsortu je efektivní při větším množství prvků výsledky jsou téměř stejné pro setříděné i nesetříděné pole algoritmus je nepřirozený, nestabilní Prohledávání grafů metody, pomocí nichž lze jistými způsoby projít všechny vrcholy stromu nebo grafu, popřípadě provést v každém vrcholu nějakou operaci Prohledávání kořenových stromů kořenový strom speciální případ orientovených grafů objekty, které lze vyjádřit pomocí stromů jsou časté aritmetické vzorce, chemické vzorce (lineární popis lze snadno popsat pomocí prohledávání stromů) prohledávání do hloubky postup stromem co nejníže, až to již není možné - návrat prohledávání do šířky po vrstvách Prohledávání binárních stromů do hloubky postupný průchod všemi vrcholy, k přechodu se používají obousměrně prostupné orientované hrany na vrcholech lze provádět obecné operace OP1, OP2 a OP3 binární strom s kořenem r, pomocné proměnné v a w 1) v = r 2) neustále opakujeme 2a, 2b a 2c 2a) jestliže ve v nebyla provedena OP1, provedeme-ji, eistuje-li následník w, přejdeme do w a položíme v=w 2b) jestliže ve v byla provedena OP1, ale nebyla provedena OP2, provedeme-ji, eistuje-li pravý následník w, přejdeme do w a položíme v=w 2c) jestliže ve v byla provedena OP2, pak provedeme OP3, pokud je v=r, konec výpočtu, jinak přejdeme do předchůdce w, v=w součástí OP1, OP2 je poznámka vlevo/vpravo jsme již byli operace OP1, 2, 3 lze využít k výpisu stromu * * C - F A B D E a) b) Obrázek 13: Obrázky k procházení binárních stromů strana 13

14 Prohledávání grafů příklad OP1 vypíše levou závorku, OP2 vypíše vrchol, OP3 vypíše pravou závorku výsledek: ((((A) + (B) * (C)) + (((D) (E) * (F))) OP3 vypíše vrchol, OP1, 2 nic výsledek: A B + C * D E F * + lineární výpis užívající OP1 preorder, OP2 inorder, OP3 postorder použití překlad různých způsobů zápisu hiearchických struktur Prohledávání kořenového stromu do hloubky implementace pomocí zásobníku šetření pamětí místo toho, aby každý vrchol měl ukazatele i na předchůdce, tak si zásobník 'pamatuje' pouze cestu z kořene do aktuálního vrcholu 1) do zásobníku vložíme kořen r 2) dokud není zásobník prázdný, opakujeme následující operace: 2a) odebereme vrchol zásobníku v 2b) zpracujeme vrchol v 2c) do zásobníku uložíme všechny syny v Prohledávání kořenového stromu do šířky implementace pomocí fronty 1) do fronty umístíme kořen r 2) dokud není fronta prázdná, opakujeme následující operace: 2a) odebereme první prvek fronty v 2b) zpracujeme vrchol v 2c) na konec fronty uložíme všechny následníky v Prohledávání grafů systematické prohledávání neorientovaných grafů tak, aby byla každá hrana probrána právě 1 Prohledávání neorientovaného grafu máme graf G, zavedeme množiny U (dosud neprobrané hrany), N (dosud neprobrané vrcholy), D (probrané vrcholy, z nichž vedou neprobrané hrany) 1) Inicializace N = množina vrcholů grafu G, U = množina hran grafu G, D = 0 2) Test ukončení D je prázdné (v tomto bodě vždy), je- li N prázdné, algoritmus končí 3) Volba prvního vrcholu v komponentě zvolíme v z množiny N, vyjmeme jej a položíme D = {v} 4) Volba počátku probírané hrany zvolíme libovolně w z D 5) Test použitelnosti w jestliže neeistuje hrana, vycházející z w a ležící v U, vyjmeme w z D, pokud je pak D prázdné, jdeme do bodu 2, jinak do bodu 4. Pokud hrana eistuje, jdeme do bodu 6. 6) Průchod hranou zvolíme hranu h = {w, z}, která vychází z w a leží v U. Projdeme hranou h od w do z, vyjmeme ji z U a pokud je z v N, vyjmeme jej a vložíme do D. Následuje bod 4 rychlost O(n+m), kde n je počet vrcholů a m je počet hran použití množiny U zabraňuje vícenásobnému probírání hran strana 14

15 Prohledávání grafů způsob průchodu závisí na implementaci D: prohledávání do hloubky D je implementována jako zásobník prohledávání do šířky D je implementována jako fronta stromy a lesy prohledávání hrany (w, z) (orientované ve směru průchodu), kterými se došlo v bodě 6 do vrcholu z, který ještě nebyl dosažen, se nazývají základní základní orientované hrany vytvářejí v každé komponentě grafu strom prohledávání, v nesouvislém grafu tyto stromy tvoří les prohledávání vlastnosti: Je-li h(w, z) hrana souvislého grafu G, pak ve stromě prohledávání grafu G do hloubky je jeden z vrcholů w a z přímým nebo nepřímým následníkem toho druhého Cesta z vrcholu v do vrcholu w v souvislém grafu G, která obsahuje nejmenší počet hran, je udána orientovanou cestou z v do w ve stromu prohledávání grafu G do šířky, která začíná ve vrcholu v. Tzn tu z cest s minimálním počtem hran lze určit v čase úměrném počtu vrcholů a hran Prohledávání orientovaného grafu modifikace algoritmu pro prohledávání neorientovaného grafu U je množina orientovaných hran grafu G, u vrcholu w testujeme, zda je počátečním vrcholem některé z hran v U i orientovaný graf lze prohledávat do šířky a do hloubky Backtracking, metoda větví a mezí časté techniky při návrhu kombinatorických algoritmů obecné zadání dány množiny X 1.. X N, dále množina A, která je podmnožinou X 1.. X N, jejíž prvky se nazývají přípustná řešení, a nakonec účelová funkce F, která každému prvku A přiřazuje reálné číslo. Cílem je nalézt přípustné řešení z množiny A s minimální hodnotou F řešení se hledá jako posloupnost částečných řešení ( 1), ( 1, 2),.., ( 1,.., N) mnohdy je obtížné poznat, která částečná řešení vedou k přípustnému, tak se zahrnují všechna řešení, u kterých není rozvinutí do řešení přípustného evidentně vyloučeno jsou dány množiny A 1,.. A N = A, kde A i jsou přípustná částečná řešení, formálně se přidává A 0 obsahující prázdnou posloupnost.. strom problému kořenový strom, jehož vrcholy jsou přípustná částečná řešení, koncovými vrcholy jsou přípustná řešení z A a částečná přípustná řešení, která nelze prodlužovat základ backtrackingu prohledávání stromu do hloubky, postupné vybírání řešení s minimální hodnotou F strom problémů je veliký snažíme se nalézt částečná řešení, která jako neprespektivní nebudeme prodlužovat princip máme D (dolní) a H (horní) odhad hodnoty účelové funkce minimálního přípustného řešení takové že: pro každé přípustné řešení je D F( 1,.., N) a eistuje alespoň jedno přípustné řešení, pro něž F( 1,.., N) H pro částečná řešení lze většinou stanovit dolní odhad hodnoty účelové funkce po prodloužení F 1 ( 1) F 2 ( 1, 2).. F N ( 1,.., N) = F( 1,.., N) je-li nalezeno přípustné řešení ( 1,.., N), pak: je-li F( 1,.., N) = D lze skončit, F je optimální strana 15

16 Prohledávání grafů je-li F( 1,.., N) < H H lze zpřesnit (zmenšit) je-li F( 1,.., N) H, pak je neúčelné pokračovat v rozvíjení už znám lepší řešení, tohle se může jen zhoršit Úlohy řešitelné v polynomiálně omezeném čase úlohy, pro něž jsou známé algoritmy, které zpracovávají v dostatečně krátkém čase i velká vstupní data rychlost algoritmu je uspokojivá i v nepříznivém případě Cesty v grafech předpokládáme orientovaný graf, orientované hrany, orientované cesty délka cesty v grafu je rovna součtu ohodnocení všech hran této cesty délka nesouvisí s počtem hran cesty, nemusí ani znamenat skutečnou vzdálenost vzdálenost z vrcholu u do vrcholu v je délka nejkratší cesty z u do v, pokud cesta neeistuje, délka je inf vdálenost vrcholu do sebe samého je 0 základní úlohy: 1. pro dané vrcholy u, v určit vzdálenost cesty z u do v 2. pro daný vrchol u nalézt vzdálenosti z u do každého vrcholu grafu 3. pro daný vrchol v nalézt vzdálenosti z libovolného uzlu do v 4. určit vzdálenosti mezi všemi dvojicemi uzlů v grafu úlohy 2 a 3 jsou vzájemně převoditelné, řešení úlohy 1 zahrnuje i řešení úloh 2 a 3, rozdíl při určení hledané vzdálenosti lze přerušit omezující předpoklady: buď jsou délky všech cest nezáporné anebo se jedná o acyklický graf jsou-li délky všech cest rovny jedné, pak lze minimální cestu nalézt pomocí procházení do šířky, pokud je vyšší procházení do šířky nestačí Dijkstrův algoritmus algoritmus pro určení vzdáleností z daného vrcholu nezáporně hranově ohodnoceného grafu (řešení úloh 1, 2, 3) vstup: nezáporně ohodnocený orientovaný graf G a jeho vrchol u cíl: pro každý vrchol v grafu G určit vzdálenost z u do v (d v) proměnné: M množina vrcholů, pro které není určeno d v pro každý vrchol v je udán vrchol V v, který je předposledním vrcholem nejkratší cesty z u do v a neprochází vrcholy množiny M L vw přímá vzdálenost z vrcholu v do vrcholu w 1. Inicializace: je-li v = w, pak L vw = 0 je-li (v, w) hrana G, pak L vw = délka hrany (v, w) jinak L vw = inf M množina vrcholů G mimo u d u = 0, V u = u je-li v vrchol z G různý od u, položíme d v = L vw a je-li d v < inf, položíme V v = u 2. Test ukončení je-li M prázdná, konec výpočtu 3. Určení d v pro další vrchol z M vybereme vrchol s nejmenším d v, je-li jich více, pak libovolný. Pokud je d v rovno inf, strana 16

17 Úlohy řešitelné v polynomiálně omezeném čase konec výpočtu, jinak vyjmeme v z M 4. Aktualizace d w a V w. je-li v vrchol vybraný v bodě 3, pak pro každý vrchol w ležící v M provedeme (v případě, že platí d v + L vw < d w) příkazy V w = v, d w = d v + L vw 5. Skok do bodu 2 algoritmus pracuje v čase O(n 2 ) krok 1 čas O(n 2 ), kroky 2-5 provedeny maimálně n - 1 krát (pokaždé ubyde alespoň jeden vrchol) algoritmus lze použít i pro řešení úlohy 4 určit vzdálenosti pro každý vrchol, vhodnější jsou jiné metody: Floydův algoritmus pro matici nejkratších cest vstup: nezáporně ohodnocený orientovaný graf G s vrcholy v 1.. v N cíl: pro každou dvojici i, j určit d ij, vzdálenost z v i do v j 1. Inicializace: Pro každé i, j takové, že i je větší nebo rovno jedné, j je menší nebo rovné n, položme: pokud i=j, d ij = 0 je-li (v i, v j) hrana grafu G, pak d ij je délka hrany (v i, v j) pokud se i nerovná j a (v i, v j) není hrana grafu G, pak je d ij rovno inf 2. cyklus pro k = 1.. n 2a. pro každou dvojici i, j takovou, že i je větší nebo rovno jedné, j je menší nebo rovné n a i není rovno j, položme: d ij = min (d ij, d ik + d kj) algoritmus pracuje v čase O(n 3 ) Topologické uspořádání grafů pro obecně ohodnocený acyklický graf nelze použít Dijkstrův algoritmus mohl by dávat špatné výsledky postup vytvoříme topologické uspořádání grafu: vrcholy se seřadí do posloupnosti v 1.. v N tak, aby pro každou orientovanou hranu (v i, v j), bylo i < j algoritmus: vstup: orientovaný graf G s n vrcholy proměnné: pro každý vrchol v je definováno číslo C v počet dosud nevybraných vrcholů, z nichž vede hrana do vrcholu v M množina dosud nevybraných vrcholů, pro které je C v = 0 1. určení C v pro každý vrchol v položíme C v = 0, pro každou hranu (v, w) inkrementujeme C w o 1 2. inicializace M do M uložíme všechny vrcholy, které stále mají C v = 0 3. inicializace čítače i = 0 4. test cykličnosti pokud je M prázdná a i < n, pak výpočet končí G obsahuje cyklus a tím pádem neeistuje hledané pořadí vrcholů 5. určení dalšího vrcholu zvolíme libovolný vrchol z M, odebereme jej z M, inkrementujeme čítač o 1 a vybraný vrchol v označíme jako v i 6. test ukončení je-li i = n, výpočet končí (pořadí je určeno) 7. aktulaizace C w a M pro každou orientovanou hranu (v i, w) zmenšíme C w o 1, pokud je C w = 0, přidáme vrchol w do množiny M 8. skok na bod 4 strana 17

18 Úlohy řešitelné v polynomiálně omezeném čase algoritmus pracuje v čase O(n + m), n je počet uzlů, m je počet hran Hledání etremálních cest v acyklickém grafu vstup: hranově ohodnocený orientovaný graf G a jeho vrchol u cíl: ověřit acykličnost grafu G, a je-li G acyklický, určit délky nejkratších respektive nejdelších cest z vrcholu u do všech ostatních vrcholů G proměnné: pro každý vrchol číslo d v 1. provedeme topologické uspořádání podle předchozího algoritmu do posloupnosti v 1.. v N, pokud neeistuje výpočet končí 2. inicializace d u = 0 je-li (u, v i) hrana v G, pak d vi = délka (u, v i) pokud se u nerovná v i a (u, v i) není v G, pak: d vi = inf, hledáme-li nejkratší cestu d vi = -inf, hledáme-li nejdelší cestu 3. určování d v předpokládáme, že u = vp pro i = p, p+1,.., n provedeme pro každou hranu (v i, v j) začínající ve v i tyto operace: d = délka hrany (v i, v j) d vj = min(d vj, d vi + d), hledá-li se nejkratší cesta d vj = ma(d vj, d vi + d), hledá-li se nejdelší cesta algoritmus pracuje v čase O(n + m), n je počet uzlů, m je počet hran Minimální kostra grafu ohodnocení hrany grafu nazveme cenou cílem hledání minimální kostry grafu je nalézt systém hran, které navzájem propojí všechny vrcholy grafu co nejlacinějším způsobem tzn hledáme podgraf H grafu G, který má tutéž množinu vrcholů, je souvislý a má nejmenší možný součet cen svých hran S Y Z 2 4 U 3 X 10 7 W Obrázek 14: Minimální kostra grafu V Borůvkův-Choquetův-Kruskalův algoritmus princip: hrany grafu se uspořádají neklesajícím způsobem podle svých cen, poté se v tomto pořadí probírají a do vytvářeného grafu H se přidají ty z nich, které nezpůsobí vznik kružnice s hranami, které již v grafu H leží strana 18

19 Úlohy řešitelné v polynomiálně omezeném čase vstup: kladně ohodnocený souvislý neorientovaný graf G cíl: najít minimální kostru H grafu G pomocná proměnná: faktorová množina na vrcholech grafu G 1. uspořádání hran hrany G se uspořádají podle ceny neklesajícím způsobem 2. inicializace V(H) = V(G), E(H) = prázdná, faktorová množina vyjadřuje rozdělení V(H) do jednoprvkových množin 3. přidání hrany hrany G se probírají v pořadí určeném bodem 1 a pro každou hranu h = (u, v) se provedou následující operace: provedením FIND(u) a FIND(v) ve faktorové množině se určí komponenty U, V grafu H, v nichž leží vrcholy u a v a pokud se U nerovná V, přidá se h do E(H) a provede se UNION(U, V) algoritmus pracuje pro graf s n vrcholy a m hranami v čase O(m.log n). časově nejnáročnější je uspořádání hran Jarnikův-Primův algoritmus může být výhodnější pro grafy s velkým počtem hran (řádově n 2 ) provedením i rychlostí se podobá Dijkstrovu algoritmu vstup: kladně ohodnocený graf G cíl: nalézt minimální kostru H pomocné proměnné: M množina vrcholů dosud nepokrytých H V v pro každý vrchol v, proměnná je buď nedefinovaná, nebo rovna vrcholu, ke kterému byl v napojen d v v případě eistence V v je rovno délce hrany spojující v a V v 1. Inicializace Zvolíme libovolný vrchol v grafu G. Do V(H) vložíme u, E(H) = prázdná, M = V(G) bez u pro každý vrchol v z množiny M provedeme: je-li (u, v) hrana grafu G, pak V v = u, d v = ohodnocení (u, v), jinak je V v nedefinováno a d v = inf 2. Test ukončení Je-li množina M prázdná, výpočet končí 3. Určení další hrany H Zvolme prvek v množiny M, pro který je d v minimální. Přidáme v do V(H), hranu (v, V v) do E(H) a vyjmeme v z M 4. Aktualizace d w a V w Pro každý vrchol z M provedeme: je-li (v, w) hrana grafu G vycházející z vrcholu v, a její ohodnocení je menší než d w, pak položímke V w = v, d w = ohodnocení (v, w) 5. skok na bod 2 podoba s Dijkstrovým algoritmem d v není vzdálenost z v do u, ale z v do nejbližšího vrcholu grafu H (čemuž je přizpůsobeno V v) algoritmus pracuje v O(n 2 ) Obecné schéma hledání minimální kostry vstup: kladně ohodnocený graf G cíl: nalézt minimální kostru H pomocné proměnné: podgraf L grafu G neobsahující kružnice (les) 1. Inicializace V(L) = V(G), E(L) = 0 2. Test ukončení Je-li L strom, položíme H=L a výpočet končí 3. Volba komponenty Zvolme libovolně komponentu C grafu L 4. Určení nejbližší komponenty Z hran tvaru (u, v), kde u je z C a v ne, vybereme hranu s minimálním ohodnocením. strana 19

20 Úlohy řešitelné v polynomiálně omezeném čase Jako D označíme komponentu, ve které leží vrchol v zvolené hrany 5. Spojení komponent Hranu vybranou v bodě 4 přidáme do E(L) dojde ke spojení komponenty C, D grafu L v jednu 6. skok na bod 2 výsledek jedna z komponent L je hledaná kostra H, další komponenty jsou jednoprvkové strana 20

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

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest Obsah prezentace Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest 1 Základní pojmy Vrchol grafu: {množina V} Je to styčná vazba v grafu, nazývá se též uzlem, prvkem

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

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Vzdálenost uzlů v neorientovaném grafu

Vzdálenost uzlů v neorientovaném grafu Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující

Více

Úvod do teorie grafů

Úvod do teorie grafů Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí

Více

Algoritmy na ohodnoceném grafu

Algoritmy na ohodnoceném grafu Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus

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

ALGORITMY A DATOVÉ STRUKTURY

ALGORITMY A DATOVÉ STRUKTURY Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu

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

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

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 Grafové úlohy Daniela Szturcová Tento

Více

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

Více

07 Základní pojmy teorie grafů

07 Základní pojmy teorie grafů 07 Základní pojmy teorie grafů (definice grafu, vlastnosti grafu, charakteristiky uzlů, ohodnocené grafy) Definice grafu množina objektů, mezi kterými existují určité vazby spojující tyto objekty. Uspořádaná

Více

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019 Grafy 16. dubna 2019 Tvrzení. Je dán graf G, pak následující je ekvivalentní. 1 G je strom. 2 Graf G nemá kružnice a přidáme-li ke grafu libovolnou hranu, uzavřeme přesně jednu kružnici. 3 Graf G je souvislý

Více

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší

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

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

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta. 6 RNDr., Ph.D. Katedra didaktiky matematiky Univerzita Karlova v Praze Matematicko-fyzikální fakulta petra.surynkova@mff.cuni.cz http://surynkova.info množina vrcholů a množina hran hrana vždy spojuje

Více

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší

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

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

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

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

Více

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

Více

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Základy informatiky Teorie grafů Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Obsah přednášky Barvení mapy Teorie grafů Definice Uzly a hrany Typy grafů Cesty, cykly, souvislost grafů Barvení mapy

Více

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste

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

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

Prioritní fronta, halda

Prioritní fronta, halda Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje

Více

Stromy. Jan Hnilica Počítačové modelování 14

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

Více

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

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

Více

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat

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

Algoritmizace řazení Bubble Sort

Algoritmizace řazení Bubble Sort Algoritmizace řazení Bubble Sort Cílem této kapitoly je seznámit studenta s třídícím algoritmem Bubble Sort, popíšeme zde tuto metodu a porovnáme s jinými algoritmy. Klíčové pojmy: Třídění, Bubble Sort,

Více

TGH05 - aplikace DFS, průchod do šířky

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

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

Da D to t v o é v ty t py IB111: Datové typy

Da D to t v o é v ty t py IB111: Datové typy Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité

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

Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66

Teorie grafů BR Solutions - Orličky Píta (Orličky 2010) Teorie grafů / 66 Teorie grafů Petr Hanuš (Píta) BR Solutions - Orličky 2010 23.2. 27.2.2010 Píta (Orličky 2010) Teorie grafů 23.2. 27.2.2010 1 / 66 Pojem grafu Graf je abstraktní pojem matematiky a informatiky užitečný

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 Třídění, vyhledávání Daniela Szturcová

Více

5 Orientované grafy, Toky v sítích

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

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í

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

Více

Operační výzkum. Síťová analýza. Metoda CPM.

Operační výzkum. Síťová analýza. Metoda CPM. Operační výzkum Síťová analýza. Metoda CPM. Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační číslo

Více

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší

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

4EK311 Operační výzkum. 5. Teorie grafů

4EK311 Operační výzkum. 5. Teorie grafů 4EK311 Operační výzkum 5. Teorie grafů 5. Teorie grafů definice grafu Graf G = uspořádaná dvojice (V, E), kde V označuje množinu n uzlů u 1, u 2,, u n (u i, i = 1, 2,, n) a E označuje množinu hran h ij,

Více

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

Algoritmy II. Otázky k průběžnému testu znalostí Algoritmy II Otázky k průběžnému testu znalostí Revize ze dne 19. února 2018 2 Lineární datové struktury 1 1. Vysvětlete co znamená, že zásobník představuje paměť typu LIFO. 2. Co je to vrchol zásobníku?

Více

3. Prohledávání grafů

3. Prohledávání grafů 3. Prohledávání grafů Prohledání do šířky Breadth-First Search BFS Jde o grafový algoritmus, který postupně prochází všechny vrcholy v dané komponentě souvislosti. Algoritmus nejprve projde všechny sousedy

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

Více

Binární soubory (datové, typované)

Binární soubory (datové, typované) Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i

Více

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme

Více

Použití dalších heuristik

Použití dalších heuristik Použití dalších heuristik zkracování cesty při FIND-SET UNION podle hodností Datové struktury... p[x] - předchůdce uzlu x MAKE-SET(x) p[x] := x hod[x] := 0 hod[x] - hodnost (aprox. výšky) UNION(x,y) LINK(FIND-SET(x),

Více

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v

Více

Základní pojmy teorie grafů [Graph theory]

Základní pojmy teorie grafů [Graph theory] Část I Základní pojmy teorie grafů [Graph theory] V matematice grafem obvykle rozumíme grafické znázornění funkční závislosti. Pro tento předmět je však podstatnější pohled jiný. V teorii grafů rozumíme

Více

TGH07 - Chytré stromové datové struktury

TGH07 - Chytré stromové datové struktury TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 1. dubna 2014 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním

Více

TGH05 - aplikace DFS, průchod do šířky

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

Jan Březina. 7. března 2017

Jan Březina. 7. března 2017 TGH03 - stromy, ukládání grafů Jan Březina Technical University of Liberec 7. března 2017 Kružnice - C n V = {1, 2,..., n} E = {{1, 2}, {2, 3},..., {i, i + 1},..., {n 1, n}, {n, 1}} Cesta - P n V = {1,

Více

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd.

Graf. Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd. Graf 2 0 3 1 4 5 Uzly Lokality, servery Osoby fyzické i právní Informatické objekty... atd. Hrany Cesty, propojení Vztahy Informatické závislosti... atd. Běžné reprezentace grafu Uzly = indexy Stupně uzlů

Více

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi

Více

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů Barvení mapy Kolik barev je

Více

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

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

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

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě

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

Lineární datové struktury

Lineární datové struktury Lineární datové struktury 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) Lineární datové

Více

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

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

Základní datové struktury

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

Více

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet. 4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a

Více

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

Více

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

Datový typ prioritní fronta Semestrální práce z předmětu 36PT Datový typ prioritní fronta Semestrální práce z předmětu 36PT Martin Tůma Cvičení 113, Út 18:00 22. května 2004 Specifikace problému Často potřebujeme přístup k informacím, tak aby tyto byly seřazeny podle

Více

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

Více

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel,

Anotace. Spojové seznamy, haldy. AVL-stromy, A-B stromy. Martin Pergel, Anotace Spojové seznamy, fronta a zásobník. Vyvážené binární stromy, AVL-stromy, červeno-černé stromy, A-B stromy. Hashování, haldy. Typologie spojových seznamů jednosměrný a obousměrný prvek ukazuje jen

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 13. Otázka : Základní datové struktury (pole, zásobník, binární strom atd.), datové struktury vhodné pro fyzickou implementaci relačních dat v SŘBD (hašovací

Více

1 Teorie grafů. Základní informace

1 Teorie grafů. Základní informace Teorie grafů Základní informace V této výukové jednotce se student seznámí s matematickým pojetím grafů a na konkrétních příkladech si vyzkouší vybrané algoritmy pro hledání v grafech. Výstupy z výukové

Více

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

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých

Více

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

TEORIE GRAFŮ TEORIE GRAFŮ 1

TEORIE GRAFŮ TEORIE GRAFŮ 1 TEORIE GRAFŮ 1 TEORIE GRAFŮ Přednášející: RNDr. Jiří Taufer, CSc. Fakulta dopravní ČVUT v Praze, letní semestr 1998/99 Zpracoval: Radim Perkner, tamtéž, v květnu 1999 ZÁKLADNÍ POJMY Říkáme, že je dán prostý

Více

Lineární spojový seznam (úvod do dynamických datových struktur)

Lineární spojový seznam (úvod do dynamických datových struktur) Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky

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

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání Select sort: krok 1: výběr klíče z n prvků vyžaduje 1 porovnání krok 2: výběr klíče z 1 prvků vyžaduje 2 porovnání krok 3: výběr klíče z 2 prvků vyžaduje 3 porovnání atd. celkem porovnání Zlepšení = použít

Více

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software. Maturitní témata IKT, školní rok 2017/18 1 Struktura osobního počítače Von Neumannova architektura: zakreslete, vysvětlete její smysl a popište, jakým způsobem se od ní běžné počítače odchylují. Osobní

Více

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

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í

Více

TGH07 - Chytré stromové datové struktury

TGH07 - Chytré stromové datové struktury TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 5. dubna 2017 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním

Více

Ohodnocené orientované grafy

Ohodnocené orientované grafy Ohodnocené orientované grafy Definice Buď G graf Funkce w : H( G) (, ) se nazývá (hranové) ohodnocení grafu G; graf se zadaným ohodnocením se nazývá ohodnocený graf Definice Nechť G je orientovaný graf

Více

Konvexní obal a množina

Konvexní obal a množina Definice M Množina se nazývá konvení, jestliže úsečka spojující libovolné dva její bod je částí této množin, tj. ab, M, t 0, : ta+ ( tb ) M konvení množina a b a b nekonvení množina Definice Konvení obal

Více

STROMY A KOSTRY. Stromy a kostry TI 6.1

STROMY A KOSTRY. Stromy a kostry TI 6.1 STROMY A KOSTRY Stromy a kostry TI 6.1 Stromy a kostry Seznámíme se s následujícími pojmy: kostra rafu, cyklomatické číslo rafu, hodnost rafu (kořenový strom, hloubka stromu, kořenová kostra orientovaného

Více

ABSTRAKTNÍ DATOVÉ TYPY

ABSTRAKTNÍ DATOVÉ TYPY Jurdič Radim ABSTRAKTNÍ DATOVÉ TYPY Veškeré hodnoty, s nimiž v programech pracujeme, můžeme rozdělit do několika skupin zvaných datové typy. Každý datový typ představuje množinu hodnot, nad kterými můžeme

Více

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO

HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO HEURISTICKÉ ALGORITMY PRO ŘEŠENÍ ÚLOH OBCHODNÍHO CESTUJÍCÍHO Heuristické algoritmy jsou speciálními algoritmy, které byly vyvinuty pro obtížné úlohy, jejichž řešení je obtížné získat v rozumném čase. Mezi

Více

Metody síťové analýzy

Metody síťové analýzy Metody síťové analýzy Řeší problematiku složitých systémů, zejména pak vazby mezi jejich jednotlivými prvky. Vychází z teorie grafů. Základní metody síťové analýzy: CPM (Critical Path Method) deterministický

Více

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

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy Volné stromy Úvod do programování Souvislý, acyklický, neorientovaný graf nazýváme volným stromem (free tree). Často vynecháváme adjektivum volný, a říkáme jen, že daný graf je strom. Michal Krátký 1,Jiří

Více

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

Více

7. Funkce jedné reálné proměnné, základní pojmy

7. Funkce jedné reálné proměnné, základní pojmy , základní pojmy POJEM FUNKCE JEDNÉ PROMĚNNÉ Reálná funkce f jedné reálné proměnné je funkce (zobrazení) f: X Y, kde X, Y R. Jde o zvláštní případ obecného pojmu funkce definovaného v přednášce. Poznámka:

Více

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

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?

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

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

CLARKEOVA-WRIGHTOVA METODA ŘEŠENÍ ÚLOHY VRP

CLARKEOVA-WRIGHTOVA METODA ŘEŠENÍ ÚLOHY VRP CLARKEOVA-WRIGHTOVA METODA ŘEŠENÍ ÚLOHY VRP 1. Definice úlohy Úloha VRP (Vehicle Routing Problem problém okružních jízd) je definována na obecné dopravní síti S = (V,H), kde V je množina uzlů sítě a H

Více