/
Graphs - II Graphs - II

Graphs - II - PowerPoint Presentation

ellena-manuel
ellena-manuel . @ellena-manuel
Follow
384 views
Uploaded On 2017-03-20

Graphs - II - PPT Presentation

CS 2110 Spring 2016 1 Where did David leave that book httpwwwgeahvetcom 2 Where did David leave that book httpwwwgeahvetcom 3 Where did David leave that book httpwwwgeahvetcom ID: 527279

node nodes reachable search nodes node search reachable green depth visited visited

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Graphs - II" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Graphs - II

CS 2110, Spring 2016

1Slide2

Where did David leave that book?

http://www.geahvet.com

2Slide3

Where did David leave that book?

http://www.geahvet.com

3Slide4

Where did David leave that book?

http://www.geahvet.com

Go as far down a path as possible before backtracking –

Depth-First Search

4Slide5

Graph Algorithms

SearchDepth

-first searchBreadth-first searchShortest paths

Dijkstra's algorithmMinimum spanning treesPrim's algorithmKruskal's algorithm

5Slide6

Reachability

Node v is reachable from node u if there is a path from u to

v.

1

0

2

5

3

4

6

Which nodes are reachable from node

1

?

6Slide7

Reachability

Node v is reachable from node u if there is a path from u to

v.

1

0

2

5

3

4

6

Which nodes are reachable from node

1

?

0, 1, 2, 3, 5

7Slide8

Reachability

Node v is reachable from node u if there is a path from u to

v.

1

0

2

5

3

4

6

Which nodes are reachable from node

4

?

8Slide9

Reachability

Node v is reachable from node u if there is a path from u to

v.

1

0

2

5

3

4

6

Which nodes are reachable from node

4

?

3, 4, 5, 6

9Slide10

Reachability

How to determine reachability efficiently?

We need an invariant!

10Slide11

Reachability

Node v is reachable from node u without green nodes

if there is a path from u to v without green nodes.

1

0

2

5

3

4

6

Which nodes are reachable from node

1

without green nodes

?

11Slide12

Reachability

Node v is reachable from node u without green nodes

if there is a path from u to v without green nodes.

1

0

2

5

3

4

6

Which nodes are reachable from node

1

without green nodes

?

1

12Slide13

Reachability

Node v is reachable from node u without green nodes

if there is a path from u to v without green nodes.

1

0

2

5

3

4

6

Which nodes are reachable from node

4

without green nodes

?

13Slide14

Reachability

Node v is reachable from node u without green nodes

if there is a path from u to v without green nodes.

1

0

2

5

3

4

6

Which nodes are reachable from node

4

without green nodes

?

None!

Node

4

is green, so all paths from node

4

contain a green node!

14Slide15

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Which nodes are reachable from node 1?

1

0

2

5

3

4

6

15Slide16

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Start at node

1

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

16Slide17

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Extend path to some child

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

17Slide18

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Extend path to some child

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

18Slide19

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

No new way to extend path, so backtrack

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

19Slide20

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Extend path to

a different child

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

20Slide21

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Extend path to

some child

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

21Slide22

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Already visited, so backtrack

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

22Slide23

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

No new way to extend path, so backtrack

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

23Slide24

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

No new way to extend path, so backtrack

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

24Slide25

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Extend path to a different child

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

25Slide26

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Extend path to

some child

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

26Slide27

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Already visited, so backtrack

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

27Slide28

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

No new way to extend path, so backtrack

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

28Slide29

Depth-First Search

Keep pushing the search forwardMark nodes as “visited” (green) as you go

Backtrack only when you can’t go any further

Nothing to backtrack, so all done!

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

29Slide30

Depth-First Search using Recursion

/** Visit all nodes reachable from u without visited nodes */

void dfs(Node u) {

if (u.hasBeenVisited()) return

;

}

1

0

2

5

3

6

Which nodes are reachable from node

4

without green nodes

?

None!

4

30Slide31

Depth-First Search using Recursion

/** Visit all nodes reachable from u without visited nodes */

void dfs(Node u) {

if (u.hasBeenVisited()) return

;

}

0

2

5

3

4

6

1

31Slide32

Depth-First Search using Recursion

/** Visit all nodes reachable from u without visited nodes */

void dfs(Node u) {

if (u.hasBeenVisited()) return

;

u.visit

();

for

(Node v with edge from u to v)

dfs

(v);

}

5

3

4

6

1

0

2

32Slide33

Depth-First Search using Recursion

/** Visit all nodes reachable from u without visited nodes */

void dfs(Node u) {

if (u.hasBeenVisited()) return

;

u.visit

();

for

(Node v with edge from u to v)

dfs

(v);

}

5

3

4

6

1

0

2

33Slide34

Depth-First Search using Recursion

/** Visit all nodes reachable from u without visited nodes */

void dfs(Node u) {

if (u.hasBeenVisited()) return

;

u.visit

();

for

(Node v with edge from u to v)

dfs

(v);

}

5

3

4

6

1

0

2

34Slide35

OO-style Recursive Depth-First Search

35

class Node {

final List<Node> targets; // edges go from

this

to targets

boolean

visited=

false

;

// has this node been visited?

Node(Node… targets) {

this

.targets

=

Arrays.asList

(targets); }

/*Visit all nodes reachable from this without visited nodes*/

void

dfs

()

{

if (

visited)

return;

visited= true;

for

(Node v : targets) v.dfs

(); }

}Slide36

Depth-First Search using Iteration

/** Visit all nodes reachable from

u without visited nodes */void dfs(Node u) {

Collection<Node> work= new Stack<Node>(); work.add(u);

//

inv

: all nodes that have to be visited are

//

reachable (without visited nodes)

from some node in work

while

( ) {

Node u=

work.pop

();

// Remove first node and put it in u

if

( ) { u.visit();

for (Node v with edge from u to v)

work.add(v); // Stack adds nodes to front

} }}

!work.isEmpty()

!u.hasBeenVisited()

36Slide37

Breadth-First Search

Mark closest nodes as “visited” (green) firstThen push search out further

Which nodes are reachable from node

1?

1

0

2

5

3

4

6

37Slide38

Breadth-First Search

Mark closest nodes as “visited” (green) firstThen push search out further

Visit nodes distance 0 from node

1

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

38Slide39

Breadth-First Search

Mark closest nodes as “visited” (green) firstThen push search out further

Visit nodes distance 1 from node

1

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

39Slide40

Breadth-First Search

Mark closest nodes as “visited” (green) firstThen push search out further

Visit nodes distance 2 from node

1

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

40Slide41

Breadth-First Search

Mark closest nodes as “visited” (green) firstThen push search out further

No nodes at distance 3, so all done!

Which nodes are reachable from node

1

?

1

0

2

5

3

4

6

41Slide42

Depth-First Search using Iteration

/** Visit all nodes reachable from

u without visited nodes */void dfs(Node u) {

Collection<Node> work= new Stack<Node>(); work.add(u);

//

inv

: all nodes that have to be visited are

//

reachable (without visited nodes)

from some node in work

while

(!

work.isEmpty

())

{

Node u= work.pop(); // Remove first node and put it in u

if (!

u.hasBeenVisited()) { u.visit

(); for (Node v with edge from u to v)

work.add(v); // Stack adds nodes to front

} }

}42Slide43

Breadth-First Search using Iteration

/** Visit all nodes reachable from

u without visited nodes */void bfs(Node u) {

Collection<Node> work= new Queue<Node>();

work.add

(u);

//

inv

: all nodes that have to be visited are

//

reachable (without visited nodes)

from some node in work

while

(!

work.isEmpty

())

{ Node u= work.pop

(); // Remove first node and put it in u if

(!u.hasBeenVisited()) {

u.visit();

for (Node v with edge from u to v) work.add(v);

// Queue adds nodes to back }

}}43