Download presentation
Presentation is loading. Please wait.
1
Graphs
2
Some Examples and Terminology
A graph is a set of vertices (nodes) and a set of edges (arcs) such that each edge is associated with exactly two vertices Edges can be undirected or directed (digraph) A subgraph is a portion of a graph that itself is a graph
3
A portion of a road map treated as a graph
Nodes Edges A portion of a road map treated as a graph
4
A directed graph representing part of a city street map
5
(a) A maze; (b) its representation as a graph
6
The prerequisite structure for a selection of courses as a directed graph without cycles.
7
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 and does not pass through any vertex more than once A graph with no cycles is acyclic
8
Weights A weighted graph has values on its edges
Weights, costs, etc. 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
9
A weighted graph
10
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
11
Connected Graphs Undirected graphs
12
Vertex A is adjacent to B, but B is not adjacent to A.
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.
13
Note the graph with two subgraphs
Each subgraph connected Entire graph disconnected Airline routes
14
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 (and, technically, inorder and postorder) traversals are examples of depth-first traversal Level-order traversal of a tree is an example of breadth-first traversal Visit a node Process the node’s data and/or mark the node as visited
15
Trees Visitation order of two traversals; (a) depth first; (b) breadth first.
16
Depth-First Traversal
Visits a vertex, then A neighbor of the vertex, A neighbor of the neighbor, Etc. Advance as far as possible from the original vertex Then back up by one vertex Considers the next neighbor
17
Algorithm depthFirstTraversal (originVertex)
traversalOrder = a new queue for the resulting traversal order vertexStack = a new stack to hold vertices as they are visited Mark originVertex as visited traversalOrder.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 visited traversalOrder.enqueue (nextNeighbor) vertexStack.push (nextNeighbor) } else // all neighbors are visited vertexStack.pop () return traversalOrder
18
Depth-First Traversal
Trace of a depth-first traversal beginning at vertex A. Assumes that children are placed on the stack in reverse alphabetic (or numeric order).
19
Breadth-First Traversal
Algorithm for breadth-first traversal of nonempty graph beginning at a given vertex Algorithm breadthFirstTraversal(originVertex) vertexQueue = a new queue to hold neighbors traversalOrder = a new queue for the resulting traversal order Mark originVertex as visited traversalOrder.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 visited traversalOrder.enqueue(nextNeighbor) vertexQueue.enqueue(nextNeighbor) } } return traversalOrder A breadth-first traversal visits a vertex and then each of the vertex's neighbors before advancing
20
Breadth-First Traversal
A trace of a breadth-first traversal for a directed graph, beginning at vertex A. Assumes that children are placed in the queue in alphabetic (or numeric order).
21
Implementations of the ADT Graph
B C D 1 A directed graph and implementations using adjacency lists and an adjacency matrix.
23
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
24
Topological Order Three topological orders for the indicated graph.
25
Topological Order An impossible prerequisite structure for three courses as a directed graph with a cycle.
26
Topological Order Algorithm for a topological sort
Algorithm getTopologicalSort() vertexStack = a new stack to hold vertices as they are visited n = number of vertices in the graph for (counter = 1 to n) { nextVertex = an unvisited vertex having no unvisited successors Mark nextVertex as visited stack.push(nextVertex) } return stack
27
Topological Sorting Algorithm getTopologicalSort() vertexStack = a new stack to hold vertices as they are visited n = number of vertices in the graph for (counter = 1 to n) { nextVertex = an unvisited vertex having no unvisited successors Mark nextVertex as visited stack.push(nextVertex) } return stack
28
Finding a topological order
29
Shortest Path in an Unweighted Graph
(a) an unweighted graph and (b) the possible paths from vertex A to vertex H.
30
Shortest Path in an Unweighted Graph
The previous graph after the shortest-path algorithm has traversed from vertex A to vertex H
31
Shortest Path in an Unweighted Graph
Finding the shortest path from vertex A to vertex H.
32
Shortest Path in an Weighted Graph
(a) A weighted graph and (b) the possible paths from vertex A to vertex H.
33
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
34
Shortest Path in an Weighted Graph
Finding the shortest path from vertex A to vertex H
35
Shortest Path in an Weighted Graph
The previous graph after finding the shortest path from vertex A to vertex H.
36
Java Interfaces for the ADT Graph
Methods in the BasicGraphInterface addVertex addEdge hasEdge isEmpty getNumberOfVertices getNumberOfEdges clear
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.