22. GRÁFOK ÁBRÁZOLÁSA

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

Gráfelméleti alapfogalmak

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

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

Gráfelméleti feladatok. c f

Gráfalgoritmusok 3 Néhány probléma modellezése gráfokkal 3 Alapfogalmak, jelölések 7 Gráfok ábrázolása 9 Bejárási stratégiák, szélességi bejárás 15

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

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

Adatszerkezetek II. 1. előadás

GRÁFOK, GRÁF ALGORITMUSOK. Jegyzet

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

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

Gráfalgoritmusok Legrövidebb utak egy forrásból Dijkstra algoritmus Bellman-Ford algoritmus 31

Diszkrét matematika 2.C szakirány

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

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

Diszkrét matematika 2.C szakirány

Algoritmuselmélet 7. előadás

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

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

Diszkrét matematika 2.C szakirány

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

Gráfelméleti alapfogalmak-1

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

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Adatszerkezetek 2. Dr. Iványi Péter

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

Gráfalgoritmusok ismétlés ősz

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

3. TÖMBÖK A tömb absztrakt adattípus Legyen T az E alaptípus feletti k ( 1) dimenziós tömb típus. Vezessük be az I I1

Diszkrét matematika 2.

Diszkrét matematika 2.C szakirány

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

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

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

Diszkrét matematika 2.

Relációk. 1. Descartes-szorzat. 2. Relációk

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

23. SZÉLESSÉGI BEJÁRÁS

GráfRajz fejlesztői dokumentáció

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

Diszkrét matematika 2.C szakirány

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

1. tétel - Gráfok alapfogalmai

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

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

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.

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

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

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:

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

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

Hasonlósági keresés molekulagráfokon: legnagyobb közös részgráf keresése

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

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.

Egyirányban láncolt lista

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

Érdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

Adatbázis rendszerek Definíciók:

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

2. Visszalépéses keresés

Relációk. 1. Descartes-szorzat

Javító és majdnem javító utak

Struktúra nélküli adatszerkezetek

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

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

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

A gráffogalom fejlődése

Diszkrét Matematika GYAKORLAT, Levelező MSc hallgatók számára. 3. Feladatsor

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

Komputeralgebrai Algoritmusok

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmuselmélet 1. előadás

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Ramsey-féle problémák

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Adatszerkezetek 1. előadás

DISZKRÉT MATEMATIKA 2 KIDOLGOZOTT TÉTELSOR 1. RÉSZ

Algoritmusok bonyolultsága

Érdekes informatika feladatok

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

Diszkrét matematika 2.C szakirány

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

KOVÁCS BÉLA, MATEMATIKA I.

SzA II. gyakorlat, szeptember 18.

Programozás alapjai II. (7. ea) C++

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Algoritmusok és adatszerkezetek 2.

Dijkstra algoritmusa

Diszkrét matematika 2.

KOMBINATORIKUS OPTIMALIZÁLÁS

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

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Átírás:

22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is szóba jöhet. A különféle útkeresési problémák természetes módon vezetnek a gráfokhoz. Ha például Budapesten gyalogosan keresünk legrövidebb utat két pont között, akkor útszakaszokat irányítatlan éleknek tekinthetjük, súlyukat pedig lényegében az útszakasz hossza adja. Ha autóval szeretnék az utat megtenni, akkor a gráf éleit már irányítottnak kell tekintenünk. Szintén irányítás nélküliek az élek, ha néhány helység között szeretnénk minimális összköltségű vezetékrendszert létesíteni, valamilyen energiával való ellátás céljából. Az élekhez természetesen a létesítés költségét hozzárendeljük. Arra is tudunk példát mondani, hogy költségmentesek a modellben alkalmazott gráf élei. Ha egy termék előállításának egymáshoz illeszkedő, de többfelé ágazó (irányított élekkel ábrázolt) lépéseit szeretnénk linearizálni, akkor a költségeknek nincs alapvető szerepe. A párosítási feladatok irányítatlan élei is gyakran költség nélküliek. Általánosabb megközelítés szerint bizonyos entitások, absztrakt objektumok közötti kapcsolatokat leíró bináris relációk (kapcsolatok) szemléletes leírásának egyik eszköze a gráf. A gráfokkal az ember számára könnyen "emészthető" formában lehet ábrázolni a relációk tulajdonságait (például szimmetria = irányítatlanság vagy kettő hosszú kör, reflexivitás = hurokél). A modell objektumainak megfeleltetjük a gráf csúcsait, a közöttük fennálló kapcsolatok leírására pedig a gráf éleit használjuk. Mivel egy olyan általános fogalom, mint a bináris reláció modellezésére használjuk, számos probléma megfogalmazható úgy, mint gráfelméleti feladat. A gráfalgoritmusok című rész fejezeteiben néhány fontos, a gyakorlati életben is gyakran előforduló általános feladatot és a megoldásukra használható algoritmust ismertetünk. 22.1. Alapfogalmak, jelölések A továbbiakban ismertnek feltételezzük az alapvető gráfelméleti fogalmakat, definíciókat és tételeket. Most nézzünk néhány fontosabb fogalmat kevésbé formálisan, inkább csak a felelevenítés szintjén. Irányított gráf (lásd: 22.1. ábra): G = (V, E) pár, ahol V a csúcsok véges halmaza (általában 1, 2,, n), E V V pedig az élek, vagyis a csúcsokból alkotott rendezett párok halmaza. Egy él a gráfban: e = (u, v) E, ahol u, v V csúcsok. Ha e = (u, u), akkor hurokélnek nevezzük. A gráfban a csúcsok száma n = V, az élek száma e = E. 22.1. ábra. Egy irányított gráf hurokéllel

Irányítás nélküli gráf: G = (V, E) pár, ahol V a csúcsok véges, E V V pedig az élek, vagyis a csúcsokból alkotott rendezetlen párok halmaza. Vagyis, ha (u, v) E, akkor (v, u) E is teljesül, amit [u, v] E módon jelölünk. Súlyozott gráf: G = (V, E, c) hármas, ahol c: V V R súlyfüggvény, c(u, v) egy adott él súlya. Egyszerű gráf: olyan gráf, amelyben nincs hurokél, illetve többszörös él. Szomszéd/rákövetkező csúcs: Legyen u, v V. A v csúcs az u rákövetkezője, ha létezik (u, v) E él. Jelölése: u v. Irányítás nélküli gráfban a reláció szimmetrikus. Út: Legyen v 0, v 1,, v k V. A v 0, v 1,, v k sorozat egy k hosszúságú út, ha i [1 k]: (v i 1, v i ) E. Jelölése: u v. Kör: egy k hosszúságú út kör, ha v 0 = v k. Egyszerű út: Egy olyan út, amely körmentes, azaz i [1 k], j [i + 1 k]: v i v j. Egyszerű kör: egy olyan kör, amelyben nincs belső kör, azaz egy olyan kör, amelyben v 1,, v k páronként különböző csúcsokból áll (v 0 = v k és i [1 k 1], j [i + 1 k]: v i v j ). Körmentes gráf: kört nem tartalmazó gráf. Fokszám: Irányítás nélküli gráfban egy csúcs fokszáma a csúcsból kiinduló élek száma. Irányított gráf esetén megkülönböztetjük a kimenő élek számát, amely a csúcs kimenő fokszáma (kifok), illetve a bemenő élek számát, amely a bemenő fokszáma (befok), a csúcs fokszáma pedig a kettő összege. Összefüggő gráf: egy irányítás nélküli gráf összefüggő akkor, és csak akkor, ha bármely két csúcs összeköthető úttal. Ekkor a gráf egyetlen komponensből áll (lásd: 22.2. ábra). 22.2. ábra. Egy nem összefüggő gráf három komponenssel ({1, 2, 5}, {4}, {3, 6}) Erősen összefüggő gráf: Egy irányított gráf erősen összefüggő akkor, és csak akkor, ha bármely két csúcs összeköthető úttal (figyelembe véve az irányítást, tehát u v és v u egyaránt kell, hogy teljesüljön). Teljes gráf: Egy olyan irányítás nélküli gráf, amelynek bármely két csúcsa szomszédos. Páros gráf: Egy olyan irányítás nélküli gráf, amelynek csúcsai két diszjunkt halmazra bonthatóak, és él csak a két különböző halmaz csúcsai között mehet, azonos halmazban lévő csúcsokat azonban nem köthet össze.

Erdő: Egy körmentes, irányítás nélküli gráf. Fa: egy összefüggő, körmentes, irányítás nélküli gráf. 22.2. Gráfok ábrázolása A gráfok ábrázolására két, a gyakorlatban igen elterjedt adatszerkezetet adunk. Az egyik tisztán aritmetikai ábrázolású (szomszédsági mátrix), a másik vegyes, aritmetikai és láncolt ábrázolású (szomszédsági lista). 22.2.1. Szomszédsági mátrix Legyen G = (V, E) véges gráf, és n a csúcsok száma. Ekkor a gráfot egy n n-es mátrixban ábrázoljuk, ahol az oszlopokat és a sorokat rendre a csúcsokkal indexeljük (ez leggyakrabban 1,, n). Egy mezőben akkor van 1-es, ha a hozzá tartozó oszlop által meghatározott csúcs szomszédja a sor által meghatározott csúcsnak. C[i, j] = { 1 ha (i, j) E 0 ha (i, j) E Az ábrázolás eszközeként alkalmazott mátrixot nevezzük szomszédsági mátrixnak. (Találkozni lehet még az adjacencia mátrix, illetve csúcsmátrix elnevezésekkel is.) Tekintsünk két példát a 22.3. ábrán. Figyeljük meg, hogy az irányítatlan gráf esetén a mátrix szemmetrikus. 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 ( 0 0 0 1 0) 0 1 1 0 0 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 ( 0 1 0 1 0) 22.3. ábra. Egy irányított és egy irányítatlan gráf szomszédsági mátrixa Ha súlyozott a gráf, akkor az élsúlyokat (élköltségeket) is el kell tárolni. Ezt is a mátrixon belül oldjuk meg. A súly valós számokat vehet fel. Természetesen adódik, hogy ahol előzőleg 1-est írtunk, azaz létezett az illető él, oda most írjuk be az él költségét. Két további eset maradt, a mátrix főátlója, és az olyan mezők, amelyek esetén nem létezik él. Vezessük be a végtelen ( ) élsúlyt, és a nem létező élek esetén a mátrix megfelelő helyére írjunk -t. Egy ilyen "élen" csak végtelen nagy költséggel tudunk végighaladni (tehát nem tudunk). A mátrix főátlójába kerülnének a hurokélek költségei, de ilyen értékeket nem alkalmazunk, mivel a továbbiakban a legtöbb gyakorlati probléma leírására alkalmas egyszerű gráfokra korlátozzuk a tárgyalást. Az egyszerű gráfok nem tartalmaznak hurokéleket (valamint többszörös éleket sem).

Élsúlyozott gráf esetén a szomszédsági mátrix kitöltését a következő megállapodás szerint végezzük: 0 ha i = j C[i, j] = { c(i, j) ha (i, j) E ha (i, j) E A mátrixos ábrázolás helyfoglalása mindig ugyanakkora, független az élek számától, a mátrix méretével n 2 -tel arányos. (Az n pontú teljes gráfnak is ekkora a helyfoglalása.) A mátrixos reprezentációt sűrű gráfok esetén érdemes használni, hogy ne legyen túl nagy a helypazarlás. 22.2.2. Éllistás ábrázolás Ebben a reprezentációban a gráf minden csúcsához egy listát rendelünk. Ezen listában tartjuk nyilván az adott csúcsból kimenő éleket. Legyen G = (V, E) véges gráf, és n a csúcsok száma. Vegyünk fel egy mutatókat tartalmazó Adj[1 n] tömböt (a csúcsokkal indexeljük a tömböt). A tömbben lévő mutatók mutatnak az éllistákra (más néven a szomszédsági listákra). Az éllisták lehetnek egy- vagy kétirányú, fejelemes vagy fejelem nélküli listák, ez most nem lényeges a gráf szempontjából. Irányított gráf esetén (lásd: 22.4. ábra), az éllisták listaelemei reprezentálják az éleket. Az élnek megfelelő listaelemet abban a listában tároljuk, amelyik csúcsból kiindul az él, és a célcsúcs indexét eltároljuk a listaelemben. Tehát az (i, j) E él megvalósítása az i-edik listában egy olyan listaelem, amelyben eltároltuk j-t, mint az él célcsúcsát. 22.4. ábra. Egy irányított gráf éllistás ábrázolása Irányítatlan gráf esetén (lásd: 22.5. ábra), egy élnek két listaelemet feleltetünk meg, azaz egy irányított élt egy oda-vissza mutató, irányított élpárral valósítunk meg a korábban említett módon. Élsúlyozott gráf esetén, az él súlyát is a listaelemben fogjuk tárolni. 22.5. ábra. Egy irányítatlan gráf éllistás ábrázolása Az éllistás ábrázolás helyfoglalása irányítatlan gráfok esetén a csúcsok számával (Adj tömb), illetve az élek számával (éllista-elemek száma) arányos. Az elfoglalt memória méretének nagyságrendje (n + e). Irányított gráfok esetén az élek számának duplájával kell számolnunk, így (n + 2e)-vel arányos helyfoglaláshoz jutunk.

Mivel a memóriaigény az élek számával arányos, ezért az éllistás ábrázolást ritka, illetve nem-sűrű (mondhatnánk normál ) gráfok (e n 2 ) esetén szokták használni, ugyanis sűrű gráf esetén a szomszédsági mátrixhoz képest itt jelentkezik a listák láncolásából származó helyfoglalás is, a mutatók tárolása révén.