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

## Presentation on theme: "Graphs Chapter 30 Carrano, Data Structures and Abstractions with Java, Second Edition, (c) 2007 Pearson Education, Inc. All rights reserved. 0-13-237045-X."— Presentation transcript:

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

Chapter Contents Some Examples and Terminology Traversals 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 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 A weighted graph.

Connected Graphs A connected graph A complete 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 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 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 Airline routes

Mazes Fig (a) A maze; (b) its representation as a graph

Course Prerequisites Fig The prerequisite structure for a selection of courses as a directed graph without cycles.

Trees All trees are graphs A tree is a connected graph without cycles
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 The visitation order of two traversals; (a) depth first

Trees Fig The visitation order of two traversals; (b) breadth first.

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

Fig (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 Traversal
Fig 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-8 Fig Three topological orders for the graph of Fig

Topological Order Fig An impossible prerequisite structure for three courses as a directed graph with a cycle. Click to view algorithm for a topological sort

Topological Order Fig Finding a topological order for the graph in Fig

Shortest Path in an Unweighted Graph
Fig (a) an unweighted graph and (b) the possible paths from vertex A to vertex H.

Shortest Path in an Unweighted Graph
Click to view algorithm for finding shortest path Fig (a) The graph in 30-15a after the shortest-path algorithm has traversed from vertex A to vertex H; (b) the data in the vertex

Shortest Path in an Unweighted Graph
Fig Finding the shortest path from vertex A to vertex H in the unweighted graph

Shortest Path in an Weighted Graph
Fig (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

Shortest Path in an Weighted Graph
Fig Finding the cheapest path from vertex A to vertex H in the weighted graph

Shortest Path in an Weighted Graph
Click to view algorithm for finding cheapest path in a weighted graph Fig The graph in Fig a after finding the cheapest path from vertex A to vertex H.

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 A portion of the flight map in Fig

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