Použití dalších heuristik

Podobné dokumenty
STROMY A KOSTRY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 6

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

STROMY A KOSTRY. Stromy a kostry TI 6.1

Vzdálenost uzlů v neorientovaném grafu

Dijkstrův algoritmus (připomenutí)

Algoritmy na ohodnoceném grafu

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky

Matice sousednosti NG

07 Základní pojmy teorie grafů

TGH06 - Hledání nejkratší cesty

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Hledáme efektivní řešení úloh na grafu

Grafové algoritmy. Aktualizováno: 29. listopadu / 228

TGH06 - Hledání nejkratší cesty

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

PLANARITA A TOKY V SÍTÍCH

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

Stromy, haldy, prioritní fronty

Paralelní grafové algoritmy

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

VLASTNOSTI GRAFŮ. Vlastnosti grafů - kap. 3 TI 5 / 1

TGH08 - Optimální kostry

Drsná matematika III 10. demonstrovaná cvičení Kostry grafů

6. Tahy / Kostry / Nejkratší cesty

Dijkstrův algoritmus

TGH07 - Chytré stromové datové struktury

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

Grafové algoritmy III.

Úvod do teorie grafů

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

Umělá inteligence. UI (AI) - součást informatiky s průniky mimo obor Stručná historie UI. Letošní cena nadace Vize Joseph Weizenbaum

Teorie grafů. Kostra grafu. Obsah. Radim Farana Podklady pro výuku pro akademický rok 2013/2014

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

TGH07 - Chytré stromové datové struktury

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

1. Minimální kostry Od mìsteèka ke kostøe

Grafy (G) ρ(h) = [u,v]

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

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

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

Dynamické datové struktury III.

Dynamické programování

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

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

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

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.

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

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

Algoritmizace prostorových úloh

TEORIE GRAFŮ TEORIE GRAFŮ 1

Prioritní fronta, halda

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

Jan Březina. Technical University of Liberec. 21. dubna 2015

8 Přednáška z

Jan Březina. Technical University of Liberec. 30. dubna 2013

Časová a prostorová složitost algoritmů

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

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

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

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

ADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

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

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

Úvod do informatiky. Miroslav Kolařík

opakování reprezentace grafů, dijkstra, bellman-ford, johnson

Dynamické datové struktury IV.

Jan Březina. 7. března 2017

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

Základy umělé inteligence

Algoritmy a datové struktury

Grafové algoritmy. Programovací techniky

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

Matematika III 10. přednáška Stromy a kostry

III přednáška Toky v sítích

Union-Find problém. Kapitola 1

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Jarníkův algoritmus. Obsah. Popis

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

Optimalizace & soft omezení: algoritmy

Přijímací zkouška - matematika

TGH04 - procházky po grafech

Metody síťové analýzy

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

dag a dp v něm, bellman-ford, floyd-warshall

TGH10 - Maximální toky

Algoritmy a datové struktury I, přednáška prof. RNDr. Lud ka Kučery, DrSc. Poznámky sepsal Robert Husák. Letní semestr 2009/2010

Algoritmy I, složitost

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. FAKULTA STROJNÍHO INŽENÝRSTVÍ Ústav automatizace a informatiky TEORIE GRAFŮ. Doc. RNDr. Ing. Miloš Šeda, Ph.D.

Rovinné grafy Kostra grafu Minimální kostra Toky v sítích Problém maximálního toku v síti. Stromy a kostry. Michal Bulant

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Teória grafov. Stromy a kostry 1. časť

H {{u, v} : u,v U u v }

Návrh Designu: Radek Mařík

Minimální kostry. Teorie. Štěpán Šimsa

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Transkript:

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), FIND-SET(y)) Množinové rozklady - odst. 5.2 TI 7 / 1

LINK(x,y) if hod[x] > hod[y] then p[y] := x else p[x] := y if hod[x] = hod[y] then hod[y] := hod[y] + 1 FIND-SET(x) if x p[x] then p[x] := FIND-SET(p[x]) return p[x] Složitost m operací MAKE-SET, FIND-SET, UNION, když MAKE-SET je přesně n: O(m. lg* n) Množinové rozklady - odst. 5.2 TI 7 / 2

Minimální kostry?jaká kostra je minimální? Každá má U -1 hran? G = H,U souvislý NG s nezáporným ohodnocením hran w: H R +, kostra T = H v,u taková, že w(h) (součet přes h H v ) je minimální?jak poznáme minimální kostru? prohledáme všechny kostry grafu??? uhádneme kostru a ověříme její minimálnost (JAK?) V: Kostra T grafu G je minimální, pro každou tětivu t je w(t) max w(h) pro h K (K je jediná kružnice v T {t}) Minimální kostry - odst. 5.3 TI 7 / 3

?Praktické možnosti? Hledání minimální kostry odebírat hrany z původního grafu??? najít lib. kostru a postupně ji upravovat??? vytvářet minimální kostru přidáváním hran!!! Generický algoritmus GENERIC-MST(G,w) T := while T netvoří kostru do najdi vhodnou hranu [u,v] pro T T := T {[u,v]} return T TOHLE je problém Minimální kostry - odst. 5.3 TI 7 / 4

?Jak hledat tu správnou hranu pro přidání do kostry? V: Nechť P je podstrom vytvořené části minimální kostry grafu G, [p,q] je hrana taková, že - p P, q P - w([p,q]) = min w(u,v) pro všechny hrany [u,v], u P, v P Pak lze hranu [p,q] přidat k minimální kostře. P G-P Minimální kostry - odst. 5.3 TI 7 / 5

Borůvkův - Kruskalův algoritmus KB-MST(G, w) 1 T:= 2 for každý uzel u U do MAKE-SET(u) 3 uspořádej H do neklesající posloupnosti podle váhy w 4 for každou hranu [u,v] H v pořadí neklesajících vah 5 do if FIND-SET(u) FIND-SET(v) 6 then T := T {[u,v]} 7 UNION(u,v) 8 return T O( H.lg H )řazení, O( H. lg* U ) množiny Borůvka a Jarník - odst. 5.4 TI 7 / 6

Jarníkův - Primův algoritmus JP-MST(G, w, r) 1 Q := U 2 for každý uzel u Q do d[u] := 3 d[r] := 0; p[r] := nil 4 while Q do 5 u := EXTRACT_MIN(Q) 6 for každý uzel v Adj[u] do 7 if (v Q) and (w(u,v) < d[v]) 8 then p[v] := u; d[v] := w(u,v) POZOR! SLOŽITÉ O( U ) + O( U. lg U ) + O( H. lg U ) Borůvka a Jarník - odst. 5.4 TI 7 / 7

Požadavky na úlohu Hladové algoritmy vlastnost hladového výběru - výběr podproblému a pak jeho řešení optimální podstruktura - optimální řešení problému obsahuje optimální řešení podproblému Stromy s minimální w-délkou Známe tvar stromů s optimální vnější/vnitřní délkou.? Jak to bude při rozdílných vahách jednotlivých uzlů? Pravidelný kořenový strom T u s ohodnocením uzlů w i = w(u i ) vnější w-délka E w (T u ) = w i. hl(u i ) Huffmanovo kódování - odst. 5.5 TI 7 / 8

Huffmanův algoritmus E w = 200 170 275 50 5 30 15 50 30 15 5 15 5 50 30 Huffman(w,n) 1 for i:=1 to n do u:=makenode(wi); Insert(u,Q) 2 for i:=1 to n-1 3 do x:=extractmin(q); y:=extractmin(q) 4 z:=makenode(w[x]+w[y]); left[z]:=x; right[z]:=y; 5 Insert(z,Q) 6 return ExtractMin(Q) Huffmanovo kódování - odst. 5.5 TI 7 / 9

Aplikace - generování optimálního prefixového kódu prefixový kód - žádné slovo není prefixem jiného slova Jsou dány znaky a jejich četnosti (absolutní/relativní) v textu znak A B C D E F G H I J četnost 52 5 18 13 21 4 2 3 35 7 162 68 94 31 E:37 A:52 42 C:18 D:13 21 E:21 9 12 B:5 F:4 5 J:7 Huffmanovo kódování - odst. 5.5 G:2 H:3 TI 7 / 10

Nejkratší cesty z jednoho uzlu Několik obecných úvah Uvažujeme nejobecnější případ - ohodnocené OG nedostupné uzly - vzdálenost + spojení se záporným cyklem - vzdálenost - počítání s nekonečny: a + (- ) = (- ) + a = - pro a a + = + a = pro a -? Které vlastnosti 0 až 4 má taková vzdálenost? V: Pro libovolnou hranu (u,v) H a uzel s U platí d w (s,v) d w (s,u) + w(u,v) Nejkratší cesty - odst. 6.1 TI 7 / 11

Varianty úlohy hledání nejkratších cest 1 1 1 n n 1 n n Datové struktury d[u] délka cesty Inicializace InitPaths(G,s,w) 1 for každý uzel u U 2 do d[u]:= ; p[u]:=nil 3 d[s]:=0 p[u] předchůdce na min. cestě Q fronta otevřených uzlů (halda?) Nejkratší cesty - odst. 6.1 TI 7 / 12

Relaxace - (případná) úprava délky nalezené nejkratší cesty Relax(u,v,w) 1 if d[v] > d[u]+w(u,v) 2 then d[v]:= d[u]+w(u,v); p[v]:=u V: Provedeme InitPaths a pak libovolný počet Relax. Potom platí d[u] d w (s,u) jakmile d[u] dosáhne hodnoty d w (s,u), už se nemění jakmile se žádné d[u] nemění, máme strom nejkratších cest do všech dosažitelných uzlů z uzlu s? V jakém pořadí hran a jak dlouho máme provádět relaxaci? Nejkratší cesty - odst. 6.1 TI 7 / 13

Dijkstrův algoritmus Základní předpoklad w : H R + Upravený algoritmus prohledávání do šířky Dijkstra(G,s,w) 1 InitPaths(G,s) 2 S:= ; InitQueue(Q) 3 for každý uzel u U do Enqueue(Q,u) O( U ) 4 while not EmptyQueue(Q) 5 do u:=extractmin(q); S:=S {u} O( U. lg U ) 6 for uzel v Adj[u] 7 do Relax(u,v,w) O( H. lg U ) Možné ještě O( U. lg U + H ) nebo O( U **2) Dijkstrův algoritmus - odst. 6.2 TI 7 / 14

Bellmanův-Fordův algoritmus? Co dělat v případě záporně orientovaných hran? Bellman-Ford(G,s,w) 1 InitPaths(G,s) 2 for i:=1 to U -1 do 3 for každou hranu (u,v) H do Relax(u,v,w) 4 for každou hranu (u,v) H 5 do if d[v] > d[u] + w(u,v) then return false 6 return true Složitost O( U. H )? Proč má nyní Relax konstantní časovou složitost? Bellman-Ford algoritmus - odst. 6.3 TI 7 / 15

? Nelze B-F algoritmus nějak upravit / zrychlit? Co když zavedeme frontu uzlů s úspěšným Relax a bereme jen hrany vycházející z těchto uzlů? ukončení - při vyprázdnění fronty problém - co když se fronta nevyprázdní? v nejhorším případě zase O( U. H ) Nejkratší cesty pro acyklické grafy 1 Topologicky uspořádáme uzly grafu G 2 InitPaths(G,s) 3 for každý uzel u v pořadí podle topologického uspořádání 4 do for každé v Adj[u] 5 do Relax(u,v,w)?? Složitost?? Bellman-Ford algoritmus - odst. 6.3 TI 7 / 16