Adatszerkezetek II. 1. előadás

Hasonló dokumentumok
Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Adatszerkezetek II. 2. előadás

22. GRÁFOK ÁBRÁZOLÁSA

Gráfelméleti alapfogalmak

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Számítógép hálózatok, osztott rendszerek 2009

Adatszerkezetek II. 3. előadás

Feladatok, amelyek gráfokkal oldhatók meg 1) A königsbergi hidak problémája (Euler-féle probléma) a

Algoritmusok és adatszerkezetek I. 1. előadás

Gráfelméleti feladatok. c f

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Diszkrét matematika 2.C szakirány

Diszkrét matematika 1. estis képzés

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

Diszkrét matematika 1. estis képzés

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Algoritmusok és adatszerkezetek I. 4. előadás

III. Gráfok. 1. Irányítatlan gráfok:

Gráfalgoritmusok ismétlés ősz

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2. estis képzés

A gráffogalom fejlődése

1. tétel - Gráfok alapfogalmai

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Adatszerkezetek 2. Dr. Iványi Péter

ELTE IK Esti képzés tavaszi félév. Tartalom

2. Visszalépéses keresés

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmizálás, adatmodellezés 1. előadás

Diszkrét matematika 2.C szakirány

Adatszerkezetek 1. Dr. Iványi Péter

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Alapfogalmak a Diszkrét matematika II. tárgyból

Diszkrét matematika 2. estis képzés

Algoritmuselmélet 7. előadás

Diszkrét matematika 2. estis képzés

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Diszkrét matematika 2.

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Gráfelmélet jegyzet 2. előadás

Diszkrét matematika 2. estis képzés

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

1. Gráfmodellek. 1.1 Königsbergi hidak (Euler, 1736)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 1. előadás

Gráfok. Programozás II. előadás. Szénási Sándor.

Algoritmusok és adatszerkezetek I. 3. előadás

38. A gráfalgoritmusok alkalmazása

Diszkrét matematika 2.C szakirány

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Adatszerkezetek I. 4. előadás

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

10. Gráf absztrakt adattípus, gráfok ábrázolása

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Multihalmaz, intervallumhalmaz

SzA II. gyakorlat, szeptember 18.

Diszkrét matematika 2.

Algoritmusok bonyolultsága

Algoritmizálás és adatmodellezés tanítása 6. előadás

Algoritmizálás és adatmodellezés tanítása 2. előadás

Struktúra nélküli adatszerkezetek

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

Az optimális megoldást adó algoritmusok

Algoritmusok és adatszerkezetek I. 2. előadás

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Dinamikus programozás II.

Amortizációs költségelemzés

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Algoritmusok és adatszerkezetek I. 2. előadás

Gyakorló feladatok ZH-ra

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Felvételi tematika INFORMATIKA

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Érdekes informatika feladatok

Informatikai tehetséggondozás:

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Hatékonyság 1. előadás

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Adatszerkezetek 1. előadás

Permutáció n = 3 esetében: Eredmény: permutációk száma: P n = n! romámul: permutări, angolul: permutation

Algoritmizálás és adatmodellezés 2. előadás

GráfRajz fejlesztői dokumentáció

A valós számok halmaza

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Algoritmuselmélet zárthelyi (BSc képzés) április 24.

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Átírás:

Adatszerkezetek II. 1. előadás

Gráfok A gráf fogalma: Gráf(P,E): P pontok (csúcsok) és E P P élek halmaza Fogalmak: Irányított gráf : (p 1,p 2 ) E-ből nem következik, hogy (p 2,p 1 ) E Irányítatlan gráf : (p 1,p 2 ) E (p 2,p 1 ) E Út: (p 1,p 2 ), (p 2,p 3 ),, (p k-1,p k ) E élsorozat Kör : (p 1,p 2 ), (p 2,p 3 ),, (p k-1,p 1 ) E élsorozat Hurokél: : (p,p) E 2/38

Fogalmak: Gráfok Fok: p P-hez csatlakozó élek száma irányítatlan gráfban Befok, Kifok: egy p P pontba bevezető, illetve kivezető élek száma irányított gráfban Összefüggő gráf: p,q P: út(p,q) irányítatlan gráf Erősen összefüggő gráf: p,q P: út(p,q) irányított gráf Összefüggő komponens: (R,F) (P,E) összefüggő gráf Erősen összefüggő komponens: (R,F) (P,E) erősen összefüggő irányított gráf Összefüggő gráf: p P: q P: út(p,q) irányított gráf 3/38

Fogalmak: Gráfok Súlyozott gráf: (P,E,s:E R mérték) Fa: összefüggő körmentes gráf Erdő (liget): körmentes gráf Feszítőfa: a gráf összes pontját tartalmazó fa Forrás: irányított gráf pontja, amelyből csak kivezető él van Nyelő: irányított gráf pontja, amelybe csak bevezető él van Háló: körmentes irányított gráf, egy forrással és nyelővel Izolált pont: legfeljebb hurokél kapcsolódik hozzá 4/38

Csúcsmátrix (szomszédsági mátrix): Súlyozott gráfra: C i, C i, j j igaz hamis s Nemdef ha ha Megjegyzés: Nemdef= 0 vagy -1 vagy + vagy i, i, j j E E i, j ha i, j ha i, j E E 5/38

Csúcsmátrix: i i i i i i i i i i i i i i Gráfok ábrázolása 6/38

Csúcsmátrix súlyozott gráfra: 2 5 1 9 2 5 5 5 2 1 2 8 8 9 7/38

Csúcsmátrix irányított gráfra: i i i i i i i i i i 8/38

Tapasztalatok a csúcsmátrixról: irányítatlan gráf esetén szimmetrikus irányított gráf esetén nem feltétlenül szimmetrikus Fok, Kifok: soronként az igaz értékek száma Befok: oszloponként az igaz értékek száma könnyű új éleket hozzávenni, éleket törölni, élek súlyát megváltoztatni nehéz új pontokat hozzávenni, pontokat törölni kevés él esetén memória-pazarló 9/38

Csúcslista (szomszédsági lista) tömbös megvalósításban: L(i).db= az i-ből kivezető élek száma L(i).él(j)= az i-ből kivezető j. él végpontja Súlyozott gráfra: L(i).db= az i-ből kivezető élek száma L(i).él(j).pont= az i-ből kivezető j. él végpontja L(i).él(j).súly= az i-ből kivezető j. él súlya 10/38

Csúcslista: 4 2 3 4 7 2 1 3 3 1 2 4 2 1 3 1 6 1 5 1 1 Gráfok ábrázolása 11/38

Csúcslista súlyozott gráfra: 4 2,2 3,5 4,1 7,9 2 1,2 3,5 3 1,5 2,5 4,2 2 1,1 3,2 1 6,8 1 5,8 1 1,9 12/38

Csúcslista irányított gráfra: 4 2 3 4 7 1 3 2 2 4 1 3 1 6 1 5 0 13/38

Tapasztalatok a csúcslistáról: irányítatlan gráf esetén mindkét végpontnál szerepel a másik Fok, Kifok: soronként a darabszám Befok: nehezen számítható könnyű új éleket hozzávenni, élek súlyát megváltoztatni nehéz éleket törölni (sőt irányítatlan gráfnál 2 helyről kell) nehéz pontokat törölni nagy mátrix kell, ha nincs jó korlát a kivezető élek számára 14/38

Csúcslista (listás megvalósításban): L(i).lista= az i-ből kivezető élek listája 15/38

Éllista (tömbös megvalósításban): E(i,j)= az i. él j. végpontja (j=1,2) Súlyozott gráfra: E(i).él(j)= az i. él j. végpontja (Lehetne: E(i).kezdő, E(i).vég is.) E(i).súly= az i. él súlya 16/38

Éllista: 1 2 1 3 1 4 1 7 2 3 3 4 5 6 17/38

Éllista súlyozott gráfra: Gráfok ábrázolása 1 2 2 1 3 5 1 4 1 1 7 9 2 3 5 3 4 2 5 6 8 18/38

Tapasztalatok az éllistáról: irányítatlan gráf esetén csak egyszer szerepelnek az élek könnyű új éleket hozzávenni, élek súlyát megváltoztatni nehéz éleket törölni nehéz pontokat törölni 19/38

Számított gráf Az élek halmazát nem tároljuk, mert van olyan számítási eljárás, amely p,q P-re kiszámítja Vanél?(p,q)-t; vagy van olyan számítási eljárás, amely p P-re létrehozza a Ki(p) halmaz elemeit, azaz azon pontokat, ahova p-ből vezet él. 20/38

Számított gráf kannák számítás Egy gazdának három különböző űrtartalmú tejeskannája van, amelyekbe teli állapotban A, B és C liter tej fér. Van továbbá egy negyedik kannája, ennek az űrtartalmát nem ismeri, csak azt tudja, hogy ez a legnagyobb kannája. Kezdetben a legnagyobb, ismert űrtartalmú kanna tele van, a többi pedig üres. Add meg, hogy minimum hány lépésben lehet kimérni X liter tejet! Hol itt a gráf? 21/38

Számított gráf kannák számítás A 4 kanna pillanatnyi állapotát az (aa,bb,cc,dd) számnégyes írja le. Ebből elérhető állapotok szabályos öntések: (0,bb+aa,cc,dd), ha bb+aa B A-ból mind B-be (0,bb,cc+aa,dd), ha cc+aa C A-ból mind C-be (0,bb,cc,dd+aa) A-ból mind D-be (aa-(b-bb),b,cc,dd), ha a>b-bb A-ból B-t tele Azaz olyan pontba vezet él, ahova van szabályos öntés. 22/38

Számított gráf labirintus síkbeli elrendezés Egy négyzetrácsos terület bizonyos mezőin akadályok vannak. Egy járművet kell elvezetnünk az (1,1) pontból az (N,M) pontba. Hol itt a gráf? A gráf pontjai az (i,j) koordinátájú mezők. Az (i,j) pontból az (i-1,j), (i,j-1), (i+1,j), (i,j+1) pontokba vezet él, ha azok nem akadályok. 23/38

A gráftípus (statikus gráf pontok, élek száma rögzített): Értékhalmaza: Gráf(Sorozat(TÉl:THossz), Sorozat(TPont:TElem)) Változó Pontszám, Élszám: Egész Műveletei: Érték(Gráf,Pont) Vanél?(Gráf,Pont1,Pont2) Élhossz(Gráf,Pont1,Pont2) A pontok sorozata sokszor az 1..N számsorozat. 24/38

Műveletei: Szomszédpontokszáma(Gráf,Pont) Szomszéd(Gráf,Pont,i) Elsőszomszéd(Gráf,Pont) Következőszomszéd(Gráf,Pont) Speciális műveletek Felépít(Gráf1,Gráf2) éllistából csúcsmátrix éllistából csúcslista (tömbös) éllistából csúcslista (listás) A szomszéd súlyozatlan gráf esetén egy pont, súlyozott gráf esetén pedig egy rekord, ami a pontot és az oda vezető él súlyát tartalmazza. 25/38

Meggondolandók: Gráfok ábrázolása Bizonyos műveletek egyes ábrázolásoknál kézenfekvőek, egyszerűen megvalósíthatók, mások pedig nem. Érdemes-e minden műveletet minden ábrázolásra megírni? Ha nem: A gráfábrázoláshoz megvalósított műveletek alapján kiderül, hogy egyes gráf-algoritmusok melyik változata készíthető el. Ha igen: Bármely ábrázolásra bármely gráf-algoritmus változat elkészíthető. Közülük ha szükséges hatékonysági szempontok alapján választhatunk. 26/38

Felépítés: éllistából csúcsmátrix: Típus Éllista=Tömb(1..Maxél:TÉl) TÉl=Tömb(1..2:TPont) Csúcsmátrix=Tömb(1..Maxpont,1..Maxpont:Logikai) Változó Élszám,Pontszám 27/38

Felépítés: éllistából csúcsmátrix: Felépít(E,Cs,Fok): Cs:=(hamis,,hamis); Fok():=(0,,0) Ciklus i=1-től Élszám-ig Cs(E(i,1),E(i,2)):=igaz Cs(E(i,2),E(i,1)):=igaz Fok(E(i,1)):=Fok(E(i,1))+1 Fok(E(i,2)):=Fok(E(i,2))+1 Ciklus vége Eljárás vége. Irányított gráfra: Cs(E(i,1),E(i,2)):=igaz KiFok(E(i,1)):=KiFok(E(i,1))+1 BeFok(E(i,2)):=BeFok(E(i,2))+1 28/38

Felépítés: éllistából csúcslista (tömb): Típus Éllista=Tömb(1..Maxél:TÉl) TÉl=Tömb(1..2:TPont) Csúcslista=Tömb(1..Maxpont:Rekord(db:Egész, él:tömb(1..maxpont:tpont))) Változó Élszám,Pontszám 29/38

Felépítés: éllistából csúcslista (tömb): Felépít(E,L,Fok): L().db:=(0,,0) Ciklus i=1-től Élszám-ig L(E(i,1)).db:=L(E(i,1)).db+1 L(E(i,1)).él(L(E(i,1)).db):=E(i,2) L(E(i,2)).db:=L(E(i,2)).db+1 L(E(i,2)).él(L(E(i,2)).db):=E(i,1) Fok(E(i,1)):=Fok(E(i,1))+1 Fok(E(i,2)):=Fok(E(i,2))+1 Ciklus vége Eljárás vége. 30/38

Felépítés: éllistából csúcslista (lista): Típus Éllista=Tömb(1..Maxél:TÉl) TÉl=Tömb(1..2:TPont) Csúcslista=Tömb(1..Maxpont:Lista(TPont)) Változó Élszám,Pontszám 31/38

Felépítés: éllistából csúcslista (lista): Felépít(E,L,Fok): Ciklus i=1-től Pontszám-ig Üres(L(i)) Ciklus vége Ciklus i=1-től Élszám-ig Beszúrmögé(L(E(i,1)),E(i,2)) Beszúrmögé(L(E(i,2)),E(i,1)) Fok(E(i,1)):=Fok(E(i,1))+1 Fok(E(i,2)):=Fok(E(i,2))+1 Ciklus vége Eljárás vége. 32/38

Műveletek csúcsmátrixra: Vanél?(Cs,p,q): Vanél?:=Cs(p,q) Függvény vége. Súlyozott gráf esetén: Vanél?(Cs,p,q): Vanél?:=(Cs(p,q)>0) Függvény vége. Élhossz(Cs,p,q): Élhossz:=Cs(p,q) Függvény vége. Gráfok műveletei A többi művelet nehéz, csúcsmátrix esetén nem valósítjuk meg. 2015.02.18. 8:02 33/38

Gráfok műveletei Műveletek csúcslistára (tömb): Szomszédpontokszáma(L,p): Szomszédpontokszáma:=L(p).db Függvény vége. Szomszéd(L,p,i): Szomszéd:=L(p).él(i) Függvény vége. A többi művelet nehéz, csúcslista esetén nem valósítjuk meg. Megjegyzés: Szomszédpontokszáma=Fok (ill. Kifok) 34/38

Gráfok műveletei Műveletek csúcslistára (lista): Elsőszomszéd(L,p): Elsőre(L(p)); Elsőszomszéd:=Tartalom(L(p)).érték Függvény vége. Következőszomszéd(L,p): Következőre(L(p)) Következőszomszéd:=Tartalom(L(p)).érték Függvény vége. A többi művelet nehéz, csúcslista esetén nem valósítjuk meg. 35/38

Gráfok alkalmazása Szuperforrás: belőle mindenhova megy él, bele sehonnan sem szuperforrás maximum 1 lehet. Egy pont biztosan nem szuperforrás: ha valahova nem megy ki belőle él; ha valahonnan jön bele él. 36/38

Gráfok alkalmazása Szuperforrás(E,f,van): i:=1; j:=pontszám Ciklus amíg i<j Ha Vanél?(i,j) akkor j:=j-1 különben i:=i+1 Ciklus vége f:=i; j:=1; Ha j=f akkor j:=j+1 Ciklus amíg j Pontszám és Vanél?(f,j) és nem Vanél?(j,f) j:=j+1; Ha j=f akkor j:=j+1 Ciklus vége van:=j>pontszám Eljárás vége. 37/38

Adatszerkezetek II. 1. előadás vége