11 lecture – graph
TRANSCRIPT
-
8/19/2019 11 Lecture – Graph
1/53
Data Structures
Dr Kazi A Kalpoma
Associate Professor Faculty of Science and Information Technology
American International University Bangladesh (AIUB)
Contact: [email protected]
11 Lecture – Graph
-
8/19/2019 11 Lecture – Graph
2/53
Graphs - Background
Graphs = a set of nodes (vertices) with edges(links) between them.
Notations:
• G = (V, E) - graph
• V = set of vertices V = n
• E = set of edges E = m
1 2
3 4
1 2
3 4
Directed
graph
Undirected
graph
1 2
3 4
Acyclic
graph
-
8/19/2019 11 Lecture – Graph
3/53
Graph Representation
• Adjacency Matrix
• Adjacency Lists
Linked Adjacency Lists
Array Adjacency Lists
-
8/19/2019 11 Lecture – Graph
4/53
Adjacency Matrix
• 0/1 n x n matrix, where n = # of vertices• A(i,j) = 1 iff (i,j) is an edge
23
1
45
1 2 3 4 5
1
23
4
5
0 1 0 1 0
1 0 0 0 10 0 0 0 1
1 0 0 0 1
0 1 1 1 0
-
8/19/2019 11 Lecture – Graph
5/53
Adjacency Matrix Properties
23
1
45
1 2 3 4 5
1
2
34
5
0 1 0 1 0
1 0 0 0 1
0 0 0 0 11 0 0 0 1
0 1 1 1 0
•
Diagonal entries are zero.•Adjacency matrix of an undirected graph is
symmetric.
A(i,j) = A(j,i) for all i and j.
-
8/19/2019 11 Lecture – Graph
6/53
Adjacency Lists
• Adjacency list for vertex i is a linear list of vertices adjacent from vertex i.
• An array of n adjacency lists.
23
1
45
aList[1] = (2,4)
aList[2] = (1,5)
aList[3] = (5)
aList[4] = (5,1)
aList[5] = (2,4,3)
-
8/19/2019 11 Lecture – Graph
7/53
Array Adjacency Lists
• Each adjacency list is an array list.
23
1
45
aList[1]
aList[5]
[2]
[3][4]
2 4
1 5
55 1
2 4 3
Array Length = n
# of list elements = 2e (undirected graph)
# of list elements = e (digraph)
-
8/19/2019 11 Lecture – Graph
8/53
Path Finding
Path between node 1 and node 8.
23
8
101
45
911
67
4
8
6
6
7
5
2
4
4 53
Path length is 20.
-
8/19/2019 11 Lecture – Graph
9/53
Another Path Between 1 and 8
23
8
101
45
911
67
4
8
6
6
7
5
2
4
4 53
Path length is 28.
-
8/19/2019 11 Lecture – Graph
10/53
Example Of No Path
No path between 2 and 9.
23
8
101
45
911
67
-
8/19/2019 11 Lecture – Graph
11/53
Spanning Tree
• Subgraph that includes all vertices of the
original graph.
• Subgraph is a tree.
If original graph has n vertices, the spanning
tree has n vertices and n-1 edges.
-
8/19/2019 11 Lecture – Graph
12/53
Minimum Cost Spanning Tree
• Tree cost is sum of edge weights/costs.
23
8
101
45
911
67
4
8
6
6
7
5
24
4 53
8
2
-
8/19/2019 11 Lecture – Graph
13/53
A Spanning Tree
Spanning tree cost = 51.
23
8
101
45
911
67
4
8
6
6
7
5
24
4 53
8
2
-
8/19/2019 11 Lecture – Graph
14/53
Minimum Cost Spanning Tree
Spanning tree cost = 41.
23
8
101
45
911
67
4
8
6
6
7
5
24
4 53
8
2
-
8/19/2019 11 Lecture – Graph
15/53
Graph Search Methods
• Many graph problems solved using a searchmethod.
Path from one vertex to another.
Is the graph connected?
Find a spanning tree.
etc.
•Commonly used search methods: Breadth-first search.
Depth-first search.
-
8/19/2019 11 Lecture – Graph
16/53
Breadth-First Search
• Visit start vertex and put into a FIFO queue.
• Repeatedly remove a vertex from the queue, visit
its unvisited adjacent vertices, put newly visitedvertices into the queue.
-
8/19/2019 11 Lecture – Graph
17/53
Breadth-First Search Example
Start search at vertex 1.
23
8
10
1
45
9
116
7
-
8/19/2019 11 Lecture – Graph
18/53
Breadth-First Search Example
Visit/mark/label start vertex and put in a FIFO queue.
OUT PUT: 1
23
8
10
1
45
9
116
7
1
FIFO Queue
1
-
8/19/2019 11 Lecture – Graph
19/53
Breadth-First Search Example
Remove 1 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1
23
8
10
1
45
9
116
7
1
FIFO Queue
1
-
8/19/2019 11 Lecture – Graph
20/53
Breadth-First Search Example
Remove 1 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4
23
8
10
1
45
9
116
7
1
FIFO Queue2
2
4
4
-
8/19/2019 11 Lecture – Graph
21/53
Breadth-First Search Example
Remove 2 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4
23
8
10
1
45
9
116
7
1
FIFO Queue2
2
4
4
-
8/19/2019 11 Lecture – Graph
22/53
Breadth-First Search Example
Remove 1 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6
23
8
10
1
45
9
116
7
1
FIFO Queue2
4
4
5
53
3
6
6
-
8/19/2019 11 Lecture – Graph
23/53
Breadth-First Search Example
Remove 4 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6
23
8
10
1
45
9
116
7
1
FIFO Queue2
4
4
5
53
3
6
6
-
8/19/2019 11 Lecture – Graph
24/53
Breadth-First Search Example
Remove 4 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
53
3
6
6
-
8/19/2019 11 Lecture – Graph
25/53
Breadth-First Search Example
Remove 5 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
53
3
6
6
-
8/19/2019 11 Lecture – Graph
26/53
Breadth-First Search Example
Remove 1 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
3
6
6
9
9
7
7
-
8/19/2019 11 Lecture – Graph
27/53
Breadth-First Search Example
Remove 3 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
3
6
6
9
9
7
7
-
8/19/2019 11 Lecture – Graph
28/53
Breadth-First Search Example
Remove 3 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
6
9
9
7
7
-
8/19/2019 11 Lecture – Graph
29/53
Breadth-First Search Example
Remove 6 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
6
9
9
7
7
-
8/19/2019 11 Lecture – Graph
30/53
Breadth-First Search Example
Remove 6 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
9
7
7
-
8/19/2019 11 Lecture – Graph
31/53
Breadth-First Search Example
Remove 9 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
9
7
7
-
8/19/2019 11 Lecture – Graph
32/53
Breadth-First Search Example
Remove 1 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7 8
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
7
78 8
-
8/19/2019 11 Lecture – Graph
33/53
Breadth-First Search Example
Remove 7 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7 8
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
7
78 8
-
8/19/2019 11 Lecture – Graph
34/53
Breadth-First Search Example
Remove 7 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7 8
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
7
8 8
-
8/19/2019 11 Lecture – Graph
35/53
Breadth-First Search Example
Remove 8 from Q; visit adjacent unvisited vertices; put in Q.
OUT PUT: 1 2 4 5 3 6 9 7 8
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
7
8 8
-
8/19/2019 11 Lecture – Graph
36/53
Breadth-First Search Example
Queue is empty. Search terminates.
OUT PUT: 1 2 4 5 3 6 9 7 8
23
8
10
1
45
9
116
7
1
FIFO Queue2
45
3
6
9
7
8
-
8/19/2019 11 Lecture – Graph
37/53
Breadth-First Search Property
• All vertices reachable from the start vertex
(including the start vertex) are visited.
OUT PUT: 1 2 4 5 3 6 9 7 8
-
8/19/2019 11 Lecture – Graph
38/53
Depth-First Search
depthFirstSearch(v)
{
Label vertex v as reached.
for (each unreached vertex u
adjacenct from v)
depthFirstSearch(u);
}
D th Fi t S h E l
-
8/19/2019 11 Lecture – Graph
39/53
Depth-First Search Example
Start search at vertex 1.
2
38
10
1
45
9
116
7
Label vertex 1 and do a depth first search
from either 2 or 4.
1
2
Suppose that vertex 2 is selected.
1stack
-
8/19/2019 11 Lecture – Graph
40/53
Depth-First Search Example2
38
10
1
45
9
116
7
Label vertex 2 and do a depth first search
from either 3, 5, or 6.
1
22
5
Suppose that vertex 5 is selected.
12stack
-
8/19/2019 11 Lecture – Graph
41/53
Depth-First Search Example2
38
10
1
45
9
116
7
Label vertex 5 and do a depth first search
from either 3, 7, or 9.
1
22
55
9
Suppose that vertex 9 is selected.
125stack
-
8/19/2019 11 Lecture – Graph
42/53
Depth-First Search Example2
38
10
1
45
9
116
7
Label vertex 9 and do a depth first search
from either 6 or 8.
1
22
55
99
8
Suppose that vertex 8 is selected.
1259stack
-
8/19/2019 11 Lecture – Graph
43/53
Depth-First Search Example2
38
10
1
45
9
116
7
Label vertex 8 and return to vertex 9.
1
22
55
99
88
From vertex 9 do a dfs(6).
6
12598stack
-
8/19/2019 11 Lecture – Graph
44/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
Label vertex 6 and do a depth first search fromeither 4 or 7.
66
4
Suppose that vertex 4 is selected.
12596stack
-
8/19/2019 11 Lecture – Graph
45/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
Label vertex 4 and return to 6.
66
44
From vertex 6 do a dfs(7).
7
125964stack
-
8/19/2019 11 Lecture – Graph
46/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
Label vertex 7 and return to 6.
66
44
77
Return to 9.
125967
stack
-
8/19/2019 11 Lecture – Graph
47/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
66
44
77
Return to 5.
125stack
-
8/19/2019 11 Lecture – Graph
48/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
66
44
77
Do a dfs(3).
3
-
8/19/2019 11 Lecture – Graph
49/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
66
44
77
Label 3 and return to 5.
33
Return to 2.
1253stack
-
8/19/2019 11 Lecture – Graph
50/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
66
44
77
33
Return to 1.
12stack
-
8/19/2019 11 Lecture – Graph
51/53
Depth-First Search Example2
38
10
1
45
9
116
7
1
22
55
99
88
66
44
77
33
Return to invoking method.
stack
-
8/19/2019 11 Lecture – Graph
52/53
Depth-First Search Properties
•
Same complexity as BFS.• Same properties with respect to path
finding, connected components, and
spanning trees.• Edges used to reach unlabeled vertices
define a depth-first spanning tree when the
graph is connected.• There are problems for which bfs is better
than dfs and vice versa.
-
8/19/2019 11 Lecture – Graph
53/53
http://www.youtube.com/watch?v=zLZhSSXAwxI
http://www.youtube.com/watch?v=zLZhSSXAwxIhttp://www.youtube.com/watch?v=zLZhSSXAwxI