Download presentation

Presentation is loading. Please wait.

Published byDominic Cummings Modified about 1 year ago

1
Graphs

2
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
3 A portion of a road map treated as a graph Nodes Edges

4
4 A directed graph representing part of a city street map

5
5 (a) A maze; (b) its representation as a graph

6
6 The prerequisite structure for a selection of courses as a directed graph without cycles.

7
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
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
9 A weighted graph

10
10 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

11
11 Connected Graphs Undirected graphs

12
12 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
13 Note the graph with two subgraphs Each subgraph connected Entire graph disconnected Airline routes

14
14 Trees All trees are graphs 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
15 Trees Visitation order of two traversals; (a) depth first; (b) breadth first.

16
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
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
18 Depth-First Traversal Trace of a depth-first traversal beginning at vertex A. Assumes that children are placed on the stack in alphabetic (or numeric order).

19
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
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
21 Implementations of the ADT Graph A directed graph and implementations using adjacency lists and an adjacency matrix. ABCD A0111 B0000 C0000 D1010

22
22

23
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
24 Topological Order Three topological orders for the indicated graph.

25
25 Topological Order An impossible prerequisite structure for three courses as a directed graph with a cycle.

26
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
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
28 Topological Order Finding a topological order

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

30
30 Shortest Path in an Unweighted Graph The previous graph after the shortest-path algorithm has traversed from vertex A to vertex H

31
31 Shortest Path in an Unweighted Graph Finding the shortest path from vertex A to vertex H.

32
32 Shortest Path in an Weighted Graph (a) A weighted graph and (b) the possible paths from vertex A to vertex H.

33
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
34 Shortest Path in an Weighted Graph Finding the shortest path from vertex A to vertex H

35
35 Shortest Path in an Weighted Graph The previous graph after finding the shortest path from vertex A to vertex H.

36
36 Java Interfaces for the ADT Graph Methods in the BasicGraphInterface addVertex addEdge hasEdge isEmpty getNumberOfVertices getNumberOfEdges clear

Similar presentations

© 2016 SlidePlayer.com Inc.

All rights reserved.

Ads by Google