Matice sousednosti NG

Podobné dokumenty
ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

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

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

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

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

Vzdálenost uzlů v neorientovaném grafu

Použití dalších heuristik

TGH04 - procházky po grafech

Úvod do teorie grafů

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

Grafové algoritmy. Programovací techniky

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

3. Prohledávání grafů

Grafové algoritmy. Programovací techniky

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

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

Algoritmy na ohodnoceném grafu

Algoritmizace prostorových úloh

07 Základní pojmy teorie grafů

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

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

PLANARITA A TOKY V SÍTÍCH

Algoritmy a datové struktury

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

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.

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

TGH10 - Maximální toky

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

ALGORITMY A DATOVÉ STRUKTURY

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

TGH06 - Hledání nejkratší cesty

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

TGH06 - Hledání nejkratší cesty

bfs, dfs, fronta, zásobník

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

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

Umělá inteligence I. Roman Barták, KTIML.

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

Dijkstrův algoritmus (připomenutí)

Základy umělé inteligence

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

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

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

Stromy, haldy, prioritní fronty

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

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

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

Jan Březina. 7. března 2017

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

řádově různě rostoucí rostou řádově stejně rychle dvě funkce faktor izomorfismus neorientovaných grafů souvislý graf souvislost komponenta

GRAFY A GRAFOVÉ ALGORITMY

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

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

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

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

2. Mřížky / Záplavové vyplňování

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

6. Tahy / Kostry / Nejkratší cesty

Algoritmy a datové struktury

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

TGH08 - Optimální kostry

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

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

"Agent Hledač" (3. přednáška)

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

Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010

Prioritní fronta, halda

Datové typy a struktury

Grafové algoritmy. Programovací techniky

Ohodnocené orientované grafy

Abstraktní datové typy FRONTA

Binární vyhledávací stromy II

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

Neinformované metody prohledávání stavového prostoru. Gerstner Laboratory Agent Technology Group, Czech Technical University in Prague

1 Teorie grafů. Základní informace

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

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

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

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

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Optimalizace & soft omezení: algoritmy

Algoritmy výpočetní geometrie

Dynamické programování

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

STROMY A KOSTRY. Stromy a kostry TI 6.1

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

Usuzování za neurčitosti

TGH07 - Chytré stromové datové struktury

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Předmět: Algoritmizace praktické aplikace

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

Plánování projektu. 3. dubna Úvod. 2 Reprezentace projektu. 3 Neomezené zdroje. 4 Variabilní doba trvání. 5 Přidání pracovní síly

Algoritmizace. 1. Úvod. Algoritmus

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

4EK212 Kvantitativní management. 7.Řízení projektů

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

Metody síťové analýzy

Teorie grafů. Teoretická informatika Tomáš Foltýnek

Transkript:

Matice sousednosti NG V = [ v ij ] celočíselná čtvercová matice řádu U v ij = ρ -1 ( [u i, u j ] )... tedy počet hran mezi u i a u j?jaké vlastnosti má matice sousednosti?? Smyčky, rovnoběžné hrany? V = V T V r = [v (r) ij ]... počet sledů délky r mezi u i a u j A. A T = V + D, D = [ d ii ], kde d ii = δ(u i ) Reprezentace grafů - odst. 4.1 TI 4 / 1

Matice incidence OG A = [ a ik ] celočíselná obdélníková matice typu U x H 1... hrana h k vystupuje z uzlu u i a ik = -1... hrana h k vstupuje do uzlu u i 0... jinak? Co nám říká matice incidence o grafu? Vlastnosti matice incidence OG jsou podobné jako jsme viděli u NG. Reprezentace grafů - odst. 4.1 TI 4 / 2

Matice sousednosti OG V = [ v ij ] celočíselná čtvercová matice řádu U v ij = σ -1 ( [u i, u j ] )... tedy počet hran z u i do u j?jaké vlastnosti má matice sousednosti? V * = V i, i=0,... d, kde d = min( H, U -1) matice dostupnosti R = [r ij ], r ij = 1 pokud u i * u j, jinak 0 rozklad na silné komponenty R = R R T A. A T = D - V - V T, D = [ d ii ], kde d ii = δ + (u i )+ δ - (u i ) Reprezentace grafů - odst. 4.1 TI 4 / 3

Spojová reprezentace grafu N.G. - seznamy sousedů Adj[u] 1: 2: 3: O.G. - seznamy následníků U : Srovnání paměťové složitosti: NG A: U. H (bitů!) V: U. U (integer? Boolean) Adj: U + 2. H OG Adj: U + H Reprezentace grafů - odst. 4.1 TI 4 / 4

Prohledávání grafu do šířky BFS - Breadth-First Search Je zadán graf G = H,U,σ (není podstatné, zda NG nebo OG) a jeho uzel u U. Prohledáním do šířky dostaneme strom (nejkratších) s * u cest Stavy uzlů: FRESH - nový (dosud neobjevený) uzel OPEN - právě objevený ( nadějný ) uzel CLOSED - vyčerpaný uzel Prohledávání do šířky - odst. 4.2 TI 4 / 5

s k k+1 u v Datové struktury: stav[u] - FRESH / OPEN / CLOSED d[u] - zjištěná vzdálenost s * u p[u] - předchůdce uzlu u (viz ) fronta OPEN uzlů Prohledávání do šířky - odst. 4.2 TI 4 / 6

BFS (G, s)... pseudokód 1 for každý uzel u U-{s} do 2 stav[u]:=fresh; d[u]:= ; p[u]:=nil 3 stav[s]:=open; d[s]:=0; p[s]:=nil; 4 InitQueue; Enqueue(s); 5 while not EmptyQueue do 6 u:=queuefirst; 7 for každé v Adj[u] do 8 if stav[v]=fresh 9 then stav[v]:=open; d[v]:=d[u]+1; 10 p[v]:=u; Enqueue(v); 11 Dequeue; 12 stav[u]:=closed Prohledávání do šířky - odst. 4.2 TI 4 / 7

OPEN CLOSED strom 0 1 1 Prohledávání do šířky - odst. 4.2 TI 4 / 8

Vlastnosti BFS algoritmu Složitost: cykl 1-4... O( U ) operace s frontou O(1) na uzel celkem O( U ) cykly 5 + 7 pro každého souseda... O( H ) O( U + H ) Vlastnosti: pro každou hranu h H : h=(u, v) platí d(s,v) d(s, u)+1 d[v] d(s, v) pokud fronta obsahuje uzly v 1, v 2,..., v r, potom platí d[v r ] d[v 1 ] + 1 d[v i ] d[v i+1 ] pro i=1,2,...,r-1 konec: d[v]=d(s,v) a (p[v],v) je hrana nejkratší cesty s * v Prohledávání do šířky - odst. 4.2 TI 4 / 9

Prohledávání grafu do hloubky DFS - Depth-First Search Výsledkem bude DF strom (nebo les) Uzly jsou opět FRESH, OPEN nebo CLOSED, ale mají časové značky s hodnotami 1 2* U d[u] přidělí se uzlu při jeho otevření f[u] přidělí se uzlu při jeho uzavření (tzn. d[u]<f[u]) Postup prohledávání Pokud existuje FRESH následník, přejdi na něj, jinak uzel uzavři a vrať se k předchůdci. Prohledávání do hloubky - odst. 4.3 TI 4 / 10

DFS (G) pseudokód 1 for každý uzel u U do 2 stav[u]:=fresh; p[u]:=nil; 3 i:=0; 4 for každý uzel u U do 5 if stav[u] = FRESH then DFS-Projdi(u); DFS-Projdi(u) 1 stav[u]:=open; i:=i+1; d[u]:=i; 2 for každý uzel v Adj[u] do 3 if stav[u] = FRESH 4 then p[v]:=u; DFS-Projdi(v); 5 stav[u]:=closed; i:=i+1; f[u]:=i; Prohledávání do hloubky - odst. 4.3 TI 4 / 11

OPEN CLOSED strom 1/ 1/ 1/ 2/ 2/ 1/ 1/ 1/ 3/ 2/ 3/ 2/ 3/4 2/ 1/ 1/6 7/ 1/6 3/4 2/5 Prohledávání do hloubky - odst. 4.3 3/4 2/5 3/4 TI 4 / 12 2/5

Složitost DFS cykly 1-2 a 4-5... O( U ) DFS-Projdi... volá se U /krát cykl 2-4... Adj[u] -krát, tedy celkem Adj[u] = Θ( H ) O( U + H ) Prohledávání do hloubky - odst. 4.3 TI 4 / 13

Vlastnosti DFS závorkový teorém: nastává právě jedna z možností d[u], f[u] d[v], f[v] = (vztah intervalů) d[u], f[u] d[v], f[v] - potom v u (v DFS stromu) d[v], f[v] d[u], f[u] - potom u v (v DFS stromu) vnořování intervalů: u v (v DFS lese) d[u] < d[v] < f[v] < f[u] teorém o nové cestě: u v (v DFS lese) v okamžiku d[u] existuje nová cesta P(u, v) stromové / zpětné / dopředné / příčné hrany Prohledávání do hloubky - odst. 4.3 TI 4 / 14

? Jak se pozná typ hrany (u, v)? FRESH v stromová OPEN v zpětná CLOSED v dopředná nebo příčná? d[u] < d[v] d[u] > d[v]? DFS neorientovanáho grafu? Orientace hrany se provede podle prvního průchodu, takže dostaneme jen stromové a zpětné hrany. Prohledávání do hloubky - odst. 4.3 TI 4 / 15

Top-Sort-1 (G) S:= Topologické uspořádání prováděj DFS(G) a v okamžiku f[u] ulož uzel u na začátek seznamu S S obsahuje uzly v topologickém uspořádání V: G je acyklický DFS(G) neobjeví zpětnou hranu Top-Sort-2 (G) eliminací kořenů - viz dříve δ[u] = δ G [u] M - množina kořenů (fronta) Prohledávání do hloubky - odst. 4.3 TI 4 / 16

Silné komponenty S-COMP (G) pomocí DFS(G) se určí f[u] pro všechny u U vytvoří se G - (opačně orientovaný graf) provede se DFS(G - ) s tím, že uzly v hlavním cyklu se berou v klesajícím pořadí f[u] stromy DFS-lesa určují silné komponenty Prohledávání do hloubky - odst. 4.3 TI 4 / 17

1/22 2/21 3/18 4/9 19/20 15/16 10/17 5/8 12/13 11/14 6/7 1/6 3/4 7/12 17/22 2/5 8/11 9/10 19/20 Prohledávání do hloubky - odst. 4.3 14/15 13/16 18/21 TI 4 / 18