ECE 242 Data Structures Lecture 29 Graph Traversal November 23, - - PDF document

ece 242
SMART_READER_LITE
LIVE PREVIEW

ECE 242 Data Structures Lecture 29 Graph Traversal November 23, - - PDF document

ECE 242 Data Structures Lecture 29 Graph Traversal November 23, 2009 ECE242 L29: Graph Traversal Overview Problem: How can we efficiently visit all vertices in the graph? Depth first search Quickly follow paths between vertices


slide-1
SLIDE 1

ECE242 L29: Graph Traversal November 23, 2009

ECE 242 Data Structures

Lecture 29

Graph Traversal

ECE242 L29: Graph Traversal November 23, 2009

Overview °Problem: How can we efficiently visit all vertices in the graph? °Depth first search

  • Quickly follow paths between vertices

°Breadth first search

  • Visit all neighbors of a vertex

°Compact algorithms available to perform traversals

  • Note Galaxy example and cheap flights example

°Useful for many applications

slide-2
SLIDE 2

ECE242 L29: Graph Traversal November 23, 2009

Graph Traversal °List out all cities that United Airline can reach from Hartford Airport

CHI

LA SF

NYC

Hartford

  • W. DC

ECE242 L29: Graph Traversal November 23, 2009

Graph Traversal °From vertex u, list out all vertices that u can reach via graph G °Set of nodes to expand °Each node has a flag to indicate visited or not °Keep visiting until all vertices are visited °Some nodes may not be connected

slide-3
SLIDE 3

ECE242 L29: Graph Traversal November 23, 2009

Demos For Traversal Algorithm °Step 1: { Hartford }

  • find neighbors of Hartford
  • { Hartford, NYC, CHI }

CHI NYC

LA SF Hartford

  • W. DC

ECE242 L29: Graph Traversal November 23, 2009

Demos For Traversal Algorithm °Step 2: { Hartford, NYC, CHI }

  • find neighbors of NYC, CHI
  • { Hartford, NYC, CHI, LA, SF }

CHI NYC

LA SF Hartford

  • W. DC
slide-4
SLIDE 4

ECE242 L29: Graph Traversal November 23, 2009

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

ECE242 L29: Graph Traversal November 23, 2009

Demos For Traversal Algorithm °Finally we get all cities that United Airline can reach from Hartford Airport

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

CHI NYC

LA SF Hartford

  • W. DC
slide-5
SLIDE 5

ECE242 L29: Graph Traversal November 23, 2009

Algorithm of Graph Traversal

1. Mark all nodes as unvisited 2. Pick a starting vertex u, add u to probing list 3. While ( probing list is not empty) { Remove a node v from probing list Mark node v as visited For each neighbor w of v, if w is unvisited, add w to the probing list }

ECE242 L29: Graph Traversal November 23, 2009

Graph Traversal ° Source vertex

  • We must choose an arbitrary vertex to start from.

° Depth-first traversal

  • Follows edges until it reaches a dead end, then backtracks to

the last branching point.

° Breadth-first

  • Visits one vertex, then its neighbors, then vertices two edges

away, and so on.

slide-6
SLIDE 6

ECE242 L29: Graph Traversal November 23, 2009

Graph Traversal ° Depth-first traversal

Note that all 8 nodes are visited eventually Start

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal

° Probing List is implemented as stack (LIFO) ° Example

  • A’s neighbor: B, C, E
  • B’s neighbor: A, C, F
  • C’s neighbor: A, B, D
  • D’s neighbor: E, C, F
  • E’s neighbor: A, D
  • F’s neighbor: B, D
  • start from vertex A

A B C E F D

slide-7
SLIDE 7

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont) °Initial State

  • Visited Vertices { }
  • Probing Vertices { A }
  • Unvisited Vertices { A, B, C, D, E, F }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

A stack

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is A, mark it as visited ° Find A’s first unvisited neighbor, push it into stack

  • Visited Vertices { A }
  • Probing vertices { A, B }
  • Unvisited Vertices { B, C, D, E, F }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

B A stack A

slide-8
SLIDE 8

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is B, mark it as visited ° Find B’s first unvisited neighbor, push it in stack

  • Visited Vertices { A, B }
  • Probing Vertices { A, B, C }
  • Unvisited Vertices { C, D, E, F }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

C B A stack B A A B C E F D

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is C, mark it as visited ° Find C’s first unvisited neighbor, push it in stack

  • Visited Vertices { A, B, C }
  • Probing Vertices { A, B, C, D }
  • Unvisited Vertices { D, E, F }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D D C B A C B A

slide-9
SLIDE 9

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is D, mark it as visited ° Find D’s first unvisited neighbor, push it in stack

  • Visited Vertices { A, B, C, D }
  • Probing Vertices { A, B, C, D, E }
  • Unvisited Vertices { E, F }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D D C B E A D C B A

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is E, mark it as visited ° Find E’s first unvisited neighbor, no vertex found, Pop E

  • Visited Vertices { A, B, C, D, E }
  • Probing Vertices { A, B, C, D }
  • Unvisited Vertices { F }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D D C B A D C B E A

slide-10
SLIDE 10

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is D, mark it as visited ° Find D’s first unvisited neighbor, push it in stack

  • Visited Vertices { A, B, C, D, E }
  • Probing Vertices { A, B, C, D, F}
  • Unvisited Vertices { F }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D D C B F A D C B A

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is F, mark it as visited ° Find F’s first unvisited neighbor, no vertex found, Pop F

  • Visited Vertices { A, B, C, D, E, F }
  • Probing Vertices { A, B, C, D}
  • Unvisited Vertices { }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D D C B A D C B F A

slide-11
SLIDE 11

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is D, mark it as visited ° Find D’s first unvisited neighbor, no vertex found, Pop D

  • Visited Vertices { A, B, C, D, E, F }
  • Probing Vertices { A, B, C }
  • Unvisited Vertices { }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D C B A D C B A

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is C, mark it as visited ° Find C’s first unvisited neighbor, no vertex found, Pop C

  • Visited Vertices { A, B, C, D, E, F }
  • Probing Vertices { A, B }
  • Unvisited Vertices { }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D B A C B A

slide-12
SLIDE 12

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is B, mark it as visited ° Find B’s first unvisited neighbor, no vertex found, Pop B

  • Visited Vertices { A, B, C, D, E, F }
  • Probing Vertices { A }
  • Unvisited Vertices { }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D A B A

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Peek a vertex from stack, it is A, mark it as visited ° Find A’s first unvisited neighbor, no vertex found, Pop A

  • Visited Vertices { A, B, C, D, E, F }
  • Probing Vertices { }
  • Unvisited Vertices { }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D A

slide-13
SLIDE 13

ECE242 L29: Graph Traversal November 23, 2009

Depth First Traversal (Cont)

° Now probing list is empty ° End of Depth First Traversal

  • Visited Vertices { A, B, C, D, E, F }
  • Probing Vertices { }
  • Unvisited Vertices { }

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

stack A B C E F D

ECE242 L29: Graph Traversal November 23, 2009

Graph Traversal ° Breadth-first traversal

Start Visit ALL neighbors at each step

slide-14
SLIDE 14

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal

° Probing List is implemented as queue (FIFO) ° Example

  • A’s neighbor: B C E
  • B’s neighbor: A C F
  • C’s neighbor: A B D
  • D’s neighbor: E C F
  • E’s neighbor: A D
  • F’s neighbor: B D
  • start from vertex A

A B C E F D

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont) °Initial State

  • Visited Vertices { }
  • Probing Vertices { A }
  • Unvisited Vertices { A, B, C, D, E, F }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

A queue

slide-15
SLIDE 15

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Delete first vertex from queue, it is A, mark it as visited ° Find A’s all unvisited neighbors, mark them as visited, put them into queue

  • Visited Vertices { A, B, C, E }
  • Probing Vertices { B, C, E }
  • Unvisited Vertices { D, F }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

A queue B E C

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Delete first vertex from queue, it is B, mark it as visited ° Find B’s all unvisited neighbors, mark them as visited, put them into queue

  • Visited Vertices { A, B, C, E, F }
  • Probing Vertices { C, E, F }
  • Unvisited Vertices { D }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

B E C queue C F E

slide-16
SLIDE 16

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Delete first vertex from queue, it is C, mark it as visited ° Find C’s all unvisited neighbors, mark them as visited, put them into queue

  • Visited Vertices { A, B, C, E, F, D }
  • Probing Vertices { E, F, D }
  • Unvisited Vertices { }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

C F E queue E D F

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Delete first vertex from queue, it is E, mark it as visited ° Find E’s all unvisited neighbors, no vertex found

  • Visited Vertices { A, B, C, E, F, D }
  • Probing Vertices { F, D }
  • Unvisited Vertices { }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

E D F queue F D

slide-17
SLIDE 17

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Delete first vertex from queue, it is F, mark it as visited ° Find F’s all unvisited neighbors, no vertex found

  • Visited Vertices { A, B, C, E, F, D }
  • Probing Vertices { D }
  • Unvisited Vertices { }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

F D queue D

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Delete first vertex from queue, it is D, mark it as visited ° Find D’s all unvisited neighbors, no vertex found

  • Visited Vertices { A, B, C, E, F, D }
  • Probing Vertices { }
  • Unvisited Vertices { }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

D queue

slide-18
SLIDE 18

ECE242 L29: Graph Traversal November 23, 2009

Breadth First Traversal (Cont)

° Now the queue is empty ° End of Breadth First Traversal

  • Visited Vertices { A, B, C, E, F, D }
  • Probing Vertices { }
  • Unvisited Vertices { }

A B C E F D

– A’s neighbor: B C E – B’s neighbor: A C F – C’s neighbor: A B D – D’s neighbor: E C F – E’s neighbor: A D – F’s neighbor: B D

queue

ECE242 L29: Graph Traversal November 23, 2009

Difference Between DFT & BFT °Depth First Traversal (DFT)

  • order of visited: A, B, C, D, E, F

°Breadth First Traversal (BFT)

  • order of visited: A, B, C, E, F, D

A B C E F D

slide-19
SLIDE 19

ECE242 L29: Graph Traversal November 23, 2009

Complexity of Graph Traversal °Adjacency Matrix Cost: O(N*N) = O(N2) °Adjacency List

For each node v, degree of node v Sum of degree(v) = 2E Cost: O(E)