graphs p
play

Graphs p Carola Wenk Slides courtesy of Charles Leiserson with - PowerPoint PPT Presentation

CMPS 2200 Fall 2012 Graphs p Carola Wenk Slides courtesy of Charles Leiserson with Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk 10/3/12 CMPS 2200 Intro. to Algorithms 1 Graphs (review) p ( )


  1. CMPS 2200 – Fall 2012 Graphs p Carola Wenk Slides courtesy of Charles Leiserson with Slides courtesy of Charles Leiserson with changes and additions by Carola Wenk 10/3/12 CMPS 2200 Intro. to Algorithms 1

  2. Graphs (review) p ( ) Definition. A directed graph ( digraph ) G = ( V E ) is an ordered pair consisting of G ( V , E ) is an ordered pair consisting of • a set V of vertices (singular: vertex ), • a set E ⊆ V × V of edges . • a set E ⊆ V × V of edges In an undirected graph G = ( V , E ), the edge set E consists of unordered pairs of vertices set E consists of unordered pairs of vertices. In either case, we have | E | = O (| V| 2 ). Moreo er if G is connected then | E | ≥ | V | Moreover, if G is connected, then | E | ≥ | V | – 1. 1 10/3/12 CMPS 2200 Intro. to Algorithms 2

  3. Adjacency-matrix representation representation The adjacency matrix of a graph G = ( V , E ), where V V = {1, 2, …, n }, is the matrix A [1 . . n , 1 . . n ] {1 2 } i h i A [1 1 ] given by 1 if ( i , j ) ∈ E, 1 if ( i j ) ∈ E A [ i , j ] = 0 if ( i , j ) ∉ E. A 1 2 3 4 Θ (| V| 2 ) storage 2 1 1 0 1 1 0 (| | ) g ⇒ dense 2 0 0 1 0 representation. 3 0 0 0 0 3 4 4 0 0 1 0 10/3/12 CMPS 2200 Intro. to Algorithms 3

  4. Adjacency-list representation j y p An adjacency list of a vertex v ∈ V is the list Adj [ v ] of vertices adjacent to v of vertices adjacent to v . Adj [1] = {2, 3} 2 1 Adj [2] {3} Adj [2] = {3} Adj [3] = {} 3 4 Adj [4] = {3} For undirected graphs, | Adj [ v ] | = degree ( v ). For digraphs, | Adj [ v ] | = out-degree ( v ). 10/3/12 CMPS 2200 Intro. to Algorithms 4

  5. Adjacency-list representation j y p Handshaking Lemma: Every edge is counted twice • For undirected graphs: ∑ ∑ v ∈ V degree(v) = 2 | E | d ( ) 2 | E | • For digraphs: ∑ ∑ v ∈ V in-degree(v) + ∑ v ∈ V out-degree(v) = 2 | E | ( ) + ∑ i d t d ( ) 2 | E | ⇒ adjacency lists use Θ (| V| + |E| ) storage Θ (| V| + |E| ) dj li ⇒ a sparse representation ⇒ We usually use this representation ⇒ We usually use this representation, unless stated otherwise 10/3/12 CMPS 2200 Intro. to Algorithms 5

  6. Graph Traversal p Let G =( V E ) be a (directed or undirected) Let G =( V , E ) be a (directed or undirected) graph, given in adjacency list representation. | V | = n , | E | = m A graph traversal visits every vertex: • Breadth-first search (BFS) • Depth-first search (DFS) D h fi h (DFS) 10/3/12 CMPS 2200 Intro. to Algorithms 6

  7. Breadth-First Search (BFS) ( ) BFS( G= ( V,E )) Mark all vertices in G as “unvisited” // time=0 Mark all vertices in G as unvisited // time 0 Initialize empty queue Q for each vertex v ∈ V do if v is unvisited if v is unvisited visit v // time++ BFS_iter( G ) Q .enqueue( v ) while Q is non empty do while Q is non-empty do BFS_iter( G ) v = Q .dequeue() for each w adjacent to v do if if w is unvisited i i it d visit w // time++ Add edge ( v , w ) to T Q .enqueue( w ) 10/3/12 CMPS 2200 Intro. to Algorithms 7

  8. 8 Example of breadth-first h g CMPS 2200 Intro. to Algorithms i f d d e search search Q : Q : a b c c 10/3/12

  9. 9 Example of breadth-first h g CMPS 2200 Intro. to Algorithms i f d d e search search 0 Q: a Q: a a b c c 0 10/3/12

  10. 10 Example of breadth-first h g CMPS 2200 Intro. to Algorithms i f d d 1 2 Q: a b d Q: a b d 2 e search search a b c c 0 1 10/3/12

  11. Example of breadth-first search search a i h 0 2 d d b f 1 e g c c 4 4 3 3 2 3 4 Q: a b d c e Q: a b d c e 10/3/12 CMPS 2200 Intro. to Algorithms 11

  12. Example of breadth-first search search a i h 0 2 d d b f 1 e g c c 4 4 3 3 3 4 Q: a b d c e Q: a b d c e 10/3/12 CMPS 2200 Intro. to Algorithms 12

  13. 13 Example of breadth-first h g CMPS 2200 Intro. to Algorithms i f 4 Q: a b d c e Q: a b d c e d d 2 e 4 4 search search a b c c 0 1 3 3 10/3/12

  14. Example of breadth-first search search a i h 0 2 d d 5 b f 1 e g c c 4 4 6 6 3 3 5 6 Q: a b d c e f g Q: a b d c e f g 10/3/12 CMPS 2200 Intro. to Algorithms 14

  15. Example of breadth-first search search 7 a i h 0 2 d d 5 b f 1 e g c c 4 4 6 6 3 3 6 7 Q: a b d c e f g i Q: a b d c e f g i 10/3/12 CMPS 2200 Intro. to Algorithms 15

  16. Example of breadth-first search search 7 8 a i h 0 2 d d a a 5 b f 1 e g c c 4 4 6 6 3 3 7 8 Q: a b d c e f g i h Q: a b d c e f g i h 10/3/12 CMPS 2200 Intro. to Algorithms 16

  17. Example of breadth-first search search 7 8 a i h 0 2 d d a a 5 b f 1 e g c c 4 4 6 6 3 3 8 Q: a b d c e f g i h Q: a b d c e f g i h 10/3/12 CMPS 2200 Intro. to Algorithms 17

  18. Example of breadth-first search search 7 8 a i h 0 2 d d a a 5 b f 1 e g c c 4 4 6 6 3 3 Q: a b d c e f g i h Q: a b d c e f g i h 10/3/12 CMPS 2200 Intro. to Algorithms 18

  19. Example of breadth-first search search 7 8 a i h 0 2 d d a a 5 b f 1 e g c c 4 4 6 6 3 3 Q: a b d c e f g i h Q: a b d c e f g i h 10/3/12 CMPS 2200 Intro. to Algorithms 19

  20. Breadth-First Search (BFS) ( ) BFS( G= ( V,E )) Mark all vertices in G as “unvisited” // time=0 Mark all vertices in G as unvisited // time 0 O( ) O( n ) Initialize empty queue Q O(1) for each vertex v ∈ V do if v is unvisited if v is unvisited O( n ) visit v // time++ BFS_iter( G ) without Q .enqueue( v ) while Q is non-empty do while Q is non empty do BFS_iter BFS iter BFS_iter( G ) v = Q .dequeue() for each w adjacent to v do if if w is unvisited i i it d O( m ) visit w // time++ O( deg ( v )) Add edge ( v , w ) to T Q .enqueue( w ) 10/3/12 CMPS 2200 Intro. to Algorithms 20

  21. BFS runtime • Each vertex is marked as unvisited in the beginning ⇒ O( n ) time • Each vertex is marked at most once, enqueued at most once, and therefore dequeued at most once • The time to process a vertex is proportional to the size of its The time to process a vertex is proportional to the size of its adjacency list (its degree), since the graph is given in adjacency list representation ⇒ O( ) ti ⇒ O( m ) time • Total runtime is O( n + m ) = O(|V| + |E|) 10/3/12 CMPS 2200 Intro. to Algorithms 21

  22. Depth-First Search (DFS) p ( ) DFS( G= ( V,E )) Mark all vertices in G as “unvisited” // time=0 for each vertex v ∈ V do f h V d if v is unvisited DFS_rec( G , v ) _ ( ) DFS_rec( G, v ) mark v as “visited” // d [ v ]=++time for each w adjacent to v do if w is unvisited Add edge ( v , w ) to tree T g ( , ) DFS_rec( G , w ) mark v as “finished” // f [ v ]=++time 10/3/12 CMPS 2200 Intro. to Algorithms 22

  23. Example of depth-first search p p d / f 0/- a a i h d d b f e g c c Store edges in π : a b c d e f g h i predecessor array a - 10/3/12 CMPS 2200 Intro. to Algorithms 23

  24. Example of depth-first search p p d / f 0/- a i h d d 1/- b f e g c c Store edges in π : a b c d e f g h i predecessor array a b - 10/3/12 CMPS 2200 Intro. to Algorithms 24

  25. Example of depth-first search p p d / f 0/- a i h d d 1/- b f e g 2/3 c 2/- 2/ 2/3 c Store edges in π : a b c d e f g h i predecessor array a b - 10/3/12 CMPS 2200 Intro. to Algorithms 25

  26. Example of depth-first search p p d / f 0/- a i h d d 1/- b f e g 2/3 c 2/3 c Store edges in π : a b c d e f g h i predecessor array a b - b 10/3/12 CMPS 2200 Intro. to Algorithms 26

  27. Example of depth-first search p p d / f 0/- a i h d d 1/- b f e g 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b b e - 10/3/12 CMPS 2200 Intro. to Algorithms 27

  28. Example of depth-first search p p d / f 0/- a i h d d 5/- 1/- b f e g 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b e f - b 10/3/12 CMPS 2200 Intro. to Algorithms 28

  29. Example of depth-first search p p d / f 0/- a i h d d 5/- 1/- b f e g 6/- 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b e f g - b 10/3/12 CMPS 2200 Intro. to Algorithms 29

  30. Example of depth-first search p p d / f 0/- a i h 7/- 7/8 d d 5/- 1/- b f e g 6/- 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b e f g - b 10/3/12 CMPS 2200 Intro. to Algorithms 30

  31. Example of depth-first search p p d / f 0/- a i h 7/8 d d 5/- 1/- b f e g 6/- 6/9 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b e f g - b 10/3/12 CMPS 2200 Intro. to Algorithms 31

  32. Example of depth-first search p p d / f 0/- a i h 7/8 d d 5/- 1/- b f e g 6/9 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b e f g f - b 10/3/12 CMPS 2200 Intro. to Algorithms 32

  33. Example of depth-first search p p d / f 10/- 0/- a i h 7/8 d d 5/- 1/- b f e g 6/9 4/- 2/3 2/3 c c Store edges in π : a b c d e f g h i predecessor array a b e f g f - i b 10/3/12 CMPS 2200 Intro. to Algorithms 33

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend