Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).

Relevanta dokument
Graphs (chapter 14) 1

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning Datastrukturer (DAT036)

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

TNK049 Optimeringslära

Föreläsning Datastrukturer (DAT037)

Datastrukturer. föreläsning 8. Maps 1

FÖRELÄSNING 11 DATALOGI I

Datastrukturer och Algoritmer D0041D

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Trafiksimulering: Grafalgoritmer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

Datastrukturer. föreläsning 9. Maps 1

F11. Läsanvisning: kap 10 + dessa OH. Kruskals algoritm kortaste vägar en till alla

Tentamen, Algoritmer och datastrukturer

Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013

Trädstrukturer och grafer

Datastrukturer. föreläsning 9. Maps 1

Näst nästa gång: Nästa gång: mer grafer (kap 10) Grafer 1 1. ! uppspännande träd. ! minimala uppspännande träd. ! Prims algoritm. !

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Föreläsning 5: Grafer Del 1

Optimering Kruskal s algoritm Prim-Jarník s algoritm

Datastrukturer. föreläsning 8. Lecture 6 1

Föreläsning Datastrukturer (DAT036)

Föreläsning 8 Datastrukturer (DAT037)

träd dag graf båge och vikt Grafer definitioner och terminologi

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00

Datastrukturer. föreläsning 7. Maps 1

Föreläsning 6 Datastrukturer (DAT037)

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Lösningar Datastrukturer TDA

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

729G04 - Diskret matematik. Lektion 4

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

729G04 - Diskret matematik. Lektion 4

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Datastrukturer. föreläsning 7. Maps 1

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen Datastrukturer D DAT 036/INN960

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 2: Grafer. Exempel på graf

Datastrukturer och algoritmer

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Algoritmer och datastrukturer, föreläsning 11

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 13 Datastrukturer (DAT037)

Datastrukturer. föreläsning 10. Maps 1

Föreläsningsanteckningar F6

Föreläsning 13 Datastrukturer (DAT037)

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

MA2047 Algebra och diskret matematik

Tentamen Datastrukturer (DAT036)

Föreläsning 13 Innehåll

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Kapitel 9: Grafalgoritmer

Datastrukturer och algoritmer

13 Prioritetsköer, heapar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Datastrukturer och algoritmer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tildatenta Lösningsskiss

Facit Tentamen TDDC kl (6)

Tentamen Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Kap.6 Grafer. Egenskaper: Handskakningslemmat och Eulers formel Sats om eulerkrets/väg Isomorfi och representation av grafer Graffärgning

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer D DAT 036/DIT960

Ekvivalensrelationer

Programmering II (ID1019)

Facit Tentamen TDDC (7)

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 11. Giriga algoritmer

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Datastrukturer och algoritmer

Transkript:

Grafer, allmänt Allmänt Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges). En graf kan vara riktad (directed) eller oriktad (undirected). En graf kan vara viktad (weighted) eller oviktad(not weighted). Datastrukturer, Grafer 1

Bågar Allmänt En båge består av: två noder, en vikt om grafen är viktad och en riktning om grafen är riktad. Noderna som ingår i en båge säges vara förbundna (adjacent) och säges vara grannar (neighbours) till varandra. I en oviktad graf anses vikten för varje båge vara lika med 1. Med en väg (path) menas: en sekvens av noder där två intillliggande noder i sekvensen utgör noderna i en båge eller en sekvens av bågar, där två intilliggande bågar har en nod gemensamt. Datastrukturer, Grafer 2

Speciella grafer Allmänt En graf säges vara komplett (complete) om varje nod är granne till alla andra noder. Om man inte räknar parallella bågar eller en bågar från en nod till sig själv, innehåller en komplett graf n (n 1) 2 O( n 2 ) bågar. Den kompletta riktade grafen innehåller dubbelt så många. En graf är cyklisk (cyclic) om det finns en väg av minst 2 olika bågar från någon nod till sig själv. En graf är sammanbunden, (eller sammankopplad), (connected) om det från varje nod finns åtminstone en väg till varje annan nod. Minimalt innebär detta att en oriktad sammanbunden graf innehåller n 1 bågar och en riktad sammanbunden graf innehåller minst n bågar. Om grafen inte kan delas in i två isolerade delar är grafen sammanhängande. Med isolerade menas att det ej finns någon båge från den ena delgrafen till den andra delgrafen i den totala grafen. Detta innebär att det finns minst n 1 bågar för en sammanhängande graf. En riktad viktad graf kallas också ett nätverk (network) Datastrukturer, Grafer 3

Traversering i grafer Traversering Två huvudformer: bredden först (breadth first) eller djupet först (depth first). Datastrukturer, Grafer 4

Implementering av grafer Implementering 1. Elementen själva är noder, t.ex. släktgraf. 2. Som en matris, bra vid täta grafer. 3. Med en tabell av grannlistor, bra vid glesa grafer. Datastrukturer, Grafer 5

Exempel: matris Implementering 1 2 3 4 5 6 1 1 4 2 1 2 6 10 3 4 2 5 11 4 6 5 10 5 5 6 11 5 Datastrukturer, Grafer 6

Exempel: granntabell Implementering 1 (1,2,1) (1,3,4) 2 (2,1,1) (2,3,2) (2,4,6) (2,5,10) 3 (3,1,4) (3,2,2) (3,5,5) (3,6,11) 4 (4,2,6) 5 (5,2,10) (5,3,5) (5,6,5) 6 (6,3,11) (6,5,5) Datastrukturer, Grafer 7

Grafalgoritmer Algoritmer Vi skall betrakta några giriga (greedy) algoritmer. 1. Kortaste vägen (Shortest Path), enligt Dijkstra s algoritm. 2. Minsta sammanhängande graf (Minimum spanning tree), enligt Prim s algoritm 3. Minsta sammanhängande graf (Minimum spanning tree), enligt Kruskal s algoritm Datastrukturer, Grafer 8

Komplexitet för grafalgoritmer Algoritmer Komplexiteten för en grafalgoritm anges i förhållande till: antalet noder, dvs O( f( V ) ), antalet bågar, dvs O( f( E ) ) eller en kombination av dessa, dvs O( f( V, E ) ) Vanligast för grafer implementerade i en matris är O( f( V ) ). Vanligast för grafer implementerade med en grannlistetabell är O( f( E ) ) Datastrukturer, Grafer 9

Dijkstra s algoritm på en granntabell Algoritmer Kortaste vägen mellan startpunkt och slutpunkt Köelementen innehåller nod man kommit till, totalvikt och vägen dit från startpunkt Lägg startpunkt med den tomma vägen och totalvikten 0 i en tom prioritetskö Så länge kön inte är tom låt ( nod, totvikt, väg ) vara första element som hämtas i kön (dvs minsta totvikt) om nod ej besökt Om nod är slutpunkt returnera väg Annars: markera nod besökt för varje båge i grannlistan för nod, om tillnoden ej markerad besökt lägg in nytt köelement för denna tillnod Datastrukturer, Grafer 10

Prim s algoritm på en granntabell Algoritmer Prims algoritm för att hitta minsta sammanhängande graf. Välj en godtycklig nod a som startpunkt. Markera a besökt. Lägg alla bågar från a i en prioritetskö pq, som är ordnad efter bågens vikt. (Lägsta vikt har högst prioritet.) Så länge kön pq ej är tom låt ( from, to, weight ) vara första element som hämtas ur kön pq om to ej markerad besökt markera to besökt lägg bågen i listan res lägg alla bågar från to i prioritetskön pq Datastrukturer, Grafer 11

Kruskal s algoritm på en granntabell Algoritmer Kruskals algoritm för att hitta minsta hopknutna graf. (Dvs sammanhängande graf om den är oriktad) Skapa ett fält A som för varje nod innehåller en egen tom lista. Gå igenom granntabellen och lägg in ALLA bågar i en prioritetskö pq (lägsta vikt högsta prioritet) Så länge kön pq ej är tom låt e == (from, to, weight) vara första element som hämtas ur kön pq om from och to ej refererar till samma lista i fältet A, flytta över alla elementen från den ena listan till den andra och se till att alla berörda noder i A refererar till den påfyllda listan lägg slutligen e i den påfyllda listan. Datastrukturer, Grafer 12