Presentation is loading. Please wait.

Presentation is loading. Please wait.

Graphs.

Similar presentations


Presentation on theme: "Graphs."— Presentation transcript:

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.

22

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


Download ppt "Graphs."

Similar presentations


Ads by Google