32
Graphs Chapter 30 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13- 237045-X

Graphs Chapter 30 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X

Embed Size (px)

Citation preview

Page 1: Graphs Chapter 30 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X

Graphs

Chapter 30

Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X

Page 2: 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

Page 3: 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

• Topological Order• Paths– Finding a Path– Shortest Path in an Unweighted Graph– Shortest Path in a Weighted Graph

• Java Interfaces for the ADT Graph

Page 4: Graphs Chapter 30 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

Page 5: Graphs Chapter 30 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-1 A portion of a road map.

NodesNodes

EdgesEdges

Page 6: Graphs Chapter 30 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.

Page 7: Graphs Chapter 30 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

Page 8: Graphs Chapter 30 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

Page 9: Graphs Chapter 30 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.

Page 10: Graphs Chapter 30 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

Page 11: Graphs Chapter 30 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

Page 12: Graphs Chapter 30 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.

Page 13: Graphs Chapter 30 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

Page 14: Graphs Chapter 30 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

Page 15: Graphs Chapter 30 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.

Page 16: Graphs Chapter 30 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

Page 17: Graphs Chapter 30 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

Page 18: Graphs Chapter 30 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.

Page 19: Graphs Chapter 30 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

Page 20: Graphs Chapter 30 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X

Breadth-First TraversalFig. 30-10 (ctd.) A trace of a breadth-first traversal for a directed graph, beginning at vertex A.

Page 21: Graphs Chapter 30 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

Page 22: Graphs Chapter 30 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X

Depth-First TraversalFig. 30-11 A trace of a depth-first traversal beginning at vertex A of the directed graph

Page 23: Graphs Chapter 30 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

Page 24: Graphs Chapter 30 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-12 Three topological orders for the graph of Fig. 30-8.

Fig. 30-8

Page 25: Graphs Chapter 30 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 sortClick to view algorithm for a topological sort

Page 26: Graphs Chapter 30 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.

Page 27: Graphs Chapter 30 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.

Page 28: Graphs Chapter 30 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.

Page 29: Graphs Chapter 30 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

Page 30: Graphs Chapter 30 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

Page 31: Graphs Chapter 30 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.

Page 32: Graphs Chapter 30 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