# Chapter%2013:%20Graphs - PowerPoint PPT Presentation

View by Category
Title:

## Chapter%2013:%20Graphs

Description:

### Traverses a graph beginning at vertex v by using a // depth-first search: Recursive version. Mark v as visited ... dfs(v) 23. Breadth-First Search (BFS) Traversal (1/2) ... – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 50
Provided by: chiench
Category:
Tags:
Transcript and Presenter's Notes

Title: Chapter%2013:%20Graphs

1
Chapter 13 Graphs
• Chien Chin Chen
• Department of Information Management
• National Taiwan University

2
Terminology (1/7)
• Graphs provide a way to illustrate real world
data.
• Map, Web, .
• A graph G consists of two sets
• G V, E.
• A set V of vertices, or nodes.
• A set E of edges.
• A subgraph
• Consists of a subset of a graphs vertices and a
subset of its edges.

3
Terminology (2/7)
graph
subgraph
4
Terminology (3/7)
• Two vertices that are joined by an edge.
• A path between two vertices
• A sequence of edges that begins at one vertex and
ends at another vertex.
• May pass through the same vertex more than once.
• A simple path
• A path that passes through a vertex only once.

5
Terminology (4/7)
• A cycle
• A path that begins and ends at the same vertex.
• A simple cycle
• A cycle that does not pass through a vertex more
than once.
• A connected graph
• A graph that has a path between each pair of
distinct vertices.

6
Terminology (5/7)
• A disconnected graph
• A graph that has at least one pair of vertices
without a path between them.
• A complete graph
• A graph that has an edge between each pair of
distinct vertices.
• A multigraph
• Allows multiple edges between vertices.
• Not a graph. (not a set of edges)

7
Terminology (6/7)
• Weighted graph
• A graph whose edges have numeric labels.
• Undirected graph
• Edges do not indicate a direction.

8
Terminology (7/7)
• Directed Graph
• Each edge has a direction directed edges.
• Can have two edges between a pair of vertices,
one in each direction.
• Vertex y is adjacent to vertex x if there is a
directed edge from x to y.
• Directed path is a sequence of directed edges
between two vertices.

9
• Variations of an ADT graph are possible
• Vertices may or may not contain values.
• Many problems have no need for vertex values.
• Relationships among vertices is what is
important.
• Either directed or undirected edges.
• Either weighted or unweighted edges.
• Insertion and deletion operations for graphs
apply to vertices and edges.
• Graphs can have traversal operations.

10
• Create an empty graph.
• Destroy a graph.
• Determine whether a graph is empty.
• Determine the number of vertices in a graph.
• Determine the number of edges in a graph.
• Determine whether an edge exists between two
given vertices.
• Insert a vertex in a graph.
• Insert an edge between two given vertices in a
graph.
• Delete a particular vertex from a graph.
• Delete the edge between two given vertices.
• Retrieve the vertex that contains a given search
key.

11
Implementing Graphs (1/6)
• Most common implementations of a graph
• Adjacency matrix for a graph that has n vertices
numbered 0, 1, , n 1.
• An n by n array matrix such that matrixij
indicates whether an edge exists from vertex i to
vertex j.
• The matrix for an undirected graph is
symmetrical that is, matrixij equals
matrixji.

12
Implementing Graphs (2/6)
• For an unweighted graph, matrixij is
• 1 (or true) if an edge exists from vertex i to
vertex j.
• 0 (or false) if no edge exists from vertex i to
vertex j.
• bool matrixnn
• For a weighted graph, matrixij is
• The weight of the edge from vertex i to vertex j.
• ? if no edge exists from vertex i to vertex j
(POSITIVE_INFINITE).

13
Implementing Graphs (3/6)
• Adjacency list for a directed graph that has n
vertices numbered 0, 1, , n 1.
• An array of n linked lists.
• Node listn
• The ith linked list has a node for vertex j if
and only if an edge exists from vertex i to
vertex j.
• The lists node can contain
• Vertex js value, if any, or an indication of
vertex js identity.
• A pointer points to the next node.
• Edge weight.

class Node String ending_vertex_value
float weight Node next
14
Implementing Graphs (4/6)
• For an undirected graph, treat each edge as if it
were two directed edges in opposite directions.
• Which of these two implementations is better?
• Depends on how your application uses the graph.

0
B 8
...
0 A
A
8
1 B
A 8
...
1
B
15
Implementing Graphs (5/6)
• Two common operations on graphs
• Determine whether there is an edge from vertex i
to vertex j.
• Find all vertices adjacent to a given vertex i.
• Supports operation 1 more efficiently.
• Only need to examine the value of matrixij.
• Supports operation 2 more efficiently.
• Traverse the ith linked list.

16
Implementing Graphs (6/6)
• Space requirements of the two implementations
• The adjacency matrix always has n2 entries.
• The number of nodes in an adjacency list equals
the number of edges in a graph (twice for an
undirected graph).
• Each node contains both a value and a pointer.
• The list also has n head pointer.
• Often requires less space than an adjacency
matrix.
• You must consider
• What operations are needed.
• memory requirements.

17
Graph Traversals (1/2)
• Visits all the vertices that it can reach.
• Traversal that starts at vertex v will visit all
vertices w for which there is a path between v
and w.
• Visits all vertices of the graph if and only if
the graph is connected.
• If a graph is not connected, a graph traversal
will visit only a subset of the graphs vertices.
• A connected component the subset of vertices
visited during a traversal that begins at a given
vertex.

18
Graph Traversals (2/2)
• If a graph contains a cycle, a graph-traversal
algorithm can loop indefinitely.
• To prevent indefinite loops
• Mark each vertex during a visit, and
• Never visit a vertex more than once.
• Two basic graph-traversal algorithms, which are
search traversal, can apply to either directed or
undirected graphs.

19
Depth-First Search (DFS)Traversal (1/4)
• Proceeds along a path from a vertex v as deeply
into the graph as possible before backing up.
• Has a simple recursive form.

dfs(in vVertex) // Traverses a graph beginning
at vertex v by using a // depth-first search
Recursive version. Mark v as visited for
(each unvisited vertex u adjacent to v)
dfs(u)
to visit the vertices adjacent to v in sorted
order.
20
Depth-First Search (DFS) Traversal (2/4)
dfs(in vVertex) Mark v as visited for
(each unvisited vertex u adjacent to v)
dfs(u)
1
v
v
dfs(v)
dfs(t)
dfs(t)
7
8
2
u
w
x
u
w
x
dfs(u)
6
3
q
t
q
t
dfs(q)
dfs(t)
4
5
dfs(r)
dfs(s)
r
s
r
s
21
Depth-First Search (DFS) Traversal (3/4)
• A last visited, first explored strategy.
• Has an iterative form that uses a stack.

dfs(in vVertex) s.createStack() s.push(v)
Mark v as visited while(!s.isEmpty())
if (no unvisited vertices are adjacent to
the vertex on the top of the stack)
s.pop() // backtrack else Select
an unvisited vertex u adjacent to the
vertex on the top of the stack
s.push(u) Mark u as visited
22
Depth-First Search (DFS) Traversal (4/4)
1
v
v
dfs(v)
7
8
2
u
w
x
u
w
x
r
s
q
6
t
3
u
w
x
q
t
q
t
v
stack
4
5
r
s
r
s
23
• Visits every vertex adjacent to a vertex v that
it can before visiting any other vertex.
• A first visited, first explored strategy.
• An iterative form uses a queue.

bfs(in vVertex) q.createQueue()
q.enqueue(v) Mark v as visited
while(!q.isEmpty()) q.dequeue(w)
for (each unvisited vertex u adjacent to w)
Mark u as visited q.enqueue(u)

24
1
v
v
bfs(v)
3
4
2
u
w
x
u
w
x
6
5
q
t
q
t
7
8
r
s
r
s
queue
v
u
q
t
r
w
x
s
25
Applications of Graphs Topological Sorting (1/5)
• Topological order
• A list of vertices in a directed graph without
cycles such that vertex x precedes vertex y if
there is a directed edge from x to y in the
graph.
• Several topological orders are possible for a
given graph.

26
Applications of Graphs Topological Sorting (2/5)
• Topological sorting
• Arranging the vertices into a topological order.
• topSort1
• Find a vertex that has no successor.
• Add the vertex to the beginning of a list.
• Remove that vertex from the graph, as well as all
• Repeat the previous steps until the graph is
empty.
• When the loop ends, the list of vertices will be
in topological order.

27
Applications of Graphs Topological Sorting (3/5)
c
b
a
f
e
d
g
f
c
e
b
d
g
a
List
28
Applications of Graphs Topological Sorting (4/5)
• A modification of the iterative DFS algorithm.

topSort2(in theGraphGraph, out aListlist)
s.createStack() for (all vertices v in the
graph if (v has no predecessors)
s.push(v) Mark v as visited
while (!s.isEmpty()) if (all vertices
adjacent to the vertex on the top of
the stack have been visited) s.pop(v)
aList.insert(1, v) else
Select an unvisited vertex u adjacent to
the vertex on the top of the stack
s.push(u) Mark u as visited
Push all vertices that have no predecessor onto
a stack.
29
Applications of Graphs Topological Sorting (5/5)
c
b
a
c
b
a
c
f
e
f
e
d
f
e
d
d
g
b
a
g
g
f
c
e
d
g
b
a
List
stack
1. Push ( mark) all vertices that have no
predecessor onto a stack.
2. DFS while loop

30
Applications of Graphs Spanning Trees (1/5)
• A tree is an undirected connected graph without
cycles.
• A spanning tree of a connected undirected graph G
is
• A subgraph of G that contains all of Gs vertices
and enough of its edges to form a tree.

31
Applications of Graphs Spanning Trees (2/5)
• There may be several spanning trees for a given
graph.
• To obtain a spanning tree from a connected
undirected graph with cycles
• Remove edges until there are no cycles.
• Detecting a cycle in an undirected connected
graph
• A connected undirected graph that has n vertices
must have at least n 1 edges.
• A connected undirected graph that has n vertices
and exactly n 1 edges cannot contain a cycle.
• A connected undirected graph that has n vertices
and more than n 1 edges must contain at least
one cycle.

You can determine whether a connected graph
contains a cycle simply by counting its vertices
and edges.
32
Applications of Graphs Spanning Trees (3/5)
• Two algorithm for determining a spanning tree of
a graph
• The DFS spanning tree.
• THE BFS spanning tree.

33
Applications of Graphs Spanning Trees (4/5)
• To create a depth-first search (DFS) spanning
tree
• Traverse the graph using a depth-first search and
mark the edges that you follow.
• After the traversal is complete, the graphs
vertices and marked edges form the spanning tree.
• To create a breath-first search (BFS) spanning
tree
• Traverse the graph using a bread-first search and
mark the edges that you follow.
• When the traversal is complete, the graphs
vertices and marked edges form the spanning tree.

34
Applications of Graphs Spanning Trees (5/5)
• The DFS spanning tree rooted at vertex a.

root
(1)
a
b
a
b
(2)
e
f
(8)
g
h
c
c
h
h
d
(3)
e
i
e
i
c
(7)
(5)
b
i
d
d
a
f
f
(6)
g
g
(4)
stack
35
Applications of Graphs Minimum Spanning Trees
(1/4)
• Suppose you are building a telephone system of a
country.
• Vertices cities.
• Edges weighted, the installation cost of the
telephone line.
• Cost of the spanning tree
• Sum of the costs of the edges of the spanning
tree.

6
a
b
a
b
7
2
9
c
c
4
h
h
4
3
e
i
e
i
1
8
d
d
5
f
f
2
g
g
36
Applications of Graphs Minimum Spanning Trees
(2/4)
• A minimum spanning tree of a connected undirected
graph has a minimal edge-weight sum.
• A particular graph could have several minimum
spanning trees.
• Prims algorithm
• A method finds a minimum spanning tree that begin
at any vertex.

37
Applications of Graphs Minimum Spanning Trees
(3/4)
primsAlgorithm(in vVertex) // Determines a
minimum spanning tree for a weighted, //
connected, undirected graph whose weights are //
nonnegative, beginning with any vertex v.
Mark vertex v as visited and include it in the
minimum spanning tree while (there are
unvisited vertices) Find the least-cost
edge (v, u) from a visited vertex v to
some unvisited vertex u Mark u as
visited Add the vertex u and the edge (v,
u) to the minimum spanning tree
38
Applications of Graphs Minimum Spanning Trees
(4/4)
primsAlgorithm(a)
6
a
b
a
b
a
b
7
2
9
c
c
c
4
h
h
h
4
3
e
i
e
i
e
i
1
8
d
d
d
5
f
f
2
f
g
g
g
39
Applications of Graphs Shortest Paths (1/5)
• A map of airline routes
• The vertices are cities.
• The edges indicate existing flights between
cities.
• The edge weights represent the mileage between
cities.
• Shortest path between two vertices in a weighted
graph is
• The path that has the smallest sum of its edge
weights.

40
Applications of Graphs Shortest Paths (2/5)
• Dijkstras Algorithm
• Find the shortest paths between a given origin
and all other vertices.
• For convenience, the starting vertex (origin) is
labeled 0, and the other vertices are labeled
from 1 to n-1.

0 1 2 3 4
0 8 8 8 9 4
1 8 8 1 8 8
2 8 2 8 3 8
3 8 8 2 8 7
4 8 8 1 8 8
8
2
0
1
2
1
4
3
9
2
1
3
4
7
41
Applications of Graphs Shortest Paths (3/5)
• Dijkstras algorithm uses
• A set vertexSet of selected vertices.
• An array weight, where weightv is the weight of
the shortest path from vertex 0 to vertex v that
passes through vertices in vertexSet.
• Initially, vertexSet contains only vertex 0, and
weight contains the weights of the single-edge
paths from vertex 0 to all other vertices.

42
Applications of Graphs Shortest Paths (4/5)
• After initialization, you find a vertex v that is
not in vertexSet and that minimizes weightv.
• For all vertices u not in vertexSet, you check
the values weightu to ensure that they are
indeed minimums.
• weightu min weightu,
• weightv matrixvu
• The final values in weight are the weights of the
shortest path.

43
Applications of Graphs Shortest Paths (5/5)
0 1 2 3 4
0 8 8 8 9 4
1 8 8 1 8 8
2 8 2 8 3 8
3 8 8 2 8 7
4 8 8 1 8 8
8
2
0
1
2
1
4
3
9
2
1
3
4
7
44
Applications of Graphs Circuits (1/2)
• A circuit
• A special cycle that passes through every vertex
(or edge) in a graph exactly once.
• Euler circuit (Eulers bridge problem)
• A circuit that begins at a vertex v, passes
through every edge exactly once, and terminates
at v.
• Exists if and only if each vertex touches an even
number of edges.

45
Applications of Graphs Circuits (2/2)
• Does the graph has Euler circuit?
• Find an Euler circuit for a graph
• Use a depth-first search that marks edges instead
of vertices as they are traversed.
• When you find a cycle,
• launch a new traversal beginning with the first
vertex along the cycle that touches an unvisited
edge.

YES!!
a
b
d
e
c
f
h
i
g
j
k
l
Euler circuit
a
b
e
d
a
f
j
i
e
h
d
c
g
h
k
l
i
46
Applications of Graphs Some Difficult Problems
• A Hamilton circuit
• Begins at a vertex v, passes through every vertex
exactly once, and terminates at v.
• The traveling salesman problem (TSP) weighted
graph with the least weight expense.
• A planar graph
• Can be drawn so that no two edges cross.
• The three utilities problem.
• The four-color problem.

47
Summary (1/3)
• The most common implementations of a graph use
• Graph searching
• Depth-first search goes as deep into the graph as
it can before backtracking.
• Uses a stack.
vertices before traversing further into the
graph.
• Uses a queue.

48
Summary (2/3)
• Topological sorting produces a linear order of
the vertices in a directed graph without cycles.
• Trees are connected undirected graphs without
cycles.
• A spanning tree of a connected undirected graph
is
• A subgraph that contains all the graphs vertices
and enough of its edges to form a tree.
• A minimum spanning tree for a weighted undirected
graph is
• A spanning tree whose edge-weight sum is minimal.

49
Summary (3/3)
• The shortest path between two vertices in a
weighted directed graph is
• The path that has the smallest sum of its edge
weights.