+ All Categories
Home > Documents > 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

Date post: 27-Dec-2015
Category:
Upload: prosper-bates
View: 218 times
Download: 1 times
Share this document with a friend
Popular Tags:
91
1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph
Transcript
Page 1: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

1

Abstract Data Type

We have discussed:

List

Tree

Today we will talk about Graph

Page 2: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

2

Introduction to Graphs

Several problems in the real-world can be formulated as objects and connections between them.e.g.

What is the fastest way to get from city A to city B?

What is the cheapest way to get from city A to city B?

• We need to represent :

cities and distances and

cities and costs respectively.

Page 3: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

3

Northwest Airline Flight

Boston

Hartford

Atlanta

Minneapolis

Austin

SF

Seattle

Anchorage

Page 4: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

4

Introduction to Graphs

Graphs are so important as structures that they deserve their own field called graph theory

Graph theory is a branch of combinatorial mathematics and has been studied for hundreds of years.

Our goal is to study graphs from the algorithmic point of view.

Page 5: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

5

Introduction to Graphs

Campus map Traveling salesperson Circuit layout

Project scheduling Oil flow

In many cases we are faced with a problem that is defined in terms of a number of objects that have some relationship among them. We then try to answer interesting questions.

Graphs are the basic mathematical formulation we use to tackle such problems.

Page 6: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

6

Introduction to Graphs Are all the circuits elements in a computer connected?

• This can be answered by looking at the model representing the circuits (objects) and the wiring of the circuit (connections)

Job scheduling. Some tasks have to be processed in some pre-defined order

• Graphs can be used to model the order jobs are processed

Page 7: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

7

Computer Network Or Internet

MCI

Regional NetworkComposed of other

networks

IntelCampusUmass

AT&T

Page 8: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

8

Application

Salesman’s Route Postman’s Route

Shortest route for salesman, we call it the Traveling Salesman Problem

Start

Page 9: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

9

Course Prerequisites

CSC122

Freshman Sophomore Junior Senior

CSC242

Page 10: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

10

Nomenclature of Graphs

A graph is a collection of vertices (nodes) and edges (arcs)

Nodes are objects that have names and other properties

Edges normally don't have properties but sometimes they are assigned a value – e.g. a weight.

A graph can be drawn by marking points and linking them with a line

Page 11: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

11

Applications --- Communication Network

Vertex = city, edge = communication link.

1

23

810

4 5 9 11

67

Vertex

Edge

Page 12: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

12

Graph Definition

G = (V, E) Graph = (Vertices, Edges)

V is the vertex set

Vertices are also called nodes or points

E is the edge set

Each edge connects two vertices

Page 13: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

13

Concepts of Graphs

edges (weight)

node or vertex

Page 14: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

14

Two representations of the same graph

A B

C D

E

F

A

B

C

D E

F

A graph is an object that is independent of its representation (in the computer or a pictorial)

Page 15: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

15

Graphs and their shape

In some applications the shape is used to better express the graph.

If we're representing cities as they appear in the map,

keep the shape of the map

Still, changing it will not interfere in the solution if you do.

Page 16: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

Connected Nodes

Solutions base themselves on the

list of pairs of nodes pairs of nodes

that are connectedconnected in the graph

16

Page 17: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

17

Number of Edges

V is the number of nodes (vertices) in a graph and

E represents the number of edges

The number of edges in a graph can range from

0 to V(V-1)/2.

We call a sparse graph a graph in which E is much less than V(V-1)/2.

Page 18: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

18

Sparse Graph

For example: if

N = 4 - then

E = N-1= O(E)

(E = 3)

Where E is the # of Edges

• There are a very small number of edges in a

sparse graph where N is the number of vertices.

Page 19: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

GRAPHS Definitions

We call a dense a graph in which the number of edges is close to the maximal number of edges.

We call a complete graph a graph in which E is exactly

V(V-1) / 2V(V-1) / 2

19

Page 20: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

20

Complete Graph

Total number of edges in a complete graph:

E = N(N-1)/2

if N = 4, E = 6

• There is an edge between any two vertices

Page 21: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

21

Definitions

A path from node A to node B in a graph is a list of successive connected nodes in the graph

A graph is connected if there is a path from every node to every other node in the graph

A graph that is not connected is made up of several connected components

A B

C D

E

F

A path from C to FA path from C to F

Page 22: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

22

What is a Graph?

A Graph G consists of a set V of vertices or nodes and

a set E of edges that connect the vertices.

We write G=(V,E).

v1

v5

v4

v2

v3

e1

e4

e3

e2

G=(V,E)V={v1,v2,v3,v4,v5}E={e1,e2,e3,e4}e1=(v1,v2)e2=(v2,v3)e3=(v2,v4)e4=(v3,v5)

Page 23: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

23

v1

v5v4

v2

v3 e2

e1

G=(V,E)

V={v1,v2,v3,v4,v5}

E={e1,e2}

e1=(v2,v3)e2=(v2,v4)

Graphs --- Examples

Note that not all vertices are connected

Page 24: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

24

v1

v4

v2

v3

e1

e5

e4

e2

e3

e6

A Complete Graph V(V-1)/2

Fully connected

Page 25: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

25

Directed Graphs

In some cases we want the edges to have directions associated with them:

we call such a graph a directed graph or a digraph.

G=(V,E)V={v1,v2,v3,v4}E={e1,e2,e3,e4}e1=(v2,v1)e2=(v1,v3)e3=(v1,v4)e4=(v4,v3)e5=(v3,v4)

v1

v4

v2v3

e1

e4

e2

e3

ordered pair(predecessor, successor)

Page 26: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

26

Undirected vs. Directed Graph

Undirected Graph

– no oriented edge

Directed Graph

– every edge has oriented vertex

Page 27: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

27

Weighted Graphs

In some cases, we want to associate a weight with each edge in the graph. Such a graph is known as a weighted graph.

Directed graphs(as well as undirected) can also be weighted (directed weighted graphs).

G=(V,E)V={v1,v2,v3,v4}E={e1,e2,e3,e4,e5}…………………..…………………..

v1

v4

v2

v3

40

63

15

50

75

55

Page 28: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

28

Weighted Graph

Weighted graph: a graph with numbers assigned to its edges

Weight: cost, distance, travel time, hop, etc.

0

1

3

2

20 10

1

54

Page 29: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

29

Sub-graph

Sub-graph: subset of vertices and edges

Page 30: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

MORE TERMS

A simple path is a path in which no nodes are repeated(A C E)

A cycle is a path that is simple except that the first and the last nodes are the same. (ABDA)

It is a path from a node back to itself.

30

Page 31: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

31

Simple Path

A simple path traverses a node no more than once ABCD is a simple path - its length is 3

B

C

D

A

path

Page 32: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

32

Cycle –

A cycle is a path that starts and ends at the same point

CBDC is a simple cycle.

B

C

D

A

Page 33: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

33

More Definitions

A graph with no cycles is called a tree

A spanning tree of a graph is a connected subgraph that contains all the nodes of the graph but has no cycles (a tree by definition)

A

B

C

D E

F

A

B

C

D E

F

GraphGraph

SpanningTree

SpanningTree

CycleCycle

Page 34: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

34

More Graph Terminology

A vertex vj is said to be adjacent to a different vertex vi if an edge connects vi to vj, i.e.,

e=(vi,vj).

The length of a path is the number of edges in it.

A graph with no cycles is called an acyclic graph.

A directed acyclic graph is called a DAG.

Page 35: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

35

More Graph Terminology

Two different vertices are connected if there is a path between them.

The degree of a vertex is the number of edges connected to it.

C

D

A

The degree of C is 2 – it has 2 edges

Page 36: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

36

Connected vs. Unconnected Graph

Connected Graph Unconnected Graph

Page 37: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

37

Directed Acyclic Graph

Directed Acyclic Graph (DAG) : directed graph without cycle

Examples Course Requirement Graph: DAG

Page 38: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

38

Directed Acyclic Graph

D

C

B

A

This is NOT a DAG(Directed Acyclic Graph)

ABCD is a cycle in a directed graph

Page 39: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

39

Graph Representation- Matrix

There are several ways to represent a graph in a computer program.

The two most common ways are using a• matrix or a list:

An Adjacency-matrix representation:

• Used when the graph is dense

Page 40: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

Adjacency-matrix representation:

Adjacency-matrix representation:

•In the representation of a graph G=(V,E),

• it is assumed that nodes are numbered 1,2,3,...,V.

•The matrix representation consists of a matrix Ai,j

•This matrix is normally symmetric along the main diagonal

40

Page 41: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

41

Adjacency Matrix

We have N = 20 nodes in graph

Use a Matrix A[0…N-1][0…N-1] or A[N][N]

if vertex i and vertex j are adjacent in graph, A[i][ j ] = 1,

otherwise A[i][ j ] = 0

if vertex i has a loop, A[ i ][ i ] = 1

if vertex i has no loop, A[ i ][ i ] = 0

Page 42: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

42

Adjacency Matrix--Example 1

1

4

5

6

3

2

8

7

0

0 0 1 0 0 1 0 0

0 0 0 0 0 0 1 0

0 0 0 0 0 0 1 0

0 0 0 0 1 0 0 0

0 0 0 0 0 1 0 0

0 0 1 0 0 0 0 0

0 0 0 1 0 0 0 1

0 0 0 0 0 0 0 0

0 1 2 3 4 5 6 7

0

1

2

3

4

7

5

6

0

0

0

0

0

1

0

0

8

0 0 0 0 0 0 0 08 0

Arrows mark connections

Page 43: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

43

Example of Adjacency Matrix

0

1

3

2

A[i][j] 0 1 2 3

0 0 1 1 0

1 1 0 1 1

2 1 1 0 1

3 0 1 1 0

So, Matrix A =

0 1 1 0

1 0 1 1

1 1 0 1

0 1 1 0

Page 44: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

44

Adjacency Matrix --- Example 2

8 6

8 9 9 6

0 1 2 3

0

1

2

323

0

16

8

9

The matrix is symmetric for undirected graphs.

A[2][1] =A[1][2]

Page 45: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

45

Undirected vs. Directed

Undirected graph

adjacency matrix is symmetric

A[i][j]=A[j][i]

Directed graph

adjacency matrix may not be symmetric

A[i][j] A[j][i]

Page 46: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

46

Directed Graph Matrix RepresentationNot symmetric

A[i][j] 0 1 2 3

0 0 1 1 1

1 0 0 0 1

2 0 0 0 1

3 0 0 0 0

0

1

3

2

So, Matrix A =

0 1 1 1

0 0 0 1

0 0 0 1

0 0 0 0

A[2][3] A[3][2]

Page 47: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

47

Weighted Graph – Use weights in cells

A[i][j] 0 1 2 3

0 0 10 20 1

1 10 0 0 4

2 20 0 0 5

3 1 4 5 00

1

3

2

20 10

1

54

So, Matrix A =

0 10 20 1

10 0 0 4

20 0 0 5

1 4 5 0

Page 48: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

48

Graph Representation

Another way to represent a graph uses an array of linked lists:

Adjacency-list representation:

This is preferred when the graph is sparse.

Page 49: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

Adjacency-list representation:

The adjacency list for a graph with N vertices consists of

N Linked Lists.

The ith linked list has a node for vertex j if and only if the graph contains an edge from vertex i to vertex j.

In other words, AdjList[i] is a list of all nodes adjacent to i in the graph

49

Page 50: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

50

Adjacency List --- Example 1

1

4

5

6

3

2

8

7

0

0

1

2

3

4

7

5

6

8

2 5

6

6

4

5

3 7

2 8

AdjList[]

Page 51: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

51

Adjacency List

An adjacency list is as an array of linked lists

the ith element of the array is a list of vertices that

connect to vertex i

.

Page 52: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

52

Example of Adjacency List

0

1

3

2

0

1

2

3

1 2 3

3

3

vertex 0 connect to vertex 1, 2 and 3

vertex 1 connects to 3

vertex 2 connects to 3

Page 53: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

53

Weighted Graph

Weighted graph: extend each node with an additional field:

the weight

0

1

3

2

20 10

1

54

0

1

2

3

1 10 2 20 3 1

0 10 3 4

0 20 3 5

0 1 1 4 2 5

Page 54: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

54

Adjacency List -Weighted --- Example 2

23

0

16

8

9

0

1

2

3

1 8 3 6

0 8 2 9

1 9

0 6

Page 55: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

55

Space Requirement of Representations

Which one is better?

Memory space: adjacency matrix O(N2) adjacency list O(E) where E is # of

edges

Sparse graph adjacency list is better

Dense graph same running time for both

Page 56: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

56

Comparison Of Representations where degree is the number of connected nodes

Cost Adjacency Matrix Adjacency List

Given two vertices u and v: Do a LookUP -

find out whether u and v are adjacent

O(1)

Find M[u][v]

degree of node

O(N)

Given a vertex u:

enumerate all neighbors of u

O(N)

Go through whole row

degree of node

O(N)

For all vertices:

enumerate all neighbors of each vertexO(N2)

Summations of all node degrees

O(E)

Page 57: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

57

Which is Better?

Operation 1: Is there an edge from vertex i to vertex j? Operation 2: Find all vertices adjacent to vertex i.

Time:

Operation 1 Edge?

Operation 2 Find?

O(1) Search ListO(d)

Traverse ListO(d)

Traverse rowO(n)

Matrix List

Determine which operation is most frequent.

Page 58: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

58

Which is Better?

Space:

O(n2)Matrix:

List: n + O(|E|) where E is number of edges AND N IS # OF NODES

O(n+|E|) = O(|V| + |E|)

OR THE SUM OF THE # OF EDGES AND NODES

Page 59: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

59

Graph Traversal Algorithms

Two algorithms

Breadth First Traversal - uses a queue

Depth First Traversal - uses a stack

Page 60: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

60

Breadth-first Search (BFS)

The breadth-first search in graphs will make use of shadings to identify nodes that have been visited

White nodes are nodes not yet visited

Gray nodes have been discovered but not visited, that is, not considered in the order of the breadth-first traversal

Black nodes have been visited

In the end of the breadth first search, a tree is formed.

This tree is called BFS tree.

Page 61: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

61

Breadth-first Search (Start = A ) (Queue)

A B

C D

E

F

G

H

A B

C D

E

F

G

H

Page 62: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

62

A B

C D F

G

H

Page 63: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

63

Breadth-first Search-First In - is – First out

A B

C D

E

F

G

H

AAQUEUE

Take out A and put in its children- C,D,B

Put in A to start - we will use a Queue

OUTPUT: A

Page 64: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

64

Breadth-first Search- First in First out

A B

C D

E

F

G

H

CCQUEUE DD BB

Take out C and put in its children: E,F

OUTPUT: A C

Page 65: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

65

Breadth-first Search First In - is – First out

A B

C D

E

F

G

H

DDQUEUE BB EE FF

Take out D and put in its children- all have been visited.

OUTPUT: A C D

Page 66: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

66

Breadth-first Search

A B

C D

E

F

G

H

BBQUEUE EE FFTake out B and put in its children:G

OUTPUT: A C D B

Page 67: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

67

Breadth-first Search

A B

C D

E

F

G

H

EEQUEUE FF GG

Take out E and put in its children – no unvisited children

OUTPUT: A C D B E

Page 68: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

68

Breadth-first Search

A B

C D

E

F

G

H

FFQUEUE GG

Take out F and put in its children

OUTPUT: A C D B E F

Page 69: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

69

Breadth-first Search

A B

C D

E

F

G

H

GGQUEUE HH

Take out G and put in its children

OUTPUT: A C D B E F G

Page 70: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

70

Breadth-first Search

A B

C D

E

F

G

H

HHQUEUE Take out H and Queue is empty

OUTPUT: A C D B E F G H

Page 71: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

71

Breadth-first Search

A B

C D

E

F

G

H

QUEUE is empty

Page 72: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

DEPTH FIRST SEARCH

The other major graph traversal is Depth First Search Depth First Search which searches deeper into the graphdeeper into the graph.

Now the ADT used is a stack ADT used is a stack - with the last one in is the first one last one in is the first one out approach.out approach.

The children of the first node are put in the stack, then the last child added is removed and its children are put in.

Then last of the child’s children is taken out and its children are put in. And so on……..

72

Page 73: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

73

Depth-first Search (Start = A)- Use Stack

A B

C D

E

F

G

H

OUTPUT: A

Page 74: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

74

Depth-first Search

A B

C D

E

F

G

H

AASTACKTake out A and put in its children: C, D, B

OUTPUT: A

Page 75: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

75

Depth-first Search

A B

C D

E

F

G

H

CCSTACK DD BB

Take out B and put in its unvisited children : G

OUTPUT: A B

Page 76: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

76

Depth-first Search

A B

C D

E

F

G

H

CCSTACK DD GG

Take out G and put in its unvisited children :H

OUTPUT: A B G

Page 77: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

77

Depth-first Search

A B

C D

E

F

G

H

CCSTACK DD HHTake out H and put in its unvisited children :F

OUTPUT: A B G H

Page 78: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

78

Depth-first Search

A B

C D

E

F

G

H

CCSTACK DD FF

Take out F and put in its children- no unvisited children

OUTPUT: A B G H F

Page 79: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

79

Depth-first Search

A B

C D

E

F

G

H

CCSTACK DDTake out D and put in its children – no unvisited children

OUTPUT: A B G H F D

Page 80: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

80

Depth-first Search

A B

C D

E

F

G

H

CCSTACK

Take out C and ADD E

OUTPUT: A B G H F D C

Page 81: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

81

Depth-first Search

A B

C D

E

F

G

H

EESTACK

Take out E and put in its children – no unvisited children and Stack is empty

OUTPUT: A B G H F D C E

Page 82: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

82

Depth-first Search

A B

C D

E

F

G

H

STACK is emptyOUTPUT: A B G H F D C E

Page 83: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

83

Graph Traversals --- Basic Algorithm

Depth First Search = structure used for storagewhile (An un-VISITED vertex exists) { Initialize vertex vI ;

mark it as VISITED

while ( stack is not empty) { remove a vertex vj from stack visit vj

add un-VISITED vertices adjacent to vj to stack; mark each as VISITED }}

Page 84: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

84

Recursive Depth-First Algorithm

1

4

56

3

2

DepthFirstSearch(vi)

{ visit vj; mark vi as VISITED

for each un-VISITED vertex vj adjacent to vi

DepthFirstSearch (vj) }

Page 85: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

85

Graph Traversal

List out all cities that United Airlines can reach from Hartford Airport

CHI

LA

SF

NYC

Hartford

W. DC

Page 86: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

86

Demos For Traversal Algorithm

Step 1: { Hartford } find neighbors of Hartford { Hartford, NYC, CHI }

CHI

NYC

LA

SF Hartford

W. DC

Page 87: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

87

Demos For Traversal Algorithm

Step 2: { Hartford, NYC, CHI } find neighbors of NYC, CHI NYC goes to LA, CHI goes to SF

{ Hartford, NYC, CHI, LA, SF }CHI

NYC

LA

SF Hartford

W. DC

Page 88: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

88

Demos For Traversal Algorithm

Step 3: {Hartford, NYC, CHI, LA, SF } find neighbors of LA, SF no other new neighbors

CHI

NYC

LA

SF Hartford

W. DC

Page 89: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

89

Demos For Traversal Algorithm

Finally we get all cities that United Airlines can reach from Hartford Airport {Hartford, NYC, CHI, LA, SF }

CHI

NYC

LA

SF Hartford

W. DC

Page 90: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

90

Graph Traversals

Traversal: visit each vertex in the graph once and only onceTraversal: visit each vertex in the graph once and only once. This is an a matrix of vertices.

1

4

56

3

2

79

8

1

1

1 1

1 2 3

1

4

1

2

3

1

1

5

1

14 1

6

1 1 15 1

7 8

16 1

7 1

8 1

9

1

1

9 1 1

Page 91: 1 Abstract Data Type We have discussed: List Tree Today we will talk about Graph.

91

Elementary Graph Operations

Graph traversals provide the basis for many elementary graph operations:

Spanning trees on graphsSpanning trees on graphs

Graph cycles Graph cycles

Connected components of a graphConnected components of a graph


Recommended