Page 1
CHAPTER 13Graphs
DATA ABSTRACTION AND PROBLEM SOLVING WITH C++
WALLS AND MIRRORSThird Edition
Frank M. CarranoJanet J. Prichard
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Page 2
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-1An ordinary line graph
Page 3
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-2(a) A campus map as a graph; (b) a subgraph
Page 4
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-3Graphs that are (a) connected; (b) disconnected; and (c) complete
Page 5
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-4(a) A multigraph is not a graph; (b) a self edge is not allowed in a graph
Page 6
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-5a(a) A weighted graph
Page 7
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-5b(b) a directed graph
Page 8
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-6(a) A directed graph and (b) its adjacency matrix
Page 9
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-7(a) A weighted undirected graph and (b) its adjacency matrix
Page 10
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-8(a) A directed graph and (b) its adjacency list
Page 11
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-9(a) A weighted undirected graph and (b) its adjacency list
Page 12
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-10Visitation order for (a) a depth-first search; (b) a breadth-first search
Page 13
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-11A connected graph with cycles
Page 14
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-12The results of a depth-first traversal, beginning at vertex a, of the graph in Figure 13-11
Page 15
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-13The results of a breadth-first traversal, beginning at vertex a, of the graph in Figure 13-11
Page 16
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-14A directed graph without cycles
Page 17
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-15The graph in Figure 13-14 arranged according to the topological orders (a) a, g, d, b, e, c, f and (b) a, b, g, d, e, f, c
Page 18
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-16A trace of topSort1 for the graph in Figure 13-14
Page 19
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-17A trace of topSort2 for the graph in Figure 13-14
Page 20
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-18A spanning tree for the graph in Figure 13-11
Page 21
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-19Connected graphs that each have four vertices and three edges
Page 22
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-20The DFS spanning tree rooted at vertex a for the graph in Figure 13-11
Page 23
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-21The BFS spanning tree rooted at vertex a for the graph in Figure 13-11
Page 24
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-22A weighted, connected, undirected graph
Page 25
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-23A trace of primsAlgorithm for the graph in Figure 13-21, beginning at vertex a
Page 26
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-23 (continued)A trace of primsAlgorithm for the graph in Figure 13-21, beginning at vertex a
Page 27
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-23 (continued)A trace of primsAlgorithm for the graph in Figure 13-21, beginning at vertex a
Page 28
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-24(a) A weighted directed graph and (b) its adjacency matrix
Page 29
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-25A trace of the shortest-path algorithm applied to the graph in Figure 13-24a
Page 30
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-26a and 13-26bChecking weight[u] by examining the graph: (a) weight[2] in Step 2; (b) weight [1] in Step 3
Page 31
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-26c and 13-26d(c) weight[3] in Step 3; (d) weight[3] in Step 4
Page 32
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-27(a) Euler’s bridge problem and (b) its multigraph representation
Page 33
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-28Pencil and paper drawings
Page 34
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-29Connected undirected graphs based on the drawings in Figure 13-28
Page 35
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-30The steps to determine an Euler circuit for the graph in Figure 13-29b
Page 36
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-31The three utilities problem
Page 37
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-32Graphs for Self-Test Exercises 1, 2, and 3
Page 38
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-33A graphs for Self-Test Exercises 6 and 7 and Exercise 1 and 3
Page 39
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-34A graph for Exercise 1
Page 40
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-35A graph for Exercises 3 and 8
Page 41
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-36Graph for Exercises 5 and 6
Page 42
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-37A graph for Exercise 11
Page 43
Data Abstraction and Problem Solving with C++ Walls and Mirrors, Third Edition, Frank M. Carrano and Janet J. Prichard ©2002 Addison Wesley
Figure 13-38A graph for Exercise 13