graphs chapter 19. 2 chapter contents some examples and terminology road maps airline routes mazes...
TRANSCRIPT
Graphs
Chapter 19
2
Chapter Contents
Some Examples and Terminology Road Maps Airline Routes Mazes Course Prerequisites Trees
Traversals Breadth-First Traversal Dept-First Traversal
Topological Order Paths
Finding a Path Shortest Path in an
Unweighted Graph Shortest Pat in a
Weighted Graph
Java Interfaces for the ADT Graph
3
Some Examples and Terminology
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 Vertices or nodes are connected by edges A subgraph is a portion of a graph that
itself is a graph
4
Road Maps
A portion of a road map. Undirected edges
NodesNodes
EdgesEdges
5
Street Maps
A directed graph representing a city's street map. Directed edges
6
Path
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
7
Weight
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
8
Weights
A weighted graph.
9
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
10
Connected Graphs
Undirected graphs
11
Adjacent Vertices
Two vertices are adjacent in an undirected graph if they are joined by an edge
Sometimes adjacent vertices are called neighbors
Vertex A is adjacent to B, but B is not adjacent to A.
12
Airline Routes Note the graph with two subgraphs
Each subgraph connected Entire graph disconnected
Airline routes
13
Mazes
(a) A maze; (b) its representation as a graph
14
Course Prerequisites
The prerequisite structure for a selection of courses as a directed graph without cycles.
15
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
16
Trees
The visitation order of two traversals; (a) depth first; (b) breadth first.
17
Breadth-First Traversal(ctd.) A trace of a breadth-first traversal for a directed graph,
beginning at vertex A.
18
Breadth-First Traversal Algorithm for breadth-first traversal of nonempty
graph beginning at a given vertex
Algorithm getBreadthFirstTraversal(originVertex)vertexQueue = a new queue to hold neighborstraversalOrder = a new queue for the resulting traversal orderMark originVertex as visitedtraversalOrder.enqueue(originVertex)vertexQueue.enqueue(originVertex)while (!vertexQueue.isEmpty()){ frontVertex = vertexQueue.dequeue()
while (frontVertex has an unvisited neighbor){ nextNeighbor = next unvisited neighbor of frontVertex
Mark nextNeighbor as visitedtraversalOrder.enqueue(nextNeighbor)vertexQueue.enqueue(nextNeighbor)
}}return traversalOrder
A breadth-first traversal visits a vertex and then each of the
vertex's neighbors before advancing
A breadth-first traversal visits a vertex and then each of the
vertex's neighbors before advancing
19
Depth-First Traversal
Visits a vertex, then A neighbor of the vertex, A neighbor of the neighbor, Etc. Visit them, and push them into stack
Advance as much as possible from the original vertex
When no unvisited neighbor exists, back up by one level by popping up current vertex Considers the next neighbor branch
20
Depth-First TraversalA trace of a depth-first traversal
beginning at vertex A of the directed graph
21
Depth-First TraversalAlgorithm getDepthFirstTraversal(originVertex)
vertexStack = a new stack to hold vertices as they are visitedtraversalOrder = a new queue for the resulting traversal orderMark originVertex as visitedtraversalOrder.enqueue(originVertex)vertexStack.push(originVertex)while (!vertexStack.isEmpty()){
topVertex = vertexStack.peek()if (topVertex has an unvisited neighbor){ nextNeighbor = next unvisited neighbor of topVertex
Mark nextNeighbor as visitedtraversalOrder.enqueue(nextNeighbor)vertexStack.push(nextNeighbor)
}else // all neighbors are visited
vertexStack.pop()
}return traversalOrder
22
Graph Traversal Exercises
Breadth-First and Depth-First Traversal starting from aBreadth-First and Depth-First Traversal starting from a
23
Some of the possible Answers
Breadth-first a f h e g i d j k c l n b m o
Depth-first a f e d c b g h i j k l m n o
24
Topological Order
Given a directed graph without cycles (DAG) An ordering of vertices in a directed acyclic
graph. In a topological order
Vertex a precedes vertex b whenever A directed edge exists from a to b
25
Topological Order
First find any vertex with no incoming edges. Print this vertex, and remove it, along with its
edges from the graph. Then we apply the same strategy to the rest
of graph. Indegree of node: Incoming number of edges
26
Topological Order
Three topological orders for the graph
27
Topological Order
An impossible prerequisite structure for three courses as a directed graph with a cycle.
28
Topological Orderundershorts
pants
belt
socks
shoes
shirt
tie
jacket
watch
29
Topological Order
30
Topological Order
The graph shown has many valid topological sorts, including:
7,5,3,11,8,2,9,10 7,5,11,2,3,10,8,9 3,7,8,5,11,10,9,2
31
Shortest Path in an Unweighted Graph
(a) an unweighted graph and (b) the possible paths from vertex A to vertex H.
32
Shortest Path in an Unweighted Graph
The graph after the shortest-path algorithm has traversed from vertex A to vertex H
33
Shortest Path in an Unweighted Graph
Finding the shortest path from vertex A to vertex H in the unweighted graph
34
Shortest Path in an Weighted Graph
(a) A weighted graph and (b) the possible paths from vertex A to vertex H.
35
Shortest Path in an Weighted Graph
Shortest path between two given vertices Smallest edge-weight sum
Algorithm based on breadth-first traversal (Dijkstra algorithm)
Several paths in a weighted graph might have same minimum edge-weight sum Algorithm given by text finds only one of these
paths
36
Shortest Path in an Weighted Graph
Finding the cheapest path from vertex A to vertex H
in the weighted graph
37
Shortest Path in an Weighted Graph
The graph after finding the cheapest path from vertex A to vertex H.
38
Shortest Path in an Weighted Graph
Shortest Path from A to E?
39
Minimum Spanning Tree
The minimum spanning tree (MST) of a graph defines the cheapest subset of edges that keeps the graph in one connected component.
Telephone companies are particularly interested in minimum spanning trees, because the minimum spanning tree of a set of sites defines the wiring scheme that connects the sites using as little wire as possible.
40
Greedy Algorithm
Greedy algorithms work in phases. In each phase, a decision is made that appears to be good, without regard for future consequences.
A greedy algorithm makes the locally optimum choice at each phase with the hope of finding the global optimum.
41
Kruskal's Algorithm
Let G be a connected graph with n vertices Initialize n components, each one containing
one vertex of G. Now sort the edges in increasing order by
weight and set T = the empty set. Now examine each edge in turn. If an edge
joins two components, add it to T and merge the two components into one. If not, discard the edge.
Stop when only one component remains.
42
Example
43
Kruskal's Algorithm Ordered edges: [1,4], [6,7], [3,4], [1,2], [4,2], [3,1], [4,7], [3,6], [7,5], [4,5], [6,4], [2,5]
Components T (edges)1,2,3,4,5,6,7 empty[1,4], 2, 3, 5,6,7 [1,4][1,4], 2,3,5,[6,7] [1,4], [6,7][1,4,3], 2, 5,[6,7] [1,4], [6,7], [3,4][1,4,3,2], 5, [6,7] [1,4], [6,7], [3,4], [1,2][1,4,3,2,6,7], 5 [1,4], [6,7], [3,4], [1,2], [4,7][1,4,3,2,6,7,5] [1,4], [6,7], [3,4], [1,2], [4,7], [7,5]
44
MST
45
Find a MST
46
Java Interfaces for the ADT Graph
Methods in the BasicGraphInterface addVertex addEdge hasEdge isEmpty getNumberOfVertices getNumberOfEdges clear
47
Java Interfaces for the ADT Graph
A portion of the flight map
Operations of the ADT graph enable creation of a graph and
answer questions based on relationships among vertices
Operations of the ADT graph enable creation of a graph and
answer questions based on relationships among vertices
48
The Adjacency Matrix
(a) A directed graph and (b) its adjacency matrix.
49
The Adjacency Matrix
Adjacency matrix uses fixed amount of space Depends on number of vertices Does not depend on number of edges
Typically the matrix will be sparse Presence of an edge between two vertices
can be known immediately All neighbors of a vertex found by scanning
entire row for that vertex
50
The Adjacency List
Adjacency lists for the directed
graph
51
The Adjacency List
Represents only edges that originate from the vertex
Space not reserved for edges that do not exist Uses less memory than corresponding adjacency
matrix Thus more often used than adjacency matrix