graphs. 2 some examples and terminology a graph is a set of vertices (nodes) and a set of edges...

Post on 16-Dec-2015

217 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

NodesNodes

EdgesEdges

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

PathsA sequence of edges that connect two vertices in a graphIn 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 onceA 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• 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

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

TreesAll trees are graphs• But not all graphs are trees

A tree is a connected graph without cyclesTraversals• 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 ordervertexStack = a new stack to hold vertices as they are visitedMark 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 topVertexMark nextNeighbor as visitedtraversalOrder.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 alphabetic (or numeric order).

19

Breadth-First TraversalAlgorithm for breadth-first traversal of nonempty graph beginning at a given vertex

Algorithm breadthFirstTraversal(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 frontVertexMark 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

20

Breadth-First TraversalA 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

A directed graph and implementations using adjacency lists and an adjacency matrix.

A B C D

A 0 1 1 1

B 0 0 0 0

C 0 0 0 0

D 1 0 1 0

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 visitedn = number of vertices in the graphfor (counter = 1 to n) {

nextVertex = an unvisited vertex having no unvisited successorsMark nextVertex as visitedstack.push(nextVertex)

}return stack

27

Topological Sorting

Algorithm getTopologicalSort()vertexStack = a new stack to hold vertices as they are visitedn = number of vertices in the graphfor (counter = 1 to n) {

nextVertex = an unvisited vertex having no unvisited successorsMark nextVertex as visitedstack.push(nextVertex)

}return stack

28

Topological Order

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

top related