Professional Documents
Culture Documents
6 Graphsssssss
6 Graphsssssss
Graphs
Data Structures & Algorithms
CONTENT
• Terminology
• Graph Representations
• Graph Traversals
•Terminology
• Graph Representations
• Graph Traversals
• Undirected graph
• The pair of vertices representing any edge is unordered.
Thus, the pairs (u,v) and (v,u) represent the same edge
• Directed graph
• each edge is represented by an ordered pair <u,v>
• Examples
Graph G1:
• V(G1)={0,1,2,3}
• E(G1)={(0,1), (0,2), (0,3), (1,2), (1,3), (2,3)}
1 2
• Examples
Graph G2:
• V(G2)={0,1,2,3,4,5,6}
• E(G2)={(0,1), (0,2), (1,3), (1,4), (2,5), (2,6)}
G2 is also a tree 1 2
• Examples
Graph G3:
• V(G3)={0,1,2}
0
• E(G3)={<0,1>,<1,0>,<1,2>}
• Complete Graph
• Complete Graph is a graph that has the maximum number of edges
• For undirected graph with n vertices, the maximum number of edges
is n(n-1)/2
• For directed graph with n vertices, the maximum number of edges
is n(n-1)
0
Example: G1
1 2
• Subgraph
• A subgraph of G is a graph G’ such that
• V(G’) Í V(G)
• E(G’) Í E(G)
• Some of the subgraph of G1
0 0
0 1 2
1 2
1 2 0
1 2 3
3
3
(i) (ii) (iii) (iv)
G1
0
0 0
0
1 1
1
0
1
2 2
2
(i) (ii) (iii) (iv)
G3
• Path
• Path from u to v in G
• a sequence of vertices u, i1, i2,...,ik, v
• If G is undirected: (u,i1), (i1,i2),..., (ik,v)ÎE(G) 0
• If G is directed: <u,i1>,<i1,i2>,...,<ik,v>ÎE(G)
1 2
• Length
• The length of a path is the number of edges on it.
3
• Length of 0,1,3,2 is 3
• Simple Path
• is a path in which all vertices except possibly the first and
last are distinct.
ð 0,1,3,2 is simple path 0
ð 0,1,2,0 is a cycle
• Acyclic graph
–No cycle is in graph
Data Structures & Algorithms 13
…Terminology
• Connected
1
• Two vertices u and v are connected if in an
undirected graph G, $ a path in G from u to v 2 3
• A graph G is connected, if any vertex pair u,v is
connected 4
connected
• Connected Component
• a maximal connected subgraph.
• Tree is a connected acyclic graph
connected
Data Structures & Algorithms 14
…Terminology
• Strongly Connected
1
• u, v are strongly connected if in a directed graph
(digraph) G, $ a path in G from u to v. 2
3 0 in:1, out: 1
0
0
2
3 1 2 1 in: 1, out: 2
3 1 2
3 3
3 3 4 5 6
3 2 in: 1, out: 0
1 1 1 1
G1 G2
directed graph
undirected graph in-degree
out-degree
• Weighted Edge
• In many applications, the edges of a graph are assigned weights
• These weights may represent the distance from one vertex to another
• Terminology
•Graph Representations
• Graph Traversals
• Graph Representations
• Adjacency Matrix
• Adjacency Lists
• Adjacency Multilists
• Adjacency Matrix
• A(i, j) = 0 otherwise
2 1 5
0
1 3 6
1 2
7
3 2 é0 1 1 0 0 0 0 0ù
ê1 0 0 1 0 0 0 0ú
é0 1 1 1ù é0 1 0ù ê ú
ê1 ê1 0ú
1ú ê ú 0 0 1 0 0 0
0 1 ê ú
ê ú ê1 0 1ú
ê1 1 0 1ú êë0 ê0 1 1 0 0 0 0 0ú
0 0úû ê0
ê ú 0 0 0 0 1 0 0ú
ë1 1 1 0û ê ú
G2 ê0 0 0 0 1 0 1 0ú
G1 ê0 0 0 0 0 1 0 1ú
ê ú
undirected: n2/2 symmetric ê
ë0 0 0 0 0 0 1 0ú
û
directed: n2 G4
Data Structures & Algorithms 21
…Graph Representations - Adjacency Matrix
• For a digraph, the row sum is the out_degree, while the column sum is the
in_degree
n -1
ind ( vi ) = å A[ j , i ]
j =0
n -1
outd (vi ) = å A[i , j ]
j =0
1 2 1
3
2
0 1 2 3
1 0 2 3 0 1
2 0 1 3 1 0 2
3 0 1 2 2
G1 G3
Data Structures & Algorithms 23
Graph Representations - Adjacency Lists
• Adjacency List
– Replace n rows of the adjacency matrix with n linked list
– Example (2)
0 1 2
0 4 0
1 3
2 1 5 2 0 3
3 1 2
3 6
4 5
5 4 6
7
6 5 7
7 6
G4
An undirected graph with n vertices and e edges => n head nodes and 2e list nodes
Data Structures & Algorithms 24
Graph Representations - Adjacency Lists
• Adjacency List
– Data Structures
• Each row in adjacency matrix is represented as an adjacency list
#define MAX_VERTICES 50
typedef struct node *node_pointer;
typedef struct node {
int vertex;
struct node *link;
};
node_pointer graph[MAX_VERTICES];
int n=0; /* vertices currently in use */
• Terminology
• Graph Representations
•Graph Traversals
• Applications
• Connected component
• Spanning trees
• Biconnected component
• Example: Preorder
43
31 64
20 40 56 89
28 33 47 59
43 31 20 28 40 33 64 56 47 59 89
Data Structures & Algorithms 30
…Graph Traversals - Depth First Search
• Algorithm
Depth_First_Search (VERTEX V){
Visit V;
Set the visit flag for the vertex V to TRUE;
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
If (Vi has not been previously visited)
Depth_First_Search (Vi)
}
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
H A, B, G
AF B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
FF B, C, D, E, G
GF B, F, H
HF A, B, G
AF B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi)
}
AF B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A
}
AT B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A
}
AT B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A
}
AT B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A
}
AT B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A
}
AT B, H
BF A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B
}
AT B, H
BT A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B
}
AT B, H
BT A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B
}
AT B, H
BT A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B
}
AT B, H
BT A, C, G, F, H
CF B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B
}
AT B, H
BT A, C, G, F, H
CT B, D, F
G F E DF C, E, F
H
EF D, F
Depth_First_Search (VERTEX V) FF B, C, D, E, G
{
Visit V; GF B, F, H
Set the visit flag for the vertex V to TRUE;
HF A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B C
}
AT B, H
BT A, C, G, F, H
CT B, D, F
G F E DT C, E, F
H
ET D, F
Depth_First_Search (VERTEX V) FT B, C, D, E, G
{
Visit V; GT B, F, H
Set the visit flag for the vertex V to TRUE;
HT A, B, G
For all adjacent vertices Vi (i = 1, 2, ….., n) of V
if (Vi has not been previously visited)
Depth_First_Search (Vi) A B C D E F G H
}
B C
D E F
G H I
B C
D E F
G H I
B C
Dequeue A
D E F Print A
Enqueue children of A
G H I
D E F
Dequeue B
Print B
G H I Enqueue children of B
D E F
Dequeue C
Print C
G H I
Enqueue children of C
…
Data Structures & Algorithms 53
…Graph Traversals – Breadth First Search
Level-Order
Queue Output
A Init [A] -
Step 1 [B,C] A
Step 2 [C,D] AB
B C
Step 3 [D,E,F] ABC
Step 4 [E,F,G,H] ABCD
D E F
G H I
G H I
• Algorithm
bfs(v) { /* v is the starting vertex */
push v into an empty queue Q;
while Q is not empty do
v = delete(Q);
if v is not visited {
mark v as visited;
push v’s neighbors into Q;
}
}
}
• Time is O(e) for adjacency lists and O(n2) for adjacency matrices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
H A, B, G
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ F, F, F, F, F, F, F, F ] H A, B, G
Q: []
v:
Data Structures & Algorithms 62
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, F, F, F, F, F, F, F ] H A, B, G
Q: [A] A
v:
Data Structures & Algorithms 63
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, F, F, F, F, F, F, F ] H A, B, G
Q: [] A
v: A
Data Structures & Algorithms 64
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, F, F, F, F, F, F, F ] H A, B, G
Q: [] A
v: A à B, H
Data Structures & Algorithms 65
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, F, F, F, F, F, F, F ] H A, B, G
Q: [] A
v: A à B, H
Data Structures & Algorithms 66
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, F ] H A, B, G
Q: [B] A B
v: A à B, H
Data Structures & Algorithms 67
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, F ] H A, B, G
Q: [B] A B
v: A à B, H
Data Structures & Algorithms 68
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, T ] H A, B, G
Q: [ B, H ] A B H
v: A à B, H
Data Structures & Algorithms 69
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, T ] H A, B, G
Q: [H] A B H
v: B
Data Structures & Algorithms 70
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, T ] H A, B, G
Q: [H] A B H
v: B à A, C, G, F, H
Data Structures & Algorithms 71
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, T ] H A, B, G
Q: [H] A B H
v: B à A, C, G, F, H
Data Structures & Algorithms 72
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, F, F, F, F, F, T ] H A, B, G
Q: [H] A B H
v: B à A, C, G, F, H
Data Structures & Algorithms 73
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, F, F, T ] H A, B, G
Q: [ H, C ] A B H C
v: B à A, C, G, F, H
Data Structures & Algorithms 74
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, F, F, T ] H A, B, G
Q: [ H, C ] A B H C
v: B à A, C, G, F, H
Data Structures & Algorithms 75
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, F, T, T ] H A, B, G
Q: [ H, C, G ] A B H C G
v: B à A, C, G, F, H
Data Structures & Algorithms 76
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, F, T, T ] H A, B, G
Q: [ H, C, G ] A B H C G
v: B à A, C, G, F, H
Data Structures & Algorithms 77
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ H, C, G, F ] A B H C G F
v: B à A, C, G, F, H
Data Structures & Algorithms 78
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ H, C, G, F ] A B H C G F
v: B à A, C, G, F, H
Data Structures & Algorithms 79
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ C, G, F ] A B H C G F
v: H
Data Structures & Algorithms 80
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ C, G, F ] A B H C G F
v: H à A, B, G
Data Structures & Algorithms 81
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ C, G, F ] A B H C G F
v: H à A, B, G
Data Structures & Algorithms 82
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ C, G, F ] A B H C G F
v: H à A, B, G
Data Structures & Algorithms 83
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ C, G, F ] A B H C G F
v: H à A, B, G
Data Structures & Algorithms 84
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ C, G, F ] A B H C G F
v:
Data Structures & Algorithms 85
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ G, F ] A B H C G F
v: C à B, D, F
Data Structures & Algorithms 86
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ G, F ] A B H C G F
v: C à B, D, F
Data Structures & Algorithms 87
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, F, F, T, T, T ] H A, B, G
Q: [ G, F ] A B H C G F
v: C à B, D, F
Data Structures & Algorithms 88
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, T, F, T, T, T ] H A, B, G
Q: [ G, F, D ] A B H C G F D
v: C à B, D, F
Data Structures & Algorithms 89
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, T, F, T, T, T ] H A, B, G
Q: [ G, F, D ] A B H C G F D
v: C à B, D, F
Data Structures & Algorithms 90
…Graph Traversals – Breadth First Search
A B C D Vertex Adjacent Vertices
A B, H
B A, C, G, F, H
C B, D, F
G F E D C, E, F
H
E D, F
F B, C, D, E, G
G B, F, H
Visit [ T, T, T, T, T, T, T, T ] H A, B, G
Q: [] A B H C G F D E
v:
Data Structures & Algorithms 91
SUMMARY
• Terminology
• Graph Representations
• Graph Traversals