graphs chapter 30 carrano, data structures and abstractions with java, second edition, (c) 2007...
TRANSCRIPT
Graphs
Chapter 30
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Chapter Contents
• Some Examples and Terminology– Road Maps– Airline Routes– Mazes– Course Prerequisites– Trees
• Traversals– Breadth-First Traversal– Dept-First Traversal
Chapter Contents
• Topological Order• Paths– Finding a Path– Shortest Path in an Unweighted Graph– Shortest Path in a Weighted Graph
• Java Interfaces for the ADT Graph
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
Road Maps
Fig. 30-1 A portion of a road map.
NodesNodes
EdgesEdges
Road Maps
Fig. 30-2 A directed graph representing a portion of a city's street map.
Paths
• A sequence of edges that connect two vertices in a graph
• In 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
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
Weights
Fig. 30-3 A weighted graph.
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
Connected Graphs
Fig. 30-4 Undirected graphs
Adjacent Vertices
• Two vertices are adjacent in an undirected graph if they are joined by an edge
• Sometimes adjacent vertices are called neighbors
Fig. 30-5 Vertex A is adjacent to B, but B is not adjacent to A.
Airline Routes
• Note the graph with two subgraphs – Each subgraph connected– Entire graph disconnected
Fig. 30-6 Airline routes
Mazes
Fig. 30-7 (a) A maze; (b) its representation as a graph
Course Prerequisites
Fig. 30-8 The prerequisite structure for a selection of courses as a directed graph without cycles.
Trees• All trees are graphs– But not all graphs are trees
• A tree is a connected graph without cycles• Traversals– 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
Trees
Fig. 30-9 The visitation order of two traversals; (a) depth first
Trees
Fig. 30-9 The visitation order of two traversals; (b) breadth first.
Breadth-First Traversal• A breadth-first traversal– visits a vertex and – then each of the vertex's neighbors – before advancing
• View algorithm for breadth-first traversal of nonempty graph beginning at a given vertex
Breadth-First TraversalFig. 30-10 (ctd.) A trace of a breadth-first traversal for a directed graph, beginning at vertex A.
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
• View algorithm for depth-first traversal
Depth-First TraversalFig. 30-11 A trace of a depth-first traversal beginning at vertex A of the directed graph
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
Topological Order
Fig. 30-12 Three topological orders for the graph of Fig. 30-8.
Fig. 30-8
Topological Order
Fig. 30-13 An impossible prerequisite structure for three courses as a directed graph with a cycle.
Click to view algorithm for a topological sortClick to view algorithm for a topological sort
Topological Order
Fig. 30-14 Finding a topological order for the graph in Fig. 30-8.
Shortest Path in an Unweighted Graph
Fig. 30-15 (a) an unweighted graph and (b) the possible paths from vertex A to vertex H.
Shortest Path in an Weighted Graph
Fig. 30-18 (a) A weighted graph and (b) the possible paths from vertex A to vertex H.
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
Java Interfaces for the ADT Graph
• Methods in the BasicGraphInterface– addVertex– addEdge– hasEdge– isEmpty– getNumberOfVertices– getNumberOfEdges– clear
• View interface for basic graph operations
Java Interfaces for the ADT Graph
Fig. 30-21 A portion of the flight map in Fig. 30-6.
Java Interfaces for the ADT Graph
• Operations of the ADT
– Graph enable creation of a graph and
– Answer questions based on relationships among vertices
• View interface of operations on an existing graph