Upload
rosa-lynch
View
224
Download
0
Tags:
Embed Size (px)
Citation preview
Graphs
Chapter 29
2
Chapter Contents
Some Examples and Terminology• Road Maps• Airline Routes• Mazes• Course Prerequisites• Trees
Traversals• Breadth-First Traversal• Dept-First Traversal
Topological Order
Paths• Finding a Path• Shortest Path in an
Unweighted Graph• Shortest Pat in a
Weighted Graph
Java Interfaces for the ADT Graph
3
Some Examples and Terminology
Vertices or nodes are connected by edges
A graph is a collection of distinct vertices and distinct edges• Edges can be directed or undirected• When it has directed edges it is called a
digraph
A subgraph is a portion of a graph that itself is a graph
4
Road Maps
Fig. 29-1 A portion of a road map.
NodesNodes
EdgesEdges
5
Road Maps
Fig. 29-2 A directed graph representing a portion of a city's street map.
6
Paths
A sequence of edges that connect two vertices in a graphIn a directed graph the direction of the edges must be considered• Called a directed path
A cycle is a path that begins and ends at same vertex• Simple path does not pass through any vertex
more than once
A graph with no cycles is acyclic
7
Weights
A weighted graph has values on its edges• Weights or costs
A path in a weighted graph also has weight or cost• The sum of the edge weights
Examples of weights• Miles between nodes on a map• Driving time between nodes• Taxi cost between node locations
8
Weights
Fig. 29-3 A weighted graph.
9
Connected Graphs
A connected graph• Has a path between every pair of
distinct vertices
A complete graph• Has an edge between every pair of
distinct vertices
A disconnected graph• Not connected
10
Connected Graphs
Fig. 29-4 Undirected graphs
11
Adjacent Vertices
Two vertices are adjacent in an undirected graph if they are joined by an edge
Sometimes adjacent vertices are called neighbors
Fig. 29-5 Vertex A is adjacent to B, but B is not adjacent to A.
12
Airline Routes
Note the graph with two subgraphs • Each subgraph connected• Entire graph disconnected
Fig. 29-6 Airline routes
13
Mazes
Fig. 29-7 (a) A maze; (b) its representation as a graph
14
Course Prerequisites
Fig. 29-8 The prerequisite structure for a selection of courses as a directed graph without cycles.
15
TreesAll trees are graphs• But not all graphs are trees
A tree is a connected graph without cyclesTraversals• Preorder, inorder, postorder traversals are
examples of depth-first traversal• Level-order traversal of a tree is an example of
breadth-first traversal
Visit a node• For a tree: process the node's data• For a graph: mark the node as visited
16
Trees
Fig. 29-9 The visitation order of two traversals; (a) depth first; (b) breadth first.
17
Breadth-First TraversalAlgorithm for breadth-first traversal of nonempty graph beginning at a given vertex
Algorithm getBreadthFirstTraversal(originVertex)vertexQueue = a new queue to hold neighborstraversalOrder = a new queue for the resulting traversal orderMark originVertex as visitedtraversalOrder.enqueue(originVertex)vertexQueue.enqueue(originVertex)while (!vertexQueue.isEmpty()){ frontVertex = vertexQueue.dequeue()
while (frontVertex has an unvisited neighbor){ nextNeighbor = next unvisited neighbor of frontVertex
Mark nextNeighbor as visitedtraversalOrder.enqueue(nextNeighbor)vertexQueue.enqueue(nextNeighbor)
}}return traversalOrder
A breadth-first traversal visits a vertex and then each of the
vertex's neighbors before advancing
A breadth-first traversal visits a vertex and then each of the
vertex's neighbors before advancing
18
Breadth-First TraversalFig. 29-10 (ctd.)
A trace of a breadth-first
traversal for a directed graph,
beginning at vertex A.
19
Depth-First Traversal
Visits a vertex, then• A neighbor of the vertex, • A neighbor of the neighbor,• Etc.
Advance as possible from the original vertex
Then back up by one vertex• Considers the next neighbor
20
Depth-First Traversal
Fig. 29-11 A trace of a depth-
first traversal beginning at
vertex A of the directed graph in Fig. 29-10a.
21
Topological Order
Given a directed graph without cycles
In a topological order • Vertex a precedes vertex b whenever• A directed edge exists from a to b
22
Topological Order
Fig. 29-12 Three topological orders for the graph of Fig. 29-8.
23
Topological Order
Fig. 29-13 An impossible prerequisite structure for three courses as a directed graph with a cycle.
24
Topological Order
Algorithm for a topological sort
Algorithm getTopologicalSort()vertexStack = a new stack to hold vertices as they are visitedn = number of vertices in the graphfor (counter = 1 to n){ nextVertex = an unvisited vertex whose neighbors, if any, are all visited
Mark nextVertex as visitedstack.push(nextVertex)
}return stack
25
Topological Order
Fig. 29-14 Finding a topological order
for the graph in Fig. 29-8.
26
Shortest Path in an Unweighted Graph
Fig. 29-15 (a) an unweighted graph and (b) the possible paths from vertex A to vertex H.
27
Shortest Path in an Unweighted Graph
Fig. 29-16 The graph in 29-15a after the shortest-path algorithm has traversed from vertex A to vertex H
28
Shortest Path in an Unweighted Graph
Fig. 29-17 Finding the shortest path from vertex A to vertex H in the unweighted graph in Fig. 29-15a.
29
Shortest Path in an Weighted Graph
Fig. 29-18 (a) A weighted graph and (b) the possible paths from vertex A to vertex H.
30
Shortest Path in an Weighted Graph
Shortest path between two given vertices• Smallest edge-weight sum
Algorithm based on breadth-first traversal
Several paths in a weighted graph might have same minimum edge-weight sum• Algorithm given by text finds only one of these
paths
31
Shortest Path in an Weighted Graph
Fig. 29-19 Finding the cheapest path from vertex A to vertex H in the
weighted graph in Fig 29-18a.
32
Shortest Path in an Weighted Graph
Fig. 29-20 The graph in Fig. 29-18a after finding the cheapest path from vertex A to vertex H.
33
Java Interfaces for the ADT Graph
Methods in the BasicGraphInterface• addVertex• addEdge• hasEdge• isEmpty• getNumberOfVertices• getNumberOfEdges• clear
34
Java Interfaces for the ADT Graph
Fig. 29-21 A portion of the flight map in Fig. 29-6.
Operations of the ADT graph enable creation of a graph and
answer questions based on relationships among vertices
Operations of the ADT graph enable creation of a graph and
answer questions based on relationships among vertices