You are on page 1of 93

Nhân bản – Phụng sự – Khai phóng

Graphs
Data Structures & Algorithms
CONTENT

• Terminology

• Graph Representations

• Graph Traversals

Data Structures & Algorithms 2


CONTENT

•Terminology
• Graph Representations

• Graph Traversals

Data Structures & Algorithms 3


Terminology

• A graph G=(V,E), V and E are two sets


• V: finite non-empty set of vertices
• E: set of edges (pairs of vertices)

• 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>

Data Structures & Algorithms 4


…Terminology

• 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

Data Structures & Algorithms 5


…Terminology

• 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

Tree is a special case of graph


3 4 5 6

Data Structures & Algorithms 6


…Terminology

• Examples
Graph G3:
• V(G3)={0,1,2}
0
• E(G3)={<0,1>,<1,0>,<1,2>}

Directed graph (digraph)


2

Data Structures & Algorithms 7


…Terminology

• 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

Data Structures & Algorithms 8


…Terminology

• Adjacent and Incident


• If (u,v) is an edge in an undirected graph,
• Adjacent: u and v are adjacent
• Incident: The edge (u,v) is incident on vertices u and v

• If <u,v> is an edge in a directed graph


• Adjacent: u is adjacent to v, and v is adjacent from u
• Incident: The edge <u,v> is incident on u and v

Data Structures & Algorithms 9


…Terminology

• 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

Data Structures & Algorithms 10


…Terminology

• Some of the subgraphs of G3

0
0 0

0
1 1
1
0
1
2 2
2
(i) (ii) (iii) (iv)
G3

Data Structures & Algorithms 11


…Terminology

• 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

Data Structures & Algorithms 12


…Terminology

• 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,3,1 is path but not simple


1 2
• Cycle
–a simple path, first and last vertices are same. 3

ð 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

• A directed graph G is strongly connected, if any


vertex pair u,v is connected 3 G3

• Strongly Connected Component


1
• a maximal strongly connected subgraph
3
• Degree of Vertex 2
– is the number of edges incident to that vertex
• Degree in directed graph
– Indegree
– Outdegree
• Summation of all vertices’ degrees are 2|E|
Data Structures & Algorithms 15
…Terminology

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

Data Structures & Algorithms 16


…Terminology

• Weighted Edge
• In many applications, the edges of a graph are assigned weights

• These weights may represent the distance from one vertex to another

• A graph with weighted edges is called a network

Data Structures & Algorithms 17


CONTENT

• Terminology

•Graph Representations
• Graph Traversals

Data Structures & Algorithms 18


Graph Representations

• Graph Representations

• Adjacency Matrix

• Adjacency Lists

• Adjacency Multilists

Data Structures & Algorithms 19


Graph Representations - Adjacency Matrix

• Adjacency Matrix

• Let G = (V, E) with n vertices, n ³ 1. The adjacency matrix of G is a 2-


dimensional n ´ n matrix, A
• A(i, j) = 1 iff (vi, vj) ÎE(G)
(ávi, vjñ for a digraph)

• A(i, j) = 0 otherwise

• The adjacency matrix for an undirected graph is symmetric

• The adjacency matrix for a digraph need not be symmetric

Data Structures & Algorithms 20


…Graph Representations - Adjacency Matrix
• Example 0 0 4

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

• Merits of Adjacency Matrix


• From the adjacency matrix, to determine the connection of vertices is easy
n -1

• The degree of a vertex is å adj _ mat[i][ j ]


j =0

• 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

Data Structures & Algorithms 22


Graph Representations - Adjacency Lists
• Adjacency List
• Replace n rows of the adjacency matrix with n linked list
• Example (1)
0
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 */

Data Structures & Algorithms 25


CONTENT

• Terminology

• Graph Representations

•Graph Traversals

Data Structures & Algorithms 26


Graph Traversals
• Traversal
Given G = (V,E) and vertex v, find or visit all wÎV, such that w connects v
• Depth First Search (DFS)
• Breadth First Search (BFS)

• Applications
• Connected component
• Spanning trees
• Biconnected component

Data Structures & Algorithms 27


…Graph Traversals

• Depth-First Search (DFS)


• like depth-first search in a tree, we search as deeply as possible
by visiting a node, and then recursively performing depth-first
search on each adjacent node

• Breadth-First Search (BFS)


• like breadth-first search in a tree, we search as broadly as
possible by visiting a node, and then immediately visiting all
nodes adjacent to that node

Data Structures & Algorithms 28


…Graph Traversals - Depth First Search

• Depth First Search (DFS)

• Begin the search by visiting the start vertex v


• If v has an unvisited neighbor, traverse it recursively
• Otherwise, backtrack

• Very similar to preorder traversal of a binary tree (node, left, right)

Data Structures & Algorithms 29


…Graph Traversals - Depth First Search

• 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)
}

• Time is O(n + e) for adjacency lists


• Time is O(n2) for adjacency matrices

Data Structures & Algorithms 31


…Graph Traversals - Depth First Search
#define FALSE 0
#define TRUE 1
short int visited[MAX_VERTICES];

/* graph is represented as an adjacency list */


void dfs(int v){
node_pointer w;
visited[v]= TRUE;
printf(“%5d”, v);
for (w=graph[v]; w; w=w->link)
if (!visited[w->vertex])
dfs(w->vertex);
}

Data Structures & Algorithms 32


…Graph Traversals - Depth 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
H A, B, G

Data Structures & Algorithms 33


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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

Data Structures & Algorithms 34


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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)
}

Data Structures & Algorithms 35


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 36


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 37


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 38


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 39


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 40


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 41


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 42


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 43


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 44


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 45


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 46


…Graph Traversals - Depth First Search
A B C D Vertex Adjacent Vertices
(label, visited?)

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
}

Data Structures & Algorithms 47


…Graph Traversals – Breadth First Search

• Breadth First Search (BFS)


• Very similar to level-order traversal of a binary tree (left, node, right)

• Use a queue to track unvisited nodes


• For each node that is deleted from the queue,
• add each of its children to the queue
• until the queue is empty

Data Structures & Algorithms 48


…Graph Traversals – Breadth First Search
Level-Order
Queue Output
A

B C

D E F

G H I

Data Structures & Algorithms 49


…Graph Traversals – Breadth First Search
Level-Order
Queue Output
A Init [A] -

B C

D E F

G H I

Data Structures & Algorithms 50


…Graph Traversals – Breadth First Search
Level-Order
Queue Output
A Init [A] -
Step 1 [B,C] A

B C

Dequeue A
D E F Print A
Enqueue children of A

G H I

Data Structures & Algorithms 51


…Graph Traversals – Breadth First Search
Level-Order
Queue Output
A Init [A] -
Step 1 [B,C] A
Step 2 [C,D] AB
B C

D E F
Dequeue B
Print B
G H I Enqueue children of B

Data Structures & Algorithms 52


…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

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

Data Structures & Algorithms 54


…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
Step 5 [F,G,H] ABCDE

G H I

Data Structures & Algorithms 55


…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
Step 5 [F,G,H] ABCDE
Step 6 [G,H,I] ABCDEF
G H I

Data Structures & Algorithms 56


…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
Step 5 [F,G,H] ABCDE
Step 6 [G,H,I] ABCDEF
G H I Step 7 [H,I] ABCDEFG

Data Structures & Algorithms 57


…Graph Traversals – Breadth First Search

• 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

Data Structures & Algorithms 58


…Graph Traversals – Breadth First Search

typedef struct queue *queue_pointer;


typedef struct queue {
int vertex;
queue_pointer link;
};
void addq(queue_pointer *, queue_pointer *, int);
int deleteq(queue_pointer *);

Data Structures & Algorithms 59


…Graph Traversals – Breadth First Search
void bfs(int v){
node_pointer w;
queue_pointer front, rear;
front = rear = NULL;
printf(“%5d”, v);
visited[v] = TRUE;
addq(&front, &rear, v);
while (front) {
v = deleteq(&front);
for (w=graph[v]; w; w=w->link)
if (!visited[w->vertex]) {
printf(“%5d”, w->vertex);
addq(&front, &rear, w->vertex);
visited[w->vertex] = TRUE;
}
}
} 60
Data Structures & Algorithms
…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
H A, B, G

Data Structures & Algorithms 61


…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 [ 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

Data Structures & Algorithms 92


Nhân bản – Phụng sự – Khai phóng

Enjoy the Course…!

Data Structures & Algorithms 93

You might also like