Grafer og Algoritmer Rasmus D. Lehrmann DM
Indhold Hvad er en graf? Graftyper Graftyper eksempel Vertex og Edge Adjacency Traversering Spanning Tree Algoritmer Dijkstra Opsummering 2
Hvad er en graf? Knuder (vertex) Kanter (edge) Vægte Adjacent Path Cycle 3
Graftyper Forbundet graf Komplet graf Vægtet graf Retningsbestemt graf Plan graf 4
Graftyper vægtet eksempel 5
Plan graf eksempel plan graf Ikke plan graf 6
Vertex og Edge V = Antal vertex E = Edge, forbindelsen imellem 2 vertex Indholdet af en graf kunne således være: – V = 1,2,3,4 – E = (1,2), (1,4), (2,4), (2,3), (3,4) 7
Adjacency Der kan laves 2 illustrationer af Adjacency: Matrix: – N * N størrelse List – Min N > N * N størrelse 8
Adjacency-Matrix FraFra Til 9
Adjacency-List 10
Traversering Dybde først: – Fortsætter til enden, hvorefter den går baglæns Brede først: – Besøger alle adjecents før der fortsættes 11
Eksempel på Traverserings algoritmer 12
Spanning Tree For at en graf kan være et spanning træ skal følgende gælde: Alle knuder skal være forbundet Ikke-vægtet Ikke indeholde cycle Spanning trees kan kortlægges ud fra dybde eller bredde først 13
Spanning Tree 14
Algoritmer Der findes algoritmer med forskellige formål: Prim’s (billigste måde at besøge alle vertex på) Kauskal’s (sammensætter små grafer til en større) Dijkstra’s (korteste vej i vægtet graf) 15
Dijkstra Vægtet Ikke-orienteret Finder den korteste path imellem en given start- og slutvertex 16
Dijkstra 1 17
Dijkstra 2 18
Dijkstra 3 19
Dijkstra 4 20
Dijkstra 5 21
Opsummering Grafer og Algoritmer En graf kan beskrives ved hjælp af – Knuder (vertexs), kanter (edges) der kan være vægtet Graftyper – Forbundet graf, komplet graf, vægtet graf, retningsbestemt graf, plan graf Travesering – Dybde først, Brede først Algoritmer – Værktøj til at løse forskellige opgaver i grafer Grafer kan f.eks. blive brugt til navigation 22