Professional Documents
Culture Documents
Unit 4 - Non-Linear Data Structure - Binary - Graph - 1923081007
Unit 4 - Non-Linear Data Structure - Binary - Graph - 1923081007
Graph
◤
What is a graph?
▪ A data structure that consists of a set of nodes (vertices) and a set
of edges that relate the nodes to each other
G=(V, E)
A dj a ce n t Ve rt ice s a r e t wo
▪
vertic e s t ha t a r e j oin e d by
an edge.
5 is not adjacent to 7
7 is adjacent from 5
Graph Terminology
◤
▪ The de g r ee o f a v erte x is
the number of edges at
that vertex.
◤
Degree, In-degree, Out-degree
▪ A pa t h is a s e q u e nc e o f
vertices such that each
v er t e x is a dj a c e n t t o t h e
next. I n a p a t h , e a ch e dg e
ca n b e t r av e l e d o n l y o n ce .
e n gt h o f a p at h is t h e
• The l
num b er o f ed g e s in t h at
path.
Graph Terminology
◤
• A p a t h t h at s ta r t s a n d
ends a t t h e s a m e v e r t e x is
c a l l ed a c ir c u it / c y c l e .
◤
Cycle
Graph Terminology
◤
C o m p l e te g r ap h : a g r a p h in
• A y
e v e r y v ert e x is d ire c t l
which
connected to every other
vertex
◤
Graph terminology (cont.)
▪ What is the number of edges in a complete directed graph with N
vertices?
N * (N-1)
◤
Graph terminology (cont.)
▪ What is the number of edges in a complete undirected graph
with N vertices?
N * (N-1) / 2
Graph Terminology
◤
r a p h is c o n ne c t ed if a n y
• Ag
by
two vertices can be joined
t h . I f th is is n o t p os s ib l e
a pa
then the graph is
disconnected.
◤
Connected vs. Disconnected Graph
Graph Terminology
◤
eigh ted g r a p h : a gr ap h in
• AW
which each edge carries a
value
◤
1 2
3 4
5
◤ Adjacency Matrix of Directed and Undirected Graph
◤
Adjacency Matrix for Weighted Graph
32
◤
Pros and Cons of Adjacency Matrices
▪ Pros:
▪ Simple to implement
▪ Cons:
▪ No matter how few edges the graph has, the matrix takes
O(n2) in memory
CS 103
33
◤
Adjacency Lists Representation
1 2 1
3
2
0 1 2 3
1 0 2 3
0 1
2 0 1 3
1 0 2
0 1 2
2
3
G G
1 2
◤
Example(3)
0 1 2
0 4 0 3
1
2 1 5 2 0 3
3 6 3 1 2
4 5
7 5 4 6
6 5 7
7 6
Step 4: Pop the top node N. Process it and set its status as processed
state
[END OF LOOP]
Step 6: EXIT
◤
Breadth-first search (BFS)
Step 4: Dequeue the front element node N. Process it and set its
status as processed state
[END OF LOOP]
Step 6: EXIT
◤
Graph Traversal Orders
The order we explore the vertices depends upon the data
structure used to hold the discovered vertices yet to be fully
explored:
∙ Queue - by storing the vertices in a first-in, first out (FIFO)
queue, we explore the oldest unexplored vertices first. Thus
we radiate out slowly from the starting vertex, defining a so-
called breadth-first search.
∙ Stack - by storing the vertices in a last-in, first-out (LIFO)
stack, we explore the vertices by constantly visiting a new
neighbor if one is available; we back up only when
surrounded by previously discovered vertices. This defines
a so-called depth-first search.
41
◤
Breadth First Search
2 4 8
s 5 7
3 6 9
42
◤
Breadth First Search
Shortest path 1
from s
2 4 8
0 s 5 7
3 6 9
Undiscovered
Discovered Queue: s
Top of queue
Finished
43
◤
Breadth First Search
1
2 4 8
0 s 5 7
3 6 9
Undiscovered
Discovered Queue: s 2
Top of queue
Finished
44
◤
Breadth First Search
1
2 4 8
0 s 5 7
1
3 6 9
Undiscovered
Discovered Queue: s 2 3
Top of queue
Finished
45
◤
Breadth First Search
1
2 4 8
0 s 5 7
1
3 6 9
Undiscovered
Discovered Queue: 2 3 5
Top of queue
Finished
46
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
Undiscovered
Discovered Queue: 2 3 5
Top of queue
Finished
47
◤
Breadth First Search
1 2
2 4 8
5 already discovered:
0 s 5 7
don't enqueue
1
3 6 9
Undiscovered
Discovered Queue: 2 3 5 4
Top of queue
Finished
48
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
Undiscovered
Discovered Queue: 2 3 5 4
Top of queue
Finished
49
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
Undiscovered
Discovered Queue: 3 5 4
Top of queue
Finished
50
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 3 5 4
Top of queue
Finished
51
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 3 5 4 6
Top of queue
Finished
52
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 5 4 6
Top of queue
Finished
53
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 5 4 6
Top of queue
Finished
54
◤
Breadth First Search
1 2
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 4 6
Top of queue
Finished
55
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 4 6
Top of queue
Finished
56
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1
3 6 9
1 2
Undiscovered
Discovered Queue: 4 6 8
Top of queue
Finished
57
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2
Undiscovered
Discovered Queue: 6 8
Top of queue
Finished
58
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 6 8 7
Top of queue
Finished
59
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 6 8 7 9
Top of queue
Finished
60
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 8 7 9
Top of queue
Finished
61
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 7 9
Top of queue
Finished
62
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 7 9
Top of queue
Finished
63
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 7 9
Top of queue
Finished
64
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 7 9
Top of queue
Finished
65
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 9
Top of queue
Finished
66
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 9
Top of queue
Finished
67
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue: 9
Top of queue
Finished
68
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Undiscovered
Discovered Queue:
Top of queue
Finished
69
◤
Breadth First Search
1 2 3
2 4 8
0 s 5 7
1 3
3 6 9
1 2 3
Level Graph
Minimum spanning trees
◤
Definition
▪ Kruskal’s Algorithms
▪ Prim’s Algorithms
◤
Algorithm Characteristics
Brinleigh 5
Cornwell
3
4
8 6
8
Avonford Fingley Donster
7
5
4
2
Edan
We model the situation as a network, then the
problem is to find the minimum connector for the
network
B 5
C
3
4
8 6
8
A F D
7
5
4
2
E
Kruskal’s Algorithm
E
Kruskal’s Algorithm
8
A D
7 F
5
4
2
E
Kruskal’s Algorithm
3 ED 2
4 AB 3
8 6
8
A D
7 F
5
4
2
E
Kruskal’s Algorithm
3
ED 2
4 AB 3
8 6
CD 4 (or AE 4)
8
A D
7 F
5
4
2
E
Kruskal’s Algorithm
3
ED 2
4 AB 3
8 6
CD 4
AE 4
8
A D
7 F
5
4
2
E
Kruskal’s Algorithm
3
ED 2
4 AB 3
8 6
CD 4
AE 4
8
BC 5 – forms a cycle
A D
7 F EF 5
5
4
2
E
Kruskal’s Algorithm
5
4 Total weight of tree: 18
2
E
Walk-Through
Consider an undirected, weight graph
3
10
F C
A 4
4
3
8
6
5
4
B D
4
H 1
2
3
G 3
E
Sort the edges by increasing edge weight
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1
6 (B,F) 4
5
4
B D (D,G) 2 (B,H) 4
4 (E,G) 3
H 1
(A, 5
2 (C,D) 3 H)
3
G 3
E (G, 3 (D,F) 6
H) (A,B) 8
(C,F) 3 (A,F) 10
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 (B,H) 4
4 (E,G) 3
H 1
(A, 5
2 (C,D) 3 H)
3
G 3
E (G, 3 (D,F) 6
H) (A,B) 8
(C,F) 3 (A,F) 10
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3
H 1
(A, 5
2 (C,D) 3 H)
3
G 3
E (G, 3 (D,F) 6
H) (A,B) 8
(C,F) 3 (A,F) 10
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 H)
3
G 3
E (G, 3 (D,F) 6
H) (A,B) 8
(C,F) 3 (A,F) 10
Accepting edge (E,G) would create a cycle
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 (D,F) 6
H) (A,B) 8
(C,F) 3 (A,F) 10
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 (A,F) 10
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 √ (A,F) 10
(B,C) 4
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 √ (A,F) 10
(B,C) 4 √
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4 χ
8 4 (D,E) 1 √
6 (B,F) 4
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 √ (A,F) 10
(B,C) 4 √
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4 χ
8 4 (D,E) 1 √
6 (B,F) 4 χ
5
4
B D (D,G) 2 √ (B,H) 4
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 √ (A,F) 10
(B,C) 4 √
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4 χ
8 4 (D,E) 1 √
6 (B,F) 4 χ
5
4
B D (D,G) 2 √ (B,H) 4 χ
4 (E,G) 3 χ
H 1
(A, 5
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 √ (A,F) 10
(B,C) 4 √
Select first |V|–1 edges which do not
generate a cycle
3
10
F C edge d edge dv
A 4 3 v (B,E) 4 χ
8 4 (D,E) 1 √
6 (B,F) 4 χ
5
4
B D (D,G) 2 √ (B,H) 4 χ
4 (E,G) 3 χ
H 1
(A, 5 √
2 (C,D) 3 √ H)
3
G 3
E (G, 3 √ (D,F) 6
H) (A,B) 8
(C,F) 3 √ (A,F) 10
(B,C) 4 √
Select first |V|–1 edges which do not
generate a cycle
3
F C edge d edge dv
A 3 v (B,E) 4 χ
4 (D,E) 1 √ (B,F) 4 χ
5
B D (D,G) 2 √ (B,H) 4 χ
H (E,G) 3 χ (A, 5 √
2 1
(C,D) 3 √ H)
3
G E (G,
H)
3 √ (D,F)
(A,B)
6
8
}
not
considere
d
(C,F) 3 √ (A,F) 10
Done
(B,C) 4 √
Total Cost = Σ dv = 21
Prim’s Algorithm
B 5 A
C
5
4
2
E
Prim’s Algorithm
8
A D
7 F
5
4
2
E
Prim’s Algorithm
8
A D
7 F
5
4
2
E
Prim’s Algorithm
8
A D
7 F
5
4
2
E
Prim’s Algorithm
8
A D
7 F
5
4
2
E
Prim’s Algorithm
5
4 Total weight of tree: 18
2
E
Some points to note
• Both algorithms will always give solutions with the same length.
• They will usually select edges in a different order – you must show
this in your workings.
• Occasionally they will use different edges – this may happen when
you have to choose between edges with the same length. In this
case there is more than one minimum connector for the network.