46
Chapter 18 Graphs

Ch18

Embed Size (px)

Citation preview

Page 1: Ch18

Chapter 18

Graphs

Page 2: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-2

Chapter Objectives

• Define undirected graphs

• Define directed graphs

• Define weighted graphs or networks

• Explore common graph algorithms

Page 3: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-3

Graphs

• Like a tree, a graph is made up of nodes and the connections between those nodes

• In graph terminology, we refer to the nodes a vertices and the connections as edges

• Vertices are typically referred to by label (e.g. A, B, C, D)

• Edges are referenced by a paring of vertices (e.g. (A, B) represent an edge between A and B)

Page 4: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-4

Undirected Graphs

• An undirected graph is a graph where the pairings representing edges are unordered

• Listing an edge as (A, B) means that there is an edge between A and B that can traversed in either direction

• For an undirected graph, (A, B) means exactly the same thing as (B, A)

Page 5: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-5

FIGURE 18.1 An example undirected graph

Page 6: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-6

Undirected Graphs

• Two vertices in a graph are adjacent if there is an edge connecting them

• Adjacent vertices are sometimes referred to as neighbors

• An edge of a graph that connects a vertex to itself is called a self-loop or a sling

• An undirected graph is considered complete if it has the maximum number of edges connecting vertices (n(n-1)/2)

Page 7: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-7

Undirected Graphs

• A path is a sequence of edges that connects two vertices in a graph– A, B, D is a path from A to D in our previous example

• The length of a path is the number of edges in the path (number of vertices - 1)

• An undirected graph is considered connected if for any two vertices in the graph, there is a path between them– The graph in our previous example is connected

– The following graph is not connected

Page 8: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-8

FIGURE 18.2 An example undirected graph that is not connected

Page 9: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-9

Undirected Graphs

• A cycle is a path in which the first and last vertices are repeated– For example, in the previous slide, A, B, C, A is a

cycle

• A graph that has no cycles is called acyclic

• An undirected tree is a connected, acyclic, undirected graph with one element designated as the root

Page 10: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-10

Directed Graphs

• A directed graph, or digraph, is a graph where the edges are ordered pairs of vertices

• This means that the edge (A, B) and (B, A) are separate, directional edges

• Figure 18.1 was described as:Vertices: A, B, C, D

Edges: (A, B), (A, C), (B, C), (B, D), (C, D)

• Interpreting this as a directed graph yields the graph in Figure 18.3

Page 11: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-11

FIGURE 18.3 An example directed graph

Page 12: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-12

FIGURE 18.4 Connected and Unconnected Directed Graphs

Page 13: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-13

Directed Graphs• If a directed graph has no cycles, it is possible to

arrange the vertices such that vertex A precedes vertex B if an edge exists from A to B

• This order of vertices is called topological order

• A directed tree is a directed graph that has an element designated as the root and has the following properties

– There are no connections from other vertices to the root

– Every non-root element has exactly on connection to it

– There is a path from the root to every other vertex

Page 14: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-14

Networks• A network or a weighted graph is a graph with

weights or costs associated with each edge

• Figure 18.5 shows an undirected network of the connections and airfares between cities

• Networks may be directed or undirected

• Figure 18.6 shows a directed network

Page 15: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-15

FIGURE 18.5 A network, or weighted graph

Page 16: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-16

FIGURE 18.6 A directed network

Page 17: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-17

Networks

• For networks, we represent each edge with a triple including the starting vertex, the ending vertex, and the weight

(Boston, New York, 120)

Page 18: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-18

Common Graph Algorithms

• For trees, we defined four types of traversals

• Generally, we divide graph traversals into two categories– Breadth-first traversal

– Depth-first traversal

Page 19: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-19

Common Graph Algorithms

• We can construct a breadth-first traversal for a graph similarly to our level-order traversal of a tree– Use a queue and an unordered list

– We use the queue to manage the traversal

– We use the unordered list to build our result

Page 20: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-20

Listing 18.1

Page 21: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-21

Listing 18.1 (cont.)

Page 22: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-22

Common Graph Algorithms

• We can construct a depth-first traversal for a graph similarly to our level-order traversal of a tree by replacing the queue with a stack– Use a stack and an unordered list

– We use the stack to manage the traversal

– We use the unordered list to build our result

Page 23: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-23

Listing 18.2

Page 24: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-24

Listing 18.2 (cont.)

Page 25: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-25

Common Graph Algorithms

• Of course, both of these algorithms could be expressed recursively

Page 26: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-26

Common Graph Algorithms

• Another common graph algorithm it testing for connectivity

• The graph is connected if and only if for each vertex v in a graph containing n vertices, the size of the result of a breadth-first traversal starting a v is n

Page 27: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-27

FIGURE 18.8 Connectivity in an undirected graph

Page 28: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-28

TABLE 18.1 Breadth-first traversals for a connected undirected graph

Page 29: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-29

TABLE 18.2 Breadth-first traversals for an unconnected undirected graph

Page 30: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-30

Spanning Trees

• A spanning tree is a tree that includes all of the vertices of a graph

• The following example shows a graph and then a spanning tree for that graph

Page 31: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-31

FIGURE 18.7 A sample graph

Page 32: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-32

FIGURE 18.9 A spanning tree for the graph in Figure 18.7

Page 33: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-33

Minimum Spanning Trees

• A minimum spanning tree is a spanning tree where the sum of the weights of the edges is less than or equal to the sum of the weights for any other spanning tree for the same graph

• The algorithm for creating a minimum spanning tree makes use of a minheap to order the edges

Page 34: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-34

FIGURE 18.10 A minimum spanning tree

Page 35: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-35

Listing 18.3

Page 36: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-36

Listing 18.3 (cont.)

Page 37: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-37

Listing 18.3 (cont.)

Page 38: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-38

Determining the Shortest Path

• There are two possibilities for determining the shortest path in a graph– Determine the literal shortest path in

terms of the number of edges

– Determine the least expensive path in a network

Page 39: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-39

Determining the Shortest Path• The solution to the first of these is a simple

variation of our earlier breadth-first traversal algorithm

• We simply store two additional pieces of information for each vertex– The path length from the starting point to this vertex

– The vertex that is the predecessor of this vertex on that path

• Then we modify our loop to terminate when we reach our target vertex

Page 40: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-40

Determining the Shortest Path• The second possibility is to look for the cheapest

path in a network

• Dijkstra develop an algorithm for this possibility that is similar to our previous algorithm

• However, instead of using a queue of vertices, we use a minheap or a priority queue storing vertex, weight pairs based upon total weight

• Thus we always traverse through the graph following the cheapest path first

Page 41: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-41

Strategies for Implementing Graphs• There are two principle approaches to implementing

graphs– Adjacency lists

– Adjacency matrices

• The adjacency list approach is modeled closely to the way we implemented linked implementations of trees

• However, instead of building a graph node that contains a fixed number of references (as we did with BinaryTreeNode) we will build a graph node that simply maintain a linked lists of references to other nodes

• This list is called an adjacency list

Page 42: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-42

Strategies for Implementing Graphs• The second strategy for implementing graphs is to use an

adjacency matrix

• An adjacency matrix is simply a two-dimensional array where both dimensions are “indexed” by the vertices of the graph

• Each position in the matrix contains a boolean that is true if the two associated vertices are connected by an edge, and false otherwise

• The following slides show two example of adjacency matrices, one for an undirected graph, the other for a directed graph

• An adjacency matrix for a network could store the weights in each cell instead of a boolean

Page 43: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-43

FIGURE 18.11 An undirected graph

Page 44: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-44

FIGURE 18.12 An adjacency matrix for an undirected graph

Page 45: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-45

FIGURE 18.13 A directed graph

Page 46: Ch18

Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 18-46

FIGURE 18.14 An adjacency matrix for a directed graph