Download Java Classes

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Graphs
Chapter 30
Slides by Steve Armstrong
LeTourneau University
Longview, TX
2007, Prentice Hall
Chapter Contents
• Some Examples and Terminology
 Road Maps
 Airline Routes
 Mazes
 Course Prerequisites
 Trees
• Traversals
 Breadth-First Traversal
 Dept-First Traversal
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Road Maps
Nodes
Edges
Fig. 30-1 A portion of a road map.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Road Maps
Fig. 30-2 A directed graph representing a
portion of a city's street map.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Weights
Fig. 30-3 A weighted graph.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Connected Graphs
Fig. 30-4 Undirected graphs
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Airline Routes
• Note the graph with two subgraphs
 Each subgraph connected
 Entire graph disconnected
Fig. 30-6 Airline routes
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Mazes
Fig. 30-7 (a) A maze; (b) its representation as a graph
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Course Prerequisites
Fig. 30-8 The prerequisite structure for a selection of
courses as a directed graph without cycles.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Trees
Fig. 30-9 The visitation order of two traversals;
(a) depth first
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Trees
Fig. 30-9 The visitation order of two traversals;
(b) breadth first.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Breadth-First Traversal
Fig. 30-10 (ctd.)
A trace of a
breadth-first
traversal for a
directed graph,
beginning at
vertex A.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Depth-First Traversal
Fig. 30-11 A
trace of a depthfirst traversal
beginning at
vertex A of the
directed graph
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Topological Order
Fig. 30-8
Fig. 30-12 Three topological orders for the
graph of Fig. 30-8.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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 sort
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Topological
Order
Fig. 30-14 Finding a
topological order
for the graph in
Fig. 30-8.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Shortest Path in an
Unweighted Graph
Fig. 30-15 (a) an unweighted graph and
(b) the possible paths from vertex A to vertex H.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Shortest Path in an
Unweighted Graph
Click to view algorithm
for finding shortest path
Fig. 30-16 (a) The graph in 30-15a after the shortestpath algorithm has traversed from vertex A to vertex H;
(b) the data in the vertex
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Shortest Path in an
Unweighted Graph
Fig. 30-17 Finding the shortest path from vertex A to
vertex H in the unweighted graph
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Shortest Path in an
Weighted Graph
Fig. 30-18 (a) A weighted graph and
(b) the possible paths from vertex A to vertex H.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Shortest Path in an Weighted Graph
Fig. 30-19 Finding
the cheapest path
from vertex A to
vertex H in the
weighted graph
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Shortest Path in an
Weighted Graph
Click to view
algorithm for
finding cheapest
path in a weighted
graph
Fig. 30-20 The graph in Fig. 30-18a after finding the
cheapest path from vertex A to vertex H.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Java Interfaces for the ADT Graph
• Methods in the BasicGraphInterface
 addVertex
 addEdge
 hasEdge
 isEmpty
 getNumberOfVertices
 getNumberOfEdges
 clear
• View interface for basic graph operations
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Java Interfaces for the ADT Graph
Fig. 30-21 A portion of the flight map in Fig. 30-6.
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
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
Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X
Related documents