Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Gráfok ábrázolása teljesen láncoltan Készítette: Mihály Balázs Attila

Hasonló előadás


Az előadások a következő témára: "Gráfok ábrázolása teljesen láncoltan Készítette: Mihály Balázs Attila"— Előadás másolata:

1 Gráfok ábrázolása teljesen láncoltan Készítette: Mihály Balázs Attila

2 Gráf ábrázolási módjai: - Mátrix (csúcsmátrix) - Gyors elérhetőség - Ritka gráf esetén sok fölösleges adat - Optimális sűrű, telített gráfok tárolására - Éllista - Élek lassabban érhetőek el - Kevés fölösleges adadt - Optimális ritka gráfok tárolásár a - Teljesen láncolt - Csúcsok és élek lassan érhetőek el - Nincs fölösleges adat - Optimális sűrűn módosított gráfok tárolására

3 Élbeszúrás műveletigénye (a továbbiakban egyszerű, irányított gráfra) Mátrixos ábrázolás esetén az aktuális mátrixelem módosítása. =>Egy adattag módosítása O(1) műveletigénnyel Éllistás ábrázolás esetén az aktuális csúcshoz tartozó éllistába elem beszúrása. =>Beszúrás rendezetlen listába O(1) műveletigénnyel Teljesen láncolt ábrázolás esetén meg kell keresni a csúcslistában az él kiindulópontját, és a hozzá tartozó éllistába beszúrni a végpontot. =>Keresés listában és beszúrás listába O(n) műveletigénnyel

4 Éltörlés műveletigénye Mátrixos ábrázolás esetén ugyanaz, mint beszúrásnál: az aktuális mátrixelem módosítása. =>Egy adattag módosítása O(1) műveletigénnyel Éllistás ábrázolás esetén az aktuális csúcshoz tartozó éllistából elem törlése. =>Keresés és törlés listából O(n) műveletigénnyel Teljesen láncolt ábrázolás esetén meg kell keresni a csúcslistában az él kiindulópontját, és a hozzá tartozó éllistából törölni a végpontot. =>Keresés listában és törlés listából O(n) műveletigénnyel

5 Csúcsbeszúrás műveletigénye Mátrixos ábrázolás esetén a beszúrandó csúcs mögül mindent alrébb kell tolni, azaz az egész mátrix megváltozik (esetleg a mátrix méretét is növelni kell). =>egy üres sor és oszlop az új csúcsnak, a csúcs mögötti értékek alrébb csúsztatása, összesen O(n 2 ) műveletigény (Meg lehet csinálni, hogy előre elég nagy mártixot veszünk föl, melyben az összes lehetséges csúcs helyét lefoglaljuk, de ez bizonyos esetekben fölöslegesen fogal helyet. Ekkor ez a művelet O(1) lépésből áll.) Éllistás ábrázolás esetén a csúcsok tömbjét kell bővíteni (esetleg a tömb méretét módosítani). =>a csúcs mögötti elemek alrébb csúsztatása O(n) műveletigénnyel (Esetleg a csúcstömböt szintén fölvehetjük előre, ekkor ez is O(1) lépés) Teljesen láncolt ábrázolás esetén a csúcslistába kell szúrni egy elemet. =>beszúrás listába O(1) műveletigénnyel

6 Csúcstörlés műveletigénye Fontos, hogy a törlendő csúcsba vezető éleket is törölnünk kell a gráfból. Mátrixos ábrázolás esetén a törlendő csúcs mögül előrébb kell hozni a többi sort, oszopot. Az csúcsba vezető élek keresése és törlése a többi csúcsnál. =>csúcs mögötti értékek előrébb csúsztatása, összesen O(n 2 ) műveletigény (Élek keresése a többi csúcsnál és törlés: O(n) lépés) (A kevésbé helytakarékos esetben inaktiváljuk a csúcsot: O(1)) Éllistás ábrázolás esetén a csúcsok tömbjéből elem törlése (mögötte lévő elemek mozgatása), valamint élek keresése és törlése. =>a csúcs mögötti elemek előrébb csúsztatása O(n) műveletigénnyel, minden csúcsnál él keresése (és törlése) O(n 2 ) (Esetleg a csúcs inaktiválása O(1) lépés) Teljesen láncolt ábrázolás esetén törlés listából és az élek törlése =>törlés listából O(n), élek keresése és törlése O(n 2 ) műveletigénnyel

7 Csúcsok, élek elérése A gráfon végzett algoritmusok alkalmazásánál fontos a gráf egy csúcsának, élének elérési műveletigénye. A műveletigények összefoglalva

8 A teljesen listás ábrázolásról részletesebben Egy jó implementálási mód, ha a gráfot fejelemes listák listájaként ábrázoljuk. A fejelem tartalmaz egy csúcsot, a lista többi tagja pedig a fejelemben lévő csúcsból kiinduló élek végpontjait.

9 Példa teljesen láncolt ábrázolásra Egy, a bal oldalon látható irányított gráfot a jobb oldali listaszerkezetben ábrázolhatjuk.

10 Csúcs beszúrása

11 Él beszúrása

12 Csúcs törlése

13 Él törlése

14 A gráfelemek elérésének műveletigénye A listákban szereplő műveletigényeket javíthatjuk, ha minden lista helyett bináris keresőfát - mondjuk AVL fát - használunk. Ekkor az AVL fa műveletei alapján az eléréséhez már csak O(log 2 n) lépésre van szükség, a beszúrás és a törlés mind a csúcsok és élek esetén ezek szerint módosul. (A műveleteket könnyen leírhatjuk, ha az imént bemutatott listaműveleteket lecseréljük az AVL fa műveleteire)

15 Példa AVL fával ábrázolt gráfra

16 A csúcsokhoz tartozó éleket tartalmazó fák

17 A szakall.web.elte.hu/graf címről letölthetőek: - a bemutató fóliái - forráskód (tesztprogrammal) listával ábrázolt gráfhoz (c++) - forráskód (tesztprogrammal) AVL fával ábrázolt gráfhoz (c++)


Letölteni ppt "Gráfok ábrázolása teljesen láncoltan Készítette: Mihály Balázs Attila"

Hasonló előadás


Google Hirdetések