Grafové algoritmy.

Slides:



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

Deduktivní soustava výrokové logiky
NEJKRATŠÍ CESTY MEZI VŠEMI UZLY
PLANARITA A TOKY V SÍTÍCH
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Průchod grafu do šířky.
Stavový prostor. • Existují úlohy, pro které není k dispozici univerzální algoritmus řešení • různé hry • problém batohu, problém obchodního cestujícího.
LOGISTICKÉ SYSTÉMY 6/14.
10. Dynamické datové struktury
Grafové algoritmy Programovací techniky.
Diskrétní matematika Opakování - příklady.
Aplikace teorie grafů Základní pojmy teorie grafů
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Prezentace zadání a řešení Teorie.
Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/ Úvod do teorie grafů.
ALGO – Algoritmizace 1. cvičení
Algebra.
Teorie čísel Nekonečno
Sample Solutions CTU Open Contest 2012 Czech Technical University in Prague.
Varianty Turingova stroje Výpočet funkcí pomocí TS
Algoritmizace 9. Ročník.
ADT Strom.
FORMALIZACE PROJEKTU DO SÍŤOVÉHO GRAFU
LOGISTICKÉ SYSTÉMY 7/14.
LOGISTICKÉ SYSTÉMY 8/14.
Řešení dynamických problémů s podmínkami Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta.
SÍŤOVÁ ANALÝZA.
Algoritmizace.
TI 6.1 STROMY A KOSTRY Stromy a kostry. TI 6.2 Stromy a kostry Seznámíme se s následujícími pojmy: kostra grafu, cyklomatické číslo grafu, hodnost grafu.
TI 7.1 NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6. TI 7.2 Nejkratší cesty z jednoho uzlu Seznámíme se s následujícími pojmy: w-vzdálenost (vzdálenost na.
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Základní teorie grafů a její aplikace
KIV/PRO Cvičení Přátelské mince Mějme nově založený stát – Je potřeba vydat vlastní měnu – Uvažujme pouze mince, bankovky zanedbáme Vstup:
Stromy.
Predikátová logika.
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ Ústav technologie, mechanizace a řízení staveb Fakulta stavební VUT v Brně © Ing. Václav Rada, CSc. 15. PŘEDNÁŠKA.
Algebra II..
Další typy dopravních problémů
Univerzita Karlova Matematicko-fyzikální fakulta Lukáš Jirovský Teorie grafů – prezentace Bc. Práce Vedoucí práce: RNDr. Pavla Pavlíková, Ph.D.
CW – 05 TEORIE ROZHODOVACÍCH PROCESŮ
STROMY Datová struktura sestávající z uzlů
VLASTNOSTI GRAFŮ Vlastnosti grafů - kap. 3.
Teorie grafů.
Formální modely výpočtu Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
Matematické metody optimalizace. Příkady grafů Železniční stanice, tratě mezi nimi Města, silnice Křižovatky, ulice Uzly kanalizace, potrubí Místnosti,
Algoritmus a jeho vlastnosti
Matematické metody optimalizace Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
Kostra grafu Prohledávání grafu
Jedna z největších světových firem v oblasti logistiky 20 leté zkušenosti po celém světě Konzultantské služby.
Kompresní algoritmus LZW Dokumentografické informační systémy.
Turingův stroj.
Barvení grafů Platónská tělesa
Tomáš Vambera. Přístroje  Mobilní telefony  Přenosné počítače (Pda)  GPS Přístroje.
Kanonické indexování vrcholů molekulového grafu Molekulový graf: G = (V, E, L, ,  ) Indexování vrcholů molekulového grafu G: bijekce  : V  I I je indexová.
Doc. Josef Kolář (ČVUT)Prohledávání grafůGRA, LS 2010/11, Lekce 4 1 / 15Doc. Josef Kolář (ČVUT)Prohledávání stavového prostoruGRA, LS 2013/14, Lekce 11.
Vstup: Úplný graf G=(V,E), ohodnocení hran d:E → R + Výstup: Nejkratší Hamiltonovská cesta HC v grafu G Najdi minimální kostru K grafu G Pokud K neobsahuje.
Planarita a toky v sítích
Les, stromy a kostry Kružnice: sled, který začíná a končí ve stejném vrcholu, ostatní vrcholy jsou různé Souvislý graf: mezi každými dvěma vrcholy existuje.
Hledání silně souvislý komponent Silně souvislá komponenta orientovaného grafu G= (V,E) je maximální množina uzlů UV taková že ∀ u,v ∈ V : u je dosažitelné.
NEJKRATŠÍ CESTY Nejkratší cesty - kap. 6.
Základní pojmy v automatizační technice
STROMY A KOSTRY Stromy a kostry - odst. 3.2.
Znázornění dopravní sítě grafem a kostra grafu Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
Maximální propustnost rovinné dopravní sítě
MINIMÁLNÍ KOSTRA V GRAFU
Běžné reprezentace grafu
Výpočetní složitost algoritmů
Toky v sítích.
Algoritmizace a datové struktury (14ASD)
NEJKRATŠÍ CESTY MEZI VŠEMI UZLY
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Grafové algoritmy

Opakování z minulé přednášky Co je to strom, les, kostra? Co je to kotřenový strom? Co je to binární vyhledávací strom? Co je to AVL strom? Jak funguje? Jak funguje řazení haldou?

Osnova dnešní přednášky Prohledávání grafu do hloubky, do šířky Bloudění v bludišti Tarryho algoritmus Hledání nejkratší cesty Moorův, Dijkstrův, Bellman-Fordův, Floyd-Warshallův algoritmus Hledání nejdelší / nejširší / nejbezpečnější cesty Hledání minimální kostry Kruskalův-Borůvkův, Jarníkův-Primův algoritmus

Systematické navštívení / zpracování všech uzlů v grafu Prohledávání grafu Systematické navštívení / zpracování všech uzlů v grafu Prohledávání do šířky datová struktura fronta Prohledávání do hloubky datová struktura zásobník

Obecný algoritmus prohledávání Vstup: Souvislý graf G Výstup: Posloupnost všech uzlů grafu G Inicializace: Vlož libovolný uzel do D Dokud je D neprázdné, opakuj Vyber uzel, který je na řadě Zpracuj / vypiš jej Všechny jeho neoznačkované následovníky označkuj a vlož do D D = fronta / zásobník podle způsobu prohledávání Díky značkování zpracujeme každý uzel právě jednou

Tarryho algoritmus bloudění Hledání cesty z bludiště pomocí prohledávání do hloubky Bludiště je tvořeno místnostmi, z nichž vedou dveře do chodeb spojujících jednotlivé místnosti Nemáme k dispozici mapu V každé místnosti je kousek křídy můžeme uchovávat lokální informaci

Tarryho algoritmus: popis Založen na značkování dveří podle následujících pravidel: vstoupíš-li do místnosti, kde žádné dveře nejsou označeny, označkuj vstupní dveře “IN” jsi-li v místnosti s alespoň jedněmi neoznačkovanými dveřmi, označ je “OUT” a projdi chodbou za nimi do následující místnosti jsi-li v místnosti, kde jsou všechny dveře označeny, vstup do dveří označených “IN” vstoupíš-li do místnosti, kde jsou všechny dveře označeny “OUT”, z bludiště není východ

Tarryho algoritmus: vlastnosti Nemá-li bludiště východ, po skončení bude každá chodba projítá právě dvakrát jednou tam a jednou zpátky nikdy nejdeme stejnou chodbou stejným směrem dvkarát Backtracking nastává teprve tehdy, není-li jiná alternativa Existuje-li východ, po konečném počtu kroků je najdeme

Hledání nejkratší cesty Moorův algoritmus pro neohodnocené grafy Dijkstrův algoritmus pro nezáporně ohodnocené grafy Bellman-Fordův algoritmus pro grafy bez cyklu záporné délky Floyd-Warshallův algoritmus umožňuje detekci cyklu záporné délky

Moorův algoritmus Prohledávání grafu do šířky Každý uzel má značku (p,d), kde d je délka cesty (počet hran) a p je předcházející uzel Počáteční uzel s dostane značku (-,0), ostatní (-,). V0 = {s}, k=0 Pro iVk uděláme každého neoznačkovaného následníka uzlu i označkujeme (i, k+1) a vložíme jej do množiny Vk+1 Zvýšíme k o 1 a pokud Vk  , opakujeme Výsledkem je distanční rozklad množiny uzlů

Dijkstrův algoritmus Prohledávání grafu do šířky Každý uzel má značku (p,d), kde d je délka cesty (součet délek hran) a p je předcházející uzel Značky jsou trvalé (množina S) a netrvalé (množ. Š) Počáteční uzel s dostane trvalou značku (-,0), jeho následníci (s, d), ostatní (-,). S = {s}, Š=U-S Dokud Š   V množině Š vybereme uzel k s nejmenším d Přesuneme jej do S Prověříme značky všech následníků uzlu k z množiny Š a v případě potřeby je aktualizujeme Proč není možné mít záporně ohodnocené hrany?

Bellman-Fordův algoritmus Každý uzel dostává značku (a, p, d), kde a je počet hran nejkratší cesty, d její délka a p předposlední uzel Počátek s dostane značku (0, -, 0), ostatní uzly (0, -, ). k=0 Dokud je k<|U| Pro každý uzel j, kde a=k Prověříme značky všech následníků uzlu j a v případě potřeby je aktualizujeme Zvýšíme k o 1

Floyd-Warshallův algoritmus Graf zadaný maticí sousednosti (D(0)) obsahující délky hran nebo  Výstupem je matice, z níž lze zjistit nejkratší cesty mezi všemi uzly Konstruujeme posloupnost matic D(1), D(2), … D(n) tak, že Každý prvek matice obsahuje délku nejkratší cesty z i do j, obsahující vnitřní uzly 1..k Pro všechna k = 1..|U| konstruujeme k-tou matici z k-1-ní po řádcích, k-tý řádek se nemění Cestu z i do j pak rekonstruujeme rekurzivně, hledajíce postupně taková l, kde dij = dil + dlj

Hledání nejdelší cesty Dané území, v němž chceme uspořádat cyklistický závod tak, aby byl co nejatraktivnější tj. vedl co nejbotížnějšími úseky Jak převést problém nejdelší cesty na problém nejkratší cesty? nelze přičítat konstantu ani odečítat od konstanty, byť sebevětší Graf nesmí obsahovat cyklus kladné délky pak lze hranové ohodnocení vynásobit -1 najít nejkratší cestu ta odpovídá nejdelší cestě v původním grafu

Hledání nejbezpečnější cesty Hranové ohodnocení odpovídá pravděpodobnosti bezpečného průchodu hranou tj. h  <0,1> Hledáme cestu s maximálním součinem hranových ohodnocení Přepočítáme hranové ohodnocení: h’ = - log h logaritmus převede součin na součet obrácení znaménka převádní hledání maxima na hledání minima V nově ohodnoceném grafu hledáme nejkratší cestu

Hledání nejširší cesty I. Ohodnocení hran odpovídají šířce Šířka cesty je minimum šířek hran na této cestě Algoritmus podobný Dijkstrovu uzly dostávají značky (p, b) p = předchůdce b = šířka cesty z počátku do daného uzlu značky jsou dočasné a trvalé v každém kroku označíme jeden uzel trvale

Hledání nejširší cesty II. Inicializace S := {s}, Š = U – {s} Označkuj počátek (-, ∞) Označkuj následovníky počátku (s, b) kde b je šířka příslušné hrany Zbývající vrcholy označkuj (s, 0) Iterace Najdi vrchol j  Š, do nějž se lze z některého uzlu i  S dostat po nejširší cestě tj. má maximální hodnotu min{bi, bij} Pro všechny následovníky uzlu j bez trvalé značky přepočítáme značku, pokud jsme našli širší cestu

Hledání minimální kostry Jarníkův-Primův-Dijkstrův algoritmus založen na „růstu stromu“ k okamžitému stromu přidáváme vždy nejkratší možnou hranu Kruskalův-Borůvkův algoritmus postupné spojování komponent lesa do jediného stromu Analogicky lze hledat také maximální kostry. K čemu jsou dobré?

Kruskalův – Borůvkův algoritmus Množinu hran seřadíme vzestupně podle hranového ohodnocení Postupně budujeme nový graf začínáme pouze s uzly (tj. „diskrétní faktor“) přidáváme hrany dle pořadí délek pokud by přidáním hrany vznikla kružnice, hranu nepřidáváme spojujeme tedy jen uzly ležící v různých komponentách pokusíme se přidat všechny hrany

Primův algoritmus Opět začínáme s diskrétním faktorem původního grafu Vybereme libovolný uzel triviální počáteční strom K okamžitému stromu připojíme uzel s nejmenší vzdáleností od tohoto stromu Opakujeme, dokud nejsou připojeny všechny uzly