Upload
barnard-robinson
View
220
Download
1
Tags:
Embed Size (px)
Citation preview
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