![Page 1: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/1.jpg)
1
Graphs(chapter 14)
![Page 2: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/2.jpg)
2
Terminologi
En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)
en båge är ett par (a, b) av två noderen båge kan vara cyklisk — peka på sig själv
• en graf kan vara riktad eller oriktadom den är oriktad så är (a, b) och (b, a) samma sak
en graf kan vara viktad eller oviktad• om den är viktad så är bågarna tripler (a, b, w),
där w är vikten (oftast ett tal > 0)
![Page 3: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/3.jpg)
3
Nodes are stationsEdges are “bits of line”
![Page 4: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/4.jpg)
4
Nodes are componentsEdges are connections
![Page 5: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/5.jpg)
5
Seven bridges of Königsberg
http://en.wikipedia.org/wiki/Seven_Bridges_of_Königsberg
![Page 6: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/6.jpg)
6
Grafer
Träd är begränsade — de kan ha endast en föräldergrafer kan ha hur många som helst
Grafer och grafalgoritmer används för:stora kommunikationsnätverk algoritmer som får Internet att funkaatt beräkna den optimala placeringen av komponenter på integrerade kretsaratt beskriva vägnät, kartor, flygrutter, förkunskaper till högskolekurserm.m.
![Page 7: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/7.jpg)
Visuell representation
Noder representeras som punkter eller cirklar
Bågar representeras som linjer mellan noderna
V = {A, B, C, D, E}E = {(A, B), (A, D), (C, E), (D, E)}
V = {A, B, C, D, E}E = {(A, B), (B, A), (B, E), (D, A), (E, A), (E, C), (E, D)}
![Page 8: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/8.jpg)
Layouten är oviktig
Exakt hur vi placerar ut noderna och bågarna är oviktigt
V = {0, 1, 2, 3, 4, 5, 6}E = {(0, 1), (0, 2), (0, 5), (0, 6), (3, 5), (3, 4), (4, 5), (4, 6)}
![Page 9: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/9.jpg)
Viktade grafer
En båge kan ha en vikt kopplad till sig motsvarande graf blir då en viktad graf
En graf kan vara riktad, eller viktad, eller både och
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
![Page 10: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/10.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A vertex is adjacent to another vertex if there is an edge to it from that other vertex
![Page 11: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/11.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A vertex is adjacent to another vertex if there is an edge to it from that other vertex
Philadelphia is adjacent to
Pittsburgh
![Page 12: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/12.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A vertex is adjacent to another vertex if there is an edge to it from that other vertexIndianapolis is adjacent to
Columbus
![Page 13: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/13.jpg)
Stigar och cykler
A
ED
B
C
A vertex is adjacent to another vertex if there is an edge to it from that other vertex
A is adjacent to D, but D is NOT adjacent to A
![Page 14: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/14.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A path is a sequence of vertices in which each successive vertex is adjacent to its predecessor
![Page 15: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/15.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A path is a sequence of vertices in which each successive vertex is adjacent to its predecessor
![Page 16: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/16.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
In a simple path, the vertices and edges are distinct except that the first and last vertex may be the same
![Page 17: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/17.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
In a simple path, the vertices and edges are distinct except that the first and last vertex may be the same
This path is a simple path
![Page 18: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/18.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
In a simple path, the vertices and edges are distinct except that the first and last vertex may be the same
This path is NOT a simple path
![Page 19: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/19.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A cycle is a simple path in which only the first and final vertices are the sameA graph that has a cycle is called cyclic
Otherwise it is acyclic
![Page 20: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/20.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
A cycle is a simple path in which only the first and final vertices are the same
In an undirected graph a cycle must contain at least three distinct verticesPittsburgh → Columbus → Pittsburgh
is not a cycle
![Page 21: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/21.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
An undirected graph is called a connected graph if there is a path from every vertex to every other vertex
![Page 22: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/22.jpg)
Stigar och cykler
320
130
180
150
180
180 120
148
260
40
50
60
155
120
Chicago
Indianapolis Columbus
FortWayne
Ann Arbor
Detroit
Toledo
Cleveland Pittsburgh
Philadelphia
An undirected graph is called a connected graph if there is a path from every vertex to every other vertex
This graph is a connected graph
![Page 23: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/23.jpg)
Stigar och cykler
An undirected graph is called a connected graph if there is a path from every vertex to every other vertex
4
8
5
9
6 7
![Page 24: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/24.jpg)
Stigar och cykler
An undirected graph is called a connected graph if there is a path from every vertex to every other vertex
This graph is a connected graph
4
8
5
9
6 7
![Page 25: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/25.jpg)
Stigar och cykler
An undirected graph is called a connected graph if there is a path from every vertex to every other vertex
4
8
5
9
6 7
![Page 26: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/26.jpg)
Stigar och cykler
An undirected graph is called a connected graph if there is a path from every vertex to every other vertex
This graph is NOT a connected graph
4
8
5
9
6 7
![Page 27: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/27.jpg)
Stigar och cykler
If a graph is not connected, it is considered unconnected, but still consists of connected components
4
8
5
9
6 7
![Page 28: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/28.jpg)
Stigar och cykler
If a graph is not connected, it is considered unconnected, but will still consist of connected components
{4, 5} are connected
components
4
8
5
9
6 7
![Page 29: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/29.jpg)
Stigar och cykler
If a graph is not connected, it is considered unconnected, but will still consist of connected components
{6, 7, 8, 9} are connected
components
4
8
5
9
6 7
![Page 30: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/30.jpg)
Stigar och cykler
If a graph is not connected, it is considered unconnected, but will still consist of connected components
A single vertex with no edge is also considered a
connected component
4
8 9
6 7
![Page 31: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/31.jpg)
31
Träd är grafer
![Page 32: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/32.jpg)
Att implementera grafer
Alternativ 1: Bågarna representeras av en array med |V| listor (kallad ”adjacency lists”), en lista för varje nod
varje lista innehåller de noder som gränsar till den givna nodenlistan är oordnad
Alternativ 2: Bågarna representeras av en 2-dimensionell array (kallad ”adjacency matrix”), med |V| rader och |V| kolumner
cellerna kan då innehålla bågens vikt
![Page 33: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/33.jpg)
Adjacency list – riktad graf
![Page 34: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/34.jpg)
Adjacency list – oriktad graf
![Page 35: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/35.jpg)
Adjacency matrix
Vi använder en 2-dimensionell array.
För en oviktad graf, kan cellerna innehålla boolean eller heltal:heltalsvärden har ibland en fördel om vi utnyttjar matrismultiplikation, vilket vissa grafalgoritmer gör
För en viktad graf, kommer cellerna att innhålla vikterna:vi använder värdet Double.POSITIVE_INFINITY för att representera frånvaron av en bågedetta för att kunna representera en båge med vikten 0
I en oriktad graf är matrisen symmetrisk över huvuddiagonalen:• vi behöver alltså bara använda den nedre vänstra triangeln
![Page 36: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/36.jpg)
Adjacency matrix, oviktad
1.0 1.0
1.0
1.01.0
1.0
1.0
1.0
1.01.0
1.0
1.0
1.0
1.0
1.01.0
1.0
1.0
1.01.0
1.0
1.0
![Page 37: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/37.jpg)
Adjacency matrix, viktad
0.6 1.00.3 1.0
0.5
1.0
0.9
1.0 1.0 0.9
1.0
1.00.3
0.6
1.0
0.5
0.91.0
0.6
1.0
1.0
0.5
0.31.0
1.0
0.3
0.60.9
1.0
0.5
1.0
0.60.9
1.0
0.3
0.5
1.0
![Page 38: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/38.jpg)
38
Vilken är bäst – lista eller matrisEffektiviteten beror på algoritmen och grafens densitet.
Densiteten är kvoten |E| / |V|2
i en tät (dense) graf är |E| nära |V|2
i en gles (sparse) graf är |E| mycket mindre än |V|2
Vi kan anta att• O(|E|) = O(|V|2) för en tät graf
O(|E|) = O(|V|) för en gles graf
![Page 39: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/39.jpg)
Vilken är bäst?
Många grafalgoritmer är på formenfor each vertex u in the graph:
for each vertex v adjacent to u:do something with edge (u, v)
I en adjacency list, så kommer vi att gå igenom varje båge exakt en gång, vilket ger en komplexitet på O(|E|).
I en adjacency matrix, så måste vi även pröva alla par (u, v) som inte har någon båge. Steg 1 och 2 är O(|V|) vardera, vilket ger en komplexitet på O(|V|2).
• om grafen är tät så är O(|E|) = O(|V|2), och båda representationerna är lika effektiva
• men om grafen är gles så är O(|E|) = O(|V|), och list-representationen är effektivare
![Page 40: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/40.jpg)
Vilken är bäst?
En del grafalgoritmer är på formenfor each vertex u in some subset of the vertices:
for each vertex v in some subset of the vertices:if (u, v) is an edge:
do something with edge (u, v)
I en adjacency matrix, så är steg 1 och 2 O(|V|) var, och steg 3 är O(1). Hela algoritmen blir alltså O(|V|2).
I en adjacency list, så är steg 1 O(|V|), medan kombinationen av steg 2 och 3 är O(|E|). Hela algoritmen blir alltså O(|V| |E|).
• om grafen är gles så är O(|E|) = O(|V|), och båda representationerna är lika effektiva
• men i en tät graf är O(|E|) = O(|V|2), vilket gör att list-representationen blir O(|V|3), och matris-representationen är effektivare
![Page 41: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/41.jpg)
Vilken är bäst?
Alltså, för tidskomplexiteten gäller:om grafen är tät så är adjacency matrix bättreom grafen är gles så är adjacency list bättre
Hur är det med minnet?en adjacency matrix behöver allokera plats för |V|2 celleren adjacency list behöver bara plats för |E| Edge-objekt
• men varje Edge innehåller pekare till source, destination, weight och nästa båge i listanalltså behöver en adjacency list plats för 4·|E| värdendvs, om grafen är ca 25% full så tar representationerna ungefär lika mycket minne
![Page 42: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/42.jpg)
42
Grafer, traversering
![Page 43: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/43.jpg)
43
Traversering av grafer
De flesta grafalgoritmer innebär att besöka varje nod i någon systematisk ordning
precis som med träd så finns det olika sätt att göra detta på
De två vanligaste metoderna är:bredden-först-sökning djupet-först-sökning
![Page 44: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/44.jpg)
44
BFS: Bredden-först-sökningVid bredden-först så besöker vi noderna i följande ordning:
besök startnoden förstsedan alla angränsande noder sedan alla noder som kan nås via två bågarsedan alla noder som kan nås via tre bågaroch så vidare
Vi besöker alltså alla noder som kan nås i k steg, innan vi besöker de noder som kan nås i k+1 steg.
Eftersom ingen nod är speciell så antar vi för enkelhets skull att nod nr 0 är startnoden.
![Page 45: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/45.jpg)
Example of a Breadth-First Search
0
2
3 1
9 8
4
7
6
5
0 visited 0 identified0 unvisited
![Page 46: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/46.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5
Identify the start node
0 visited 0 identified0 unvisited
![Page 47: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/47.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5
While visiting it, we can identify its
adjacent nodes
0 visited 0 identified0 unvisited
![Page 48: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/48.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5We identify its adjacent nodes
and add them to a queue of
identified nodes
Visit sequence:0
0 visited 0 identified0 unvisited
![Page 49: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/49.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5
Visit sequence:0
Queue:1, 3
0 visited 0 identified0 unvisited
We identify its adjacent nodes
and add them to a queue of
identified nodes
![Page 50: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/50.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5
Visit sequence:0
Queue:1, 3
0 visited 0 identified0 unvisited
We color the node as visited
![Page 51: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/51.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5
Visit sequence:0
Queue:1, 3
The queue determines which nodes to visit next
0 visited 0 identified0 unvisited
![Page 52: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/52.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5Visit the first
node in the queue, 1
Visit sequence:0
Queue:1, 3
0 visited 0 identified0 unvisited
![Page 53: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/53.jpg)
Example of a Breadth-First Search (cont.)
0
2
3 1
9 8
4
7
6
5
Visit sequence:0, 1
Queue:3
Visit the first node in the queue,
1
0 visited 0 identified0 unvisited
![Page 54: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/54.jpg)
Example of a Breadth-First Search (cont.)
Select all its adjacent nodes
that have not been visited or identified
Visit sequence:0, 1
Queue:3
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 55: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/55.jpg)
Example of a Breadth-First Search (cont.)
Select all its adjacent nodes
that have not been visited or identified
Visit sequence:0, 1
Queue:3, 2, 4, 6, 7
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 56: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/56.jpg)
Example of a Breadth-First Search (cont.)
Now that we are done with 1, we
color it as visited
Visit sequence:0, 1
Queue:3, 2, 4, 6, 7
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 57: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/57.jpg)
Example of a Breadth-First Search (cont.)
and then visit the next node in the queue, 3 (which was identified in
the first selection)
Visit sequence:0, 1
Queue:3, 2, 4, 6, 7
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 58: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/58.jpg)
Example of a Breadth-First Search (cont.)
Visit sequence:0, 1, 3
Queue:2, 4, 6, 7
0 visited 0 identified0 unvisited
and then visit the next node in the queue, 3 (which was identified in
the first selection)
0
2
3 1
9 8
4
7
6
5
![Page 59: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/59.jpg)
Example of a Breadth-First Search (cont.)
3 has two adjacent vertices. 0 has
already been visited and 2 has
already been identified. We are
done with 3
Visit sequence:0, 1, 3
Queue:2, 4, 6, 7
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 60: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/60.jpg)
Example of a Breadth-First Search (cont.)
The next node in the queue is 2
Visit sequence:0, 1, 3
Queue:2, 4, 6, 7
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 61: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/61.jpg)
Example of a Breadth-First Search (cont.)
The next node in the queue is 2
Visit sequence:0, 1, 3, 2
Queue:4, 6, 7
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 62: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/62.jpg)
Example of a Breadth-First Search (cont.)
8 and 9 are the only adjacent vertices not
already visited or identified
Visit sequence:0, 1, 3, 2
Queue:4, 6, 7, 8, 9
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 63: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/63.jpg)
Example of a Breadth-First Search (cont.)
4 is next
Visit sequence:0, 1, 3, 2, 4
Queue:6, 7, 8, 9
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 64: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/64.jpg)
Example of a Breadth-First Search (cont.)
5 is the only vertex not already
visited or identified
Visit sequence:0, 1, 3, 2, 4
Queue:6, 7, 8, 9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 65: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/65.jpg)
Example of a Breadth-First Search (cont.)
6 has no vertices not already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6
Queue:7, 8, 9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 66: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/66.jpg)
Example of a Breadth-First Search (cont.)
6 has no vertices not already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6
Queue:7, 8, 9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 67: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/67.jpg)
Example of a Breadth-First Search (cont.)
7 has no vertices not already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6, 7
Queue:8, 9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 68: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/68.jpg)
Example of a Breadth-First Search (cont.)
7 has no vertices not already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6, 7
Queue:8, 9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 69: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/69.jpg)
Example of a Breadth-First Search (cont.)
We go back to the vertices of 2 and
visit them
Visit sequence:0, 1, 3, 2, 4, 6, 7
Queue:8, 9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 70: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/70.jpg)
Example of a Breadth-First Search (cont.)
8 has no vertices not already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6, 7, 8
Queue:9, 5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 71: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/71.jpg)
Example of a Breadth-First Search (cont.)
9 has no vertices not already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6, 7, 8, 9
Queue:5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 72: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/72.jpg)
Example of a Breadth-First Search (cont.)
Finally we visit 5
Visit sequence:0, 1, 3, 2, 4, 6, 7, 8, 9
Queue:5
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 73: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/73.jpg)
Example of a Breadth-First Search (cont.)
which has no vertices not
already visited or identified
Visit sequence:0, 1, 3, 2, 4, 6, 7, 8, 9, 5
Queue:empty
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 74: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/74.jpg)
Example of a Breadth-First Search (cont.)
The queue is empty; all vertices have been visited
Visit sequence:0, 1, 3, 2, 4, 6, 7, 8, 9, 5
Queue:empty
0 visited 0 identified0 unvisited
0
2
3 1
9 8
4
7
6
5
![Page 75: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/75.jpg)
Algoritm för bredden-först
![Page 76: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/76.jpg)
76
Exempel: Kortaste vägenFör att hitta kortaste vägen genom en labyrint, kan vi representera labyrinten som en graf:
![Page 77: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/77.jpg)
77
Exempel: Kortaste vägenBredden-först-sökning ger den kortaste vägen:
dvs, minsta antalet korsningar, inte celler!
![Page 78: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/78.jpg)
78
Bredden-först-sökträdet
Vi kan bygga ett träd som bestårav de bågar som vi faktisktutnyttjade vid sökningen.
Detta träd har alla noderoch en del av bågarna frånoriginalgrafen.
Informationen som behövs för att representera sökträdet, kan lagras i ett fält: Där lagrar vi föräldern till varje båge när den identifieras.
Vi kan förfina steg 7 i algoritmen såhär:• 7.1. Stoppa in nod v i kön• 7.2. Sätt v:s förälder till u
![Page 79: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/79.jpg)
79
DFS: Djupet-först-sökningVid djupet-först-sökning så besöker vi noderna i följande ordning:
besök startnoden förstvälj en angränsande nod att besökasedan en angränsande nod till dennaoch så vidare tills det inte finns några fler nodersedan backar vi och kollar ifall vi kan hitta en annan angränsande båge
• och så vidare
![Page 80: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/80.jpg)
Example of a Depth-First Search
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
![Page 81: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/81.jpg)
Example of a Depth-First Search (cont.)
Mark 0 as being visited
0 visited 0 being visited0 unvisited
0
12
3 4 5 6Finish order:
Discovery (Visit) order:0
![Page 82: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/82.jpg)
Example of a Depth-First Search (cont.)
Choose an adjacent vertex that is not being
visited
0 visited 0 being visited0 unvisited
0
12
3 4 5 6Finish order:
Discovery (Visit) order:0
![Page 83: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/83.jpg)
Example of a Depth-First Search (cont.)
Choose an adjacent vertex that is not being
visited
0 visited 0 being visited0 unvisited
0
12
3 4 5 6Finish order:
Discovery (Visit) order:0, 1
![Page 84: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/84.jpg)
Example of a Depth-First Search (cont.)
(Recursively) choose an
adjacent vertex that is not being
visited
0 visited 0 being visited0 unvisited
0
12
3 4 5 6Finish order:
Discovery (Visit) order:0, 1, 3
![Page 85: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/85.jpg)
Example of a Depth-First Search (cont.)
(Recursively) choose an
adjacent vertex that is not being
visited
0 visited 0 being visited0 unvisited
0
12
3 4 5 6Finish order:
Discovery (Visit) order:0, 1, 3
![Page 86: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/86.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
(Recursively) choose an
adjacent vertex that is not being
visited
Finish order:
Discovery (Visit) order:0, 1, 3, 4
![Page 87: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/87.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
There are no vertices adjacent to 4 that are not
being visited
Finish order:
Discovery (Visit) order:0, 1, 3, 4
![Page 88: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/88.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 4 as visited
Finish order:4
Discovery (Visit) order:0, 1, 3, 4
![Page 89: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/89.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Return from the recursion to 3; all adjacent nodes to 3 are being visited
Finish order:4
![Page 90: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/90.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 3 as visited
Finish order:4, 3
![Page 91: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/91.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Return from the recursion to 1
Finish order:4, 3
![Page 92: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/92.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
All vertices adjacent to 1 are
being visited
Finish order:4, 3
![Page 93: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/93.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 1 as visited
Finish order:4, 3, 1
![Page 94: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/94.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Return from the recursion to 0
Finish order:4, 3, 1
![Page 95: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/95.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
2 is adjacent to 1 and is not being
visited
Finish order:4, 3, 1
![Page 96: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/96.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
2 is adjacent to 1 and is not being
visited
Finish order:4, 3, 1
Discovery (Visit) order:0, 1, 3, 4, 2
![Page 97: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/97.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
5 is adjacent to 2 and is not being
visited
Finish order:4, 3, 1
Discovery (Visit) order:0, 1, 3, 4, 2
![Page 98: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/98.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
5 is adjacent to 2 and is not being
visited
Finish order:4, 3, 1
Discovery (Visit) order:0, 1, 3, 4, 2, 5
![Page 99: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/99.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
6 is adjacent to 5 and is not being
visited
Finish order:4, 3, 1
Discovery (Visit) order:0, 1, 3, 4, 2, 5
![Page 100: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/100.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
6 is adjacent to 5 and is not being
visited
Finish order:4, 3, 1
Discovery (Visit) order:0, 1, 3, 4, 2, 5, 6
![Page 101: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/101.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
There are no vertices adjacent
to 6 not being visited; mark 6 as
visited
Finish order:4, 3, 1
Discovery (Visit) order:0, 1, 3, 4, 2, 5, 6
![Page 102: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/102.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
There are no vertices adjacent
to 6 not being visited; mark 6 as
visited
Finish order:4, 3, 1, 6
Discovery (Visit) order:0, 1, 3, 4, 2, 5, 6
![Page 103: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/103.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Return from the recursion to 5
Finish order:4, 3, 1, 6
![Page 104: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/104.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 5 as visited
Finish order:4, 3, 1, 6
![Page 105: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/105.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 5 as visited
Finish order:4, 3, 1, 6, 5
![Page 106: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/106.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Return from the recursion to 2
Finish order:4, 3, 1, 6, 5
![Page 107: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/107.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 2 as visited
Finish order:4, 3, 1, 6, 5
![Page 108: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/108.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 2 as visited
Finish order:4, 3, 1, 6, 5, 2
![Page 109: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/109.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Return from the recursion to 0
Finish order:4, 3, 1, 6, 5, 2
![Page 110: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/110.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
There are no nodes adjacent to 0 not being visited
Finish order:4, 3, 1, 6, 5, 2
![Page 111: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/111.jpg)
Example of a Depth-First Search (cont.)
0 visited 0 being visited0 unvisited
0
12
3 4 5 6
Mark 0 as visited
Finish order:4, 3, 1, 6, 5, 2, 0
Discovery (Visit) order:0, 1, 3, 4, 2, 5, 6, 0
![Page 112: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/112.jpg)
112
Upptäcktsordning
Upptäcktsordningen (discovery order) är den ordning vilken noderna upptäcks:
0, 1, 3, 4, 2, 5, 6 i detta exempel
Avslutningsordningen (finish order) är ordningen i vilken noderna avslutas
4, 3, 1, 6, 5, 2, 0 i detta exempelvi kan lagra bakåtpekare, precis som vi gjorde för bredden-först
![Page 113: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/113.jpg)
113
Algoritm för bredden-först
Djupet-först kan implementeras på exakt samma sätt som bredden-först, fast med en stack istället för en kö
stackstack
stack
stack
Depth
djupet
![Page 114: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/114.jpg)
114
Djupet-först, rekursivt
Men det går lika bra med en rekursiv implementation, eftersom det är ett sätt att ”dölja” att man använder en stack…
Dessutom kan vi spara avslutningsordningen enkelt(finish order)
![Page 115: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/115.jpg)
115
Komplexitet för BFS/DFS
Varje båge testas maximalt en gång (två gånger för oriktade grafer)
I värsta fallet blir det alltså |E| tester(2 · |E| för oriktade grafer)
Dvs, komplexiteten är O(|E|)(även för oriktade grafer)
Detta gäller både bredden-först och djupet-först
![Page 116: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/116.jpg)
116
DAG: Riktade acykliska graferDetta är en DAG (directed acyclic graph)
en riktad graf utan cykleri en DAG kan man bara gå framåt, det finns ingen väg tillbaks
![Page 117: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/117.jpg)
117
Exempel: Topologisk sorteringEn topologisk sortering av noderna i en DAG, är att lista noderna i en sådan ordning att
om (u, v) är en båge, så kommer u före v i listanvarje DAG har minst en topologisk sortering, ofta fler än en012345678 är engiltig topologisk sortering av denna DAG, men 015342678 är det inte
![Page 118: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/118.jpg)
118
Exempel: Topologisk sorteringAntag att vi gör en djupet-först-sökning av en DAG:
om det finns en båge (u, v) i grafen,så måste u bli klar efter att v är klardvs, u måste komma efter v i avslutningsordningen
En enkel algoritm för topologisk sortering blir alltså:gör en djupet-först-sökning av grafenlista noderna i omvänd avslutningsordning
![Page 119: Graphs (chapter 14)...2 Terminologi En graf är en datastruktur som består av en mängd noder (vertices) och en mängd bågar (edges)en båge är ett par (a, b) av två noderen båge](https://reader033.vdocuments.net/reader033/viewer/2022060819/6098d4691998092cf8134cfa/html5/thumbnails/119.jpg)
119
Summary
Graphs:● typically implemented using adjacency lists or
adjacency matrix● can be directed, undirected, weighted, unweighted● cyclic, acylic (directed acyclic graph (DAG) very
common type)● paths, cycles, strongly connected components
Traversals:● breadth-first search● depth-first search + topological sorting