Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Gráfok 1 Tartalom 0 Bevezetés 1 Hagyományos gráfábrázolások 2 A Gráftípus 2.1 Specifikáció 2.2 Megvalósítás 3 A gráfok bejárásának módszerei 3.1 Szélességi 3.2 Mélységi 4 A gráfbejárások alkalmazásai 4.1 Összefüggő-e a gráf? 4.2 A gráf komponensei 4.3 Útkeresés két pont között 2 / 26
Gráfok 1 Tartalom 4.4 Két pont közötti legrövidebb út 4.5 A legrövidebb út súlyozott gráf esetén 4.6 Páros-e a gráf? 5 A feszítőfák 5.0 Fogalmak 5.1 Feszítőfák generálása 5.2 Minimális feszítőfák generálása 6 Az elérési és a távolsági mátrix meghatározása 6.1 Összefüggőség 6.2 Távolságmátrix súlyozott gráfokra 7 Hálózati folyamok 3 / 26
Gráfok 1 0 Bevezetés A gráf fogalma: Gráf(P,E): P pontok és E P P élek halmaza Gráfokra vezető típusfeladatok: Párosítás Szállítás Hátizsákfeladat Legrövidebb út Project management Térképszínezés Pl.: munkát munkavállalót egymáshoz rendelni Pl.: munkát munkavállalót egymáshoz rendelni Pl.: legtöbb árut elszállítani Pl.: legtöbb árut elszállítani Pl.: „méretes” dolgokat minél kevesebb „zsákba” Pl.: kockás papíron „autós” játék Pl.: kockás papíron „autós” játék Pl.: munkákat ütemezni Pl.: legkevesebb színnel eltérően kiszínezni a térképet ( a gráf kromatikus száma) 4 / 26
Gráfok 1 0 Bevezetés Párosítás mV 1 mV 2 mV i mV N Munkavállalók m1m1 m2m2 mjmj mMmM Munkák 5 / 26
Gráfok 1 V 3 : 1 V 4 : 2 V N : 3 0 Bevezetés Szállítás V1V1 V2V2 V3V3 VNVN ViVi V4V4 V 2 : 1 V 1 : 2 V 2 : 2 V i : 1 V 3 : 2 V N : 3 V i : 2 6 / 26
Gráfok 1 V 3 : 1 V 4 : 2 V N : 3 0 Bevezetés Szállítás V1V1 V2V2 V3V3 VNVN ViVi V4V4 V 2 : 1 V 1 : 2 V 2 : 2 V i : 1 V 3 : 2 V N : 3 V i : 2 Eddigi nye- reség: 1 Eddigi nye- reség: 4 Eddigi nye- reség: 6 Eddigi nye- reség: 10 7 / 26
Gráfok 1 V 3 : 1 V 4 : 2 V N : 3 0 Bevezetés Szállítás V1V1 V2V2 V3V3 VNVN ViVi V4V4 V 2 : 1 V 1 : 2 V 2 : 2 V i : 1 V 3 : 2 V N : 3 V i : 2 Eddigi nye- reség: 1 Eddigi nye- reség: 4 Eddigi nye- reség: 6 Eddigi nye- reség: 10 Eddigi nye- reség: / 26
Gráfok 1 0 Bevezetés Legrövidebb út – autós játék Rajt Cél 9 / 26
Gráfok 1 0 Bevezetés Fogalmi emlékeztető: Irányított/tatlan gráf Út Kör Hurokél Izolált pont Összefüggő gráf E nem szimmetrikus, azaz (p 1,p 2 ) E (p 2,p 1 ) E Egymáshoz illeszkedő élek sorozata, amelyben nincs pont- ismétlődés, azaz út(p 1,…,p N )=((p 1,p 2 )(p 2,p 3 )...(p N-1,p N ) E : p i p j ) VanÚt?(p,q)=( p 1,…,p N P: út(p 1,…,p N ) p=p 1 q=p N ) Út + kiindulási és végpont között él = záródó élsorozat, azaz kör(p 1,…,p N )=út(p 1,..,p N )(p N,p 1 ), (p N,p 1 ) E Pont, amelyre legfeljebb hurokél illeszkedik (hf.) Pont, amelyre legfeljebb hurokél illeszkedik (hf.) p 1,p 2 P: VanÚt?(p 1,p 2 ) Egy pontra illeszkedő él, azaz e E: e=(p,p) 10 / 26
Gráfok 1 0 Bevezetés Összefüggő komponens Súlyozott gráf Fa Feszítőfa Liget Többszörös él sGráf(P,E,s:E R) s „mérték” sGráf(P,E,s:E R) s „mérték” Összefüggő, körmentes gráf (hf.) Összefüggő, körmentes gráf (hf.) A Gr=Gráf(P,E) gráf összes pontját tartalmazó fa, azaz Fa Gr =Gráf(P,E’), E’ E és fa Csak fa-komponenseket tartalmazó gráf (hf.) e 1..n E: e 1..n =(p i,p j ), E multihalmaz Irányítatlanra: K P: p,q K: VanÚt?(p,q) maximális gráf Irányítottra: K P: p K: q K: VanÚt?(p,q) maximális gráf 11 / 26
Gráfok 1 0 Bevezetés Fokszám Háló Hálózat Teljes gráf Páros gráf Irányított, körmentes gráf egyértelmű kezdő- és végponttal (hf.) Irányított, összefüggő, súlyozott ( 0) gráf egyértelmű kezdő- és végponttal P={p 1,..,p n } p i p j P: (p i,p j ) E n E = 2 P: R,Q P: P=R Q R Q= : (r,q) E (r R q Q) (q R r Q) * (p)=befok(p)=n, ha e 1..n E: e 1..n =(p 1..n,p) (p)=kifok(p)=n, ha e 1..n E: e 1..n =(p,p 1..n ) 12 / 26
Gráfok 1 1 Hagyományos gráfábrázolások A gráfról, mint adatszerkezetről madártávlatból – műveletfajták : Globálisak – a gráf egészére vonatkozók Konstrukciósak: üres / nem üres kezdőállapotú Állapot-tesztelők Alkotó elemek száma / … Struktúra-felderítők: pont-rákövetkezés 13 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Alkotó elemekre vonatkozók Komponensekre vonatkozók Állapot-tesztelők: darabszám / kezdőpont / … Pontokra vonatkozók Konstrukciósak: hozzáadás / törlés / módosítás /… Állapot-tesztelők: érték Élekre vonatokozók Konstrukciósak: hozzáadás / törlés / módosítás /… Állapot-tesztelők: hossz Mindez miért érdekes? A választott ábrázolás nagyban befolyásolja ezek megvalósításának hatékonyságát. 14 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Jelölések: P – véges ponthalmaz, – reláció ( P P), a b, ha a-ból b-be vezet él, n– pontok száma, E – véges élhalmaz, é– élek száma, L – logikai értékek halmaza, R – valós számok, N – természetes számok. irányítatlan gráf esetén szimmetrikus: a b b a a rövidség kedvéért: ' ' =Igaz megadható: E-vel, M – mutatókkal TElem 15 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Ábrázolások: Visszatérő példa: Visszatérő példa Csúcsmátrix Súlyozatlan gráfra: A : P P L, A (p,q)=p q Súlyozott gráfra: T : P P R, T (p,q)=t, ha p q és p-q =t, illetve T (p,q)= ,ha nincs a gráfban (p,q) él. 16 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Néhány egyszerű észrevétel: nem irányított A szimmetrikus. az A soraiban levő Igaz ( ) értékek száma = (p) kimenő-fokszáma, az oszlopbeliek száma = * (p) bemenő-fokszáma. (A nem irányított gráfokra: (p)= * (p)). A hurokéleket a mátrix főátlója írja le. Ha é«n, akkor az A nagyon rosszul kitöltött, azaz az Igaz értékek relatív száma 2*é/(n*n). Pl. n pontú fára A kitöltöttsége kisebb, mint 2/n (hiszen fákra é=n-1 2*(n-1)/(n*n)<2/n). 17 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Többszörös (párhuzamos) súlyozatlan élek esetére: Másik ötlet: annyi „álpont” beillesztése a gráfba, ahány többlet él van az egyes pontokhoz. Az álpontok (0 hosz- szúságú) éllel kapcsolódnak a valódihoz. Ez súlyozott gráfokra (és amelyben nincsenek eleve 0 hosszúságú élek) működő ötlet. Hatékonyság: Könnyű új éleket hozzávenni, törölni, nehéz pontokat törölni, illetve új pontokat hozzávenni. Memóriapazarláson segíthetünk a ritka mátrixoknál alkalmazható ábrázolási (és kezelési) módszerekkel. A * : P P N, A * (p,q)=ennyi párhuzamos él megy p és q között. 18 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Csúcslista Megjegyzések: Bonyolódnak az él-dinamikus műveletek (beillesztés, törlés) Nehezek a pont-dinamikusak. Súlyozott gráfok megoldhatók: (pont+súly)-kettősökkel. A l : P (k=1..n) P k, A l (p)=a p-ből induló élek végpontjainak listája. 19 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Éllista egy másik elképzelés szerint: Megjegyzések: Láncolt lista esetén könnyűek az él-dinamikus műveletek. Bizonyos gyakori diagnosztikai kérdések megválaszolása nehézkesek (pl. van-e 2 pont között él). Aprólékosak a pont-dinamikus műveletek. É l : E P P, É l (e)=(p,q), ahol az e él végpontok kettőse: p, q. É l : N E P P, É l (i)=(e,p,q), azaz az i. él=e él a p és a q pont között vezet.. Mintha éllel indexelnénk. „ Listásabban ”: „ Listásabban ”: é l ( E P P) * 20 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Pont-él mátrix Megjegyzések: az I minden oszlopában 1 vagy 2 Igaz érték lehet; 1, ha hurokél; kitöltöttsége rossz: 2*é/(é*n)=2/n; fokszám = a sorbeli Igaz értékek; irányított gráfra: 3-állapotú elemek („Nincs”, „Ki”, „Be”). I : P E L, I (p,e)=az e él a p ponton nyugszik-e. I * : P E {0,Ki,Be}, I * (p,e) = Ki,ha az e él a p pontból lép ki, I * (p,e) = Be,ha az e él a p pontba lép be, I * (p,e) = 0,ha az e él nem érintkezik a p ponttal. 21 / 26
Gráfok 1 1 Hagyományos gráfábrázolások Algoritmikus, „mutatós” ábrázolás Megjegyzések: Ábrázolás: „sovány”, ui. a komponenseket nem „tartja össze” semmi, tehát „kiegészítésre” szorul. Kezelési nehézségek nyilvánvalók (láncolásból adódóak). Előny: általánosság és abszolút dinamikusság. ( P (k=0..n) M k ) * 22 / 26
Gráfok 1 1 Hagyományos gráfábrázolások „Általánosítások” ábrázolásai Elérési (összefüggőségi) mátrix Megjegyzés: A blokkok szemmel láthatóvá teszik a komponenseket. E : P P L, E (p,q)=VanÚt?(p,q). átsorszámozás 23 / 26
Gráfok 124 / 26 1 Hagyományos gráfábrázolások Távolságmátrix T : P P R, T (p,q)=t, ha p q és p-q =t, illetve T (p,q)= , ha nincs a gráfban (p,q) él. 1-lépéses
Gráfok 125 / 26 1 Hagyományos gráfábrázolások 1-lépéses2-lépéses3-lépéses 4-lépéses
Gráfok 1 Megjegyzés: Példagráf 26 / 26