Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJuliana de Wit Laatst gewijzigd meer dan 8 jaar geleden
1
Datastructuren voor grafen Algoritmiek
2
2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –… a b c d e f g h
3
Algoritmiek3 Sinds 1736 Euler: –Bruggen van Kö nigsberg –1736 –Verhandeling in Latijn: wanneer kan je een wandeling maken waarbij precies een keer over elke brug loopt?
4
Algoritmiek4 Ongerichte Graaf G=(N,A) –N: verzameling knopen (vertices, nodes) –A: verzameling kanten (edges, undirected edges): deelverzamelingen van N met precies twee elementen a b c d e f g h Of: G=(V,E)
5
Algoritmiek5 Gerichte Graaf G=(N,A) –N weer verzameling knopen (vertices, nodes) –A verzameling pijlen: geordende paren knopen (arcs, directed edges) 1 2 4 5 3 Of: G=(V,A)
6
Algoritmiek6 Begrippen en notatie n: aantal knopen a: aantal kanten Graad van knoop: aantal kanten van of naar knoop Ingraad Uitgraad Pad Cycle 1 2 4 5 3 Knoop 3 heeft ingraad 3 en uitgraad 1 pad 1 2 4 5 3 1 2 4 5 3 cycle
7
Algoritmiek7 Algoritmen willen iets uitrekenen op een gegeven graaf Bereikbaarheid Kortste afstand (routeplanning) Handelsreizigers- probleem Samenhangendheid Is er een cycle? … Subroutines bij ingewikkelder problemen Modellering en oplossen of benaderen van o.a. planningsproblemen
8
Algoritmiek8 Belangrijke basisoperaties op grafen Adjacency test: gegeven knopen v, w: is er een kant (pijl) van v naar w ? Ga alle kanten vanuit (of naar) een knoop v langs (iterator) Ook: opsommen alle knopen, kanten, gegeven een kant, geef de eindpunten, evt.: voeg knoop toe; voeg kant toe, etc.
9
Algoritmiek9 1 e datastructuur voor grafen: Adjacency matrix Twee dimensionale array 123 1010 2001 3010 1 2 3
10
Algoritmiek10 123 1nil 2 3 1 2 3 Edge object In array posities kan staan: -true of false -Pointer naar object voor kant -Getal, bijv. lengte.
11
Algoritmiek11 1 2 3 4 5 6 7 8 12345678 101100010 210100000 311011100 400101000 500110000 600100010 710000101 800000010 Ongerichte graaf: Symmetrische matrix
12
Algoritmiek12 Adjacency matrix datastructuur: eigenschappen Bepalen of er een kant is van v naar w (voor input v, w) O(1) tijd Afgaan van alle kanten vanuit een knoop O(n) tijd Alleen relatief snel als graaf `veel kanten’ heeft – niet grenzende paren knopen `verknoeien’ tijd. Geheugenruimte: O(n 2 ) (wel: eenvoudig).
13
Algoritmiek13 2 e datastructuur voor grafen: Adjacency lists Per knoop een gelinkte lijst met alle kanten met die knoop als eindpunt. Gerichte grafen: lijst voor uitgaande en/of lijst voor inkomende kanten. … In de objecten kan extra info staan
14
Algoritmiek14 Adjacency lists: voorbeeld 1 2 3 4 1 2 3 4
15
Algoritmiek15 Adjacency list: voorbeeld gerichte grafen 1 2 1 2 3 3 1 2 3 en evt.: Structuur met pijlen `andersom’
16
Algoritmiek16 Eigenschappen van adjacency list datastructuur Afgaan van alle kanten vanuit een knoop: –Snel: O(d), d de graad van de knoop Bepalen of twee knopen grenzen: –Langzaam … kan (n) tijd kosten Geheugenruimte: O(n+a) …
17
Algoritmiek17 Voors en tegens Adjacency matrices –Eenvoudig –Snelle adjacency test –Langzaam aflopen van de graaf –Als graaf `ijl’ is: veel geheugen Adjacency lists –Niet erg ingewikkeld –Langzame adjacency test –Snel aflopen van de graaf –Minder geheugen voor ijle grafen –Wellicht meer geheugen voor dichte grafen.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.