Chapter%2013:%20Graphs - PowerPoint PPT Presentation

View by Category
About This Presentation
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
Learn more at: http://www.im.ntu.edu.tw
Category:
Tags: 20graphs | chapter | dfs

less

Write a Comment
User Comments (0)
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)
  • Adjacent vertices
  • 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
Graphs As ADTs (1/2)
  • 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
Graphs As ADTs (2/2)
  • ADT Graph Operations
  • 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.
  • Adjacency list.
  • 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.
  • Adjacency matrix
  • Supports operation 1 more efficiently.
  • Only need to examine the value of matrixij.
  • Adjacency list
  • 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
    depth-first search traversal and breadth-first
    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
Breadth-First Search (BFS)Traversal (1/2)
  • 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
Breadth-First Search (BFS)Traversal (2/2)
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
    edges that lead to it.
  • 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.

Adjacency matrix
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.
  • Add v to vertexSet.
  • 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)
Adjacency matrix
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
    either an adjacency matrix or an adjacency list.
  • Graph searching
  • Depth-first search goes as deep into the graph as
    it can before backtracking.
  • Uses a stack.
  • Bread-first search visits all possible adjacent
    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.
About PowerShow.com