0% found this document useful (0 votes)
21 views31 pages

Ch12 Graphs

Uploaded by

basheermazari4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views31 pages

Ch12 Graphs

Uploaded by

basheermazari4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31

Data Structures Using C++ 2E

Chapter 12
Graphs
Jordan University of Science and Technology
Objectives
• Learn about graphs
• Become familiar with the basic terminology of
graph theory
• Discover how to represent graphs in computer
memory
• Examine and implement various graph traversal
algorithms

2
Graph Definitions and Notations
• Graph G pair
– G = (V, E), where
• V is a finite nonempty set
– Called the set of vertices of G, and E  V x V
• Elements of E
– Pairs of elements of V
• E: set of edges of G
• G called trivial if it has only one vertex
• Directed graph (digraph)
– Elements in set of edges of graph G : ordered
• Undirected graph: not ordered
3
V(G4)={1,2,3,4,5}

E(G4)={(1,2),(1,3) G4
,(1,4),(2,5), (3,4), (3,5)}

FIGURE 12-3 Various undirected graphs

FIGURE 12-4 Various directed graphs

4
Graph Definitions and Notations
• Graph H called subgraph of G
– If V(H)  V(G) and E(H)  E(G)
– Every vertex of H : vertex of G
– Every edge in H : edge in G
• Graph shown pictorially
– Vertices drawn as circles
• Label inside circle represents vertex
• Undirected graph: edges drawn using lines
• Directed graph: edges drawn using arrows

5
Undirected Graph Definitions and Notations
• Let u and v be two vertices in the undirected graph G
– u and v adjacent
• If edge from one to the other exists: (u, v)  E
– A and B are adjacent
A B C
• Loop
– Edge incident on a single vertex
• e1 and e2 called parallel edges D

– edges e1 and e2 associate with same pair of vertices {u, v}


A B C
• Simple graph
– No loops, no parallel edges
D

6
Undirected Graph Definitions and Notations

• Let e = (u, v) be an edge in G


– Edge e is incident on the vertices u and v
– Degree of u written deg(u) or d(u)
• Number of edges incident with u A B C
• Each loop on vertex u
– Contributes two to the degree of u
D
• Deg(C) = 3, Deg(D)=2
• u is called an even (odd) degree vertex
– If the degree of u is even (odd)
• A is an odd degree vertex; B is an even degree vertex.
7
Undirected Graph Definitions and Notations
A B C

• Path from u to v Connected graph


– If sequence of vertices u1, u2, . . ., un exists D
• Such that u = u1, un = v and (ui, ui+ 1) is an edge for all i =1, 2, . . ., n – 1
• Vertices u and v called connected, otherwise, it is called disconnected
– If path from u to v exists
• Simple path
– All vertices distinct (except possibly first, last)
– A-B-C-D, C-D-C are simple paths, A-B-C-D-C-B is not
– A-B-C-D-C? not a simple path
• Cycle in G
– Simple path in which first and last vertices are the same
– C-D-C, and 5-4-3-6-5 are Cycles
• G are connected if there is a path from any
vertex to any other vertex, otherwise it is called
disconnected. Disconnected graph
8
Directed Graph Definitions and Notations

• Definitions of paths and cycles in G A B C


– Similar to those for undirected graphs

D
• Path from u to v
– If sequence of vertices u1, u2, . . ., un exists
• Such that u = u1, un = v and (ui, ui+ 1) is an edge for all i =1,
2, . . ., n – 1
• There is a path from A to D but not from D to A
• B-C-D-B is a cycle

9
directed Graph Definitions and
Notations
• G is strongly connected, or simply strong, if it contains a directed path
from u to v and a directed path from v to u for every pair of vertices u, v.
• G is weakly connected if replacing all of its directed edges with undirected
edges produces a connected (undirected) graph

A B C A B C

Strongly connected Weakley connected


D D

• Let G be a directed graph and let u and v be two vertices in G


– If edge from u to v exists: (u, v)  E
• u is adjacent to v
• v is adjacent from u
» A adjacent to B and B adjacent from A

10
Graph Representation
• Graphs represented in computer memory
– Two common ways
• Adjacency matrices
• Adjacency lists

11
Adjacency Matrices
• Let G be a graph with n vertices where n > 0
• Let V(G) = {v1, v2, ..., vn}
– Adjacency matrix

12
Adjacency Matrices: Undirected Graphs

Symmetric Adjacency matrix

13
Adjacency Lists
• Given:
– Graph G with n vertices, where n > zero
– V(G) = {v1, v2, ..., vn}
• For each vertex v: linked list exists
– Linked list node contains vertex u: (v, u)  E(G)
• Use array A, of size n, such that A[i]
– Reference variable pointing to first linked list node
containing vertices to which vi adjacent
• Each node has two components: vertex, link
– Component vertex
• Contains index of vertex adjacent to vertex i
14
Adjacency Lists (cont’d.)

FIGURE 12-4 Various directed graphs

Adjacency list of graph G2 Adjacency list of graph G3


15
Adjacency Lists: Undirected Graphs

Adjacency list of graph G2


16
Graph Traversals
• Similar to traversing a binary tree
• A bit more complicated
• A Graph could have cycles
• Not necessarily be able to traverse the entire graph
from a single vertex (E.g., not connected graph ).
• Must keep track of the vertices that have been visited.

• Two most common graph traversal algorithms


– Depth first traversal
– Breadth first traversal

17
Depth First Traversal
• Similar to binary tree preorder traversal
• General algorithm:

A B
A C F
C D E A D H

B D E E G F

F
H G

A C E F G D B H

18
Depth First Traversal (cont’d.)
• General algorithm for depth first traversal at a given
node v
– Recursive algorithm

Data Structures Using C++ 2E 19


Breadth First Traversal
• Similar to traversing binary tree level-by-level
– Nodes at each level
• Visited from left to right
– All nodes at any level i
• Visited before visiting nodes at level i + one

A B
A C F

C D E A D H

B D E E G F

H G F

A C D E G F B H
20
Breadth First Traversal in Queue way

A C F

B D E
A C D E G F B H
G
H

A C D E G F B H

21
Breadth First Traversal (cont’d.)
• General search algorithm
– Breadth first search algorithm with a queue
A C F

B D E

G
H

A C D E G F B H

22
Shortest Path (greedy algorithm)
• Weight of the graph
– Nonnegative real number assigned to the edges
connecting to vertices
• Weighted graphs
– When a graph uses the weight to represent the
distance between two places
• Weight of the path P
– Given G as a weighted graph with vertices u and v in
G and P as a path in G from u to v
• Sum of the weights of all the edges on the path
• Shortest path: path with the smallest weight

Data Structures Using C++ 2E 23


Shortest Path Algorithm (cont’d.)
• Shortest path algorithm space (greedy algorithm)
• See code on page 700
– class weightedGraphType
• Extend definition of class graphType
• Adds function createWeightedGraph to create
graph and weight matrix associated with the graph

Data Structures Using C++ 2E 24


Shortest Path
• General algorithm
– Initialize array smallestWeight
smallestWeight[u] = weights[vertex, u]
– Set smallestWeight[vertex] = 0
– Find vertex v closest to vertex where shortest path is
not determined
– Mark v as the (next) vertex for which the smallest
weight is found

Data Structures Using C++ 2E 25


Shortest Path (cont’d.)
• General algorithm (cont’d.)
– For each vertex w in G, such that the shortest path
from vertex to w has not been determined and an
edge (v, w) exists
• If weight of the path to w via v smaller than its current
weight
• Update weight of w to the weight of v + weight of edge
(v, w)
• weightFound : keeps track of the vertices for which
the smallest weight from the source vertex has been
found.
Data Structures Using C++ 2E 26
Shortest Path (cont’d.)

FIGURE 12-8 Weighted graph G

FIGURE 12-9 Graph after Steps 1 and 2 execute

Data Structures Using C++ 2E 27


Shortest Path (cont’d.)

FIGURE 12-10 Graph after the first iteration of Steps 3 to 5

FIGURE 12-11 Graph after the second iteration of Steps 3 to 5

Data Structures Using C++ 2E 28


Shortest Path (cont’d.)

FIGURE 12-12 Graph after the third iteration of Steps 3 to 5

FIGURE 12-13 Graph after the fourth iteration of Steps 3 through 5


Data Structures Using C++ 2E 29
Example
A
2 5  Depth First
3 ABCDE
E 6
B  Breadth First
10 5 ABCED
1
4 2  Shortest Path

D C
2
20
A C F  Depth First
10 ABDFCGE
8
12 20 4  Breadth First
5 D 3 E ABCDEGF
B 5
 Shortest Path
G

31

You might also like