cs3000 algorithms data jonathan ullman
play

CS3000:&Algorithms&&&Data Jonathan&Ullman - PowerPoint PPT Presentation

CS3000:&Algorithms&&&Data Jonathan&Ullman Lecture&10:& Graphs Graph&Traversals:&DFS Topological&Sort Feb&19,&2020 Midterm&1 AIA c c Bt B B Cle MTI Midterm 1 Scores I


  1. CS3000:&Algorithms&&&Data Jonathan&Ullman Lecture&10:& Graphs • Graph&Traversals:&DFS • Topological&Sort • Feb&19,&2020

  2. Midterm&1 AIA c c Bt B B Cle MTI Midterm 1 Scores I 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 . . . . . . . . . . 5 0 5 0 5 0 5 0 5 0 5 6 6 7 7 8 8 9 9 0 1

  3. What’s&Next

  4. What’s&Next • Graph&Algorithms: • Graphs: Key&Definitions,&Properties,&Representations • Exploring&Graphs: Breadth/Depth&First&Search • Applications:&Connectivity,&Bipartiteness,&Topological&Sorting • Shortest&Paths: • Dijkstra • BellmanTFord&(Dynamic&Programming) • Minimum&Spanning&Trees: • Borůvka,&Prim,&Kruskal • Network&Flow: • Algorithms • Reductions&to&Network&Flow

  5. Graphs

  6. of nodes n IV Graphs:&Key&Definitions of edges IE l rn of neighbors deg a • Definition:& A&directed&graph ! = #, % • # is&the&set&of&nodes/vertices • % ⊆ #×# is&the&set&of&edges • An&edge&is&an&ordered& ( = ), * “from& ) to& * ” • Definition: An&undirected&graph ! = #, % • Edges&are&unordered& ( = ), * “between& ) and& * ” • Simple&Graph: • No&duplicate&edges • No&selfTloops& ( = ), )

  7. Adjacency&Matrices • The&adjacency&matrix of&a&graph& ! = #, % with& + nodes&is&the&matrix& , 1:+/, 1:+ where A 1 2 3 4 1 0 1 1 0 , 0, 1 =/21///// 0, 1 ∈ % 2 0 0 1 0 /0///// 0, 1 ∉ % 3 0 0 0 0 4 0 0 1 0 Cost Space:& Θ # 7 2 1 Lookup:& Θ 1 time 3 4 List&Neighbors:& Θ # time

  8. Adjacency&Lists&(Undirected) • The&adjacency&list of&a&vertex& * ∈ # is&the&list& ,[*] of&all& ) s.t.& *, ) ∈ % , 1 = 2,3 , 2 = 1,3 , 3 = 1,2,4 , 4 = 3 2 1 3 4

  9. Adjacency&Lists&(Directed) • The&adjacency&list of&a&vertex& * ∈ # are&the&lists • , =>? [*] of&all& ) s.t.& *, ) ∈ % • , @A [*] of&all& ) s.t.& ), * ∈ % ntm Space List Neighbors of Node 11 OCdegCu cc OCdeglu 11 Lookup Edge air , =>? 1 = 2,3 , @A 1 = / 2 1 , =>? 2 = 3 , @A 2 = 1 , =>? 3 = / , @A 3 = 1,2,4 3 4 , =>? 4 = 3 , @A 4 = /

  10. DepthTFirst&Search&(DFS)

  11. DepthTFirst&Search H P G = (V,E) is a graph explored[u] = 0 � u u c ka DFS(u): I I explored[u] = 1 V a b for ((u,v) in E): if (explored[v]=0): IP il parent[v] = u DFS(v) a path arrows give Red each other mode from to u 0 Running T.me ntm g In the graph reachable from a

  12. DepthTFirst&Search • Fact: The&parentTchild&edges&form&a&(directed)&tree • Each&edge&has&a&type: • Tree&edges:& (), C),(), E), (E, F) on • These&are&the&edges&that&explore&new&nodes • Forward&edges:& (), F) MM • Ancestor&to&descendant • Backward&edges:& C, ) mm • Descendant&to&ancestor u c • Implies&a&directed&cycle! NY • Cross&edges:& (E, C) man • No&ancestral&relation a b

  13. Ask&the&Audience • DFS&starting&from&node& C • Search&in&alphabetical&order • Label&edges&with& {tree,forward,backward,cross} a b c d e f g h

  14. Connected&Components

  15. Paths/Connectivity • A&path is&a&sequence&of&consecutive&edges&in& % • G = ) − I J − I 7 − I K − ⋯− I MNJ − * • The&length of&the&path&is&the&#&of&edges • An&undirected graph&is&connected if&for&every&two& vertices& ), * ∈ # ,&there&is&a&path&from& ) to& * • A&directed graph&is&strongly&connected if&for&every& two&vertices& ), * ∈ # ,&there&are&paths&from& ) to& * and&from& * to& )

  16. Connected&Components&(Undirected) • Problem:& Given&an&undirected&graph& ! ,&split&it&into& connected&components • Input:& Undirected&graph& ! = #, % • Output: A&labeling&of&the&vertices&by&their& connected&component 2 1 3 4 5

  17. Connected&Components&(Undirected) • Algorithm: • Pick&a&node&v • Use&DFS&to&find&all&nodes&reachable&from&v • Labels&those&as&one&connected&component • Repeat&until&all&nodes&are&in&some&component 1 2 3 4 5 6

  18. Connected&Components&(Undirected) CC(G = (V,E)): // Initialize an empty array and a counter let comp[1:n] ←/⊥ , c ← 1 // Iterate through nodes for (u = 1,…,n): // Ignore this node if it already has a comp. // Otherwise, explore it using DFS if (comp[u] != ⊥ ): run DFS(G,u) let comp[v] ← c for every v found by DFS let c ← c + 1 output comp[1:n]

  19. Running&Time

  20. Connected&Components&(Undirected) • Problem:& Given&an&undirected&graph& ! ,&split&it&into& connected&components • Algorithm:& Can&split&a&graph&into&conneted& components&in&time& Q + + S using&DFS • Punchline:& Usually&assume&graphs&are&connected • Implicitly&assume&that&we&have&already&broken&the&graph& into&CCs&in& Q + + S time

  21. Strong&Components&(Directed) • Problem:& Given&a&directed&graph& ! ,&split&it&into& strongly&connected&components • Input:& Directed&graph& ! = #, % • Output: A&labeling&of&the&vertices&by&their&strongly& connected&component 2 1 3 4 5

  22. Strong&Components&(Directed) • Observation:& SCC(V) is&all&nodes& * ∈ # such&that& * is&reachable&from& V and&vice&versa • Can&find&all&nodes&reachable&from& V using&BFS • How&do&we&find&all&nodes&that&can&reach& V ?

  23. Strong&Components&(Directed) SCC(G = (V,E)): let G R be G with all edges “reversed” // Initialize an array and counter let comp[1:n] ←/⊥ , c ← 1 for (u = 1,…,n): // If u has not been explored if (comp[u] != ⊥ ): let S be the nodes found by DFS(G,u) let T be the nodes found by DFS(G R ,u) // S ∩ T contains SCC(u) label S ∩ T with c let c ← c + 1 return comp

  24. Strong&Components&(Directed) • Problem:& Given&a&directed&graph& ! ,&split&it&into& strongly&connected&components • Input:& Directed&graph& ! = #, % • Output: A&labeling&of&the&vertices&by&their&strongly& connected&component • Find&SCCs&in& Q + 7 + +S time&using&DFS • Can&find&SCCs&in& W(X + Y) time using&a&more& clever&version&of&DFS

  25. PostTOrdering

  26. cloete IP PostTOrdering 11 u c tht G = (V,E) is a graph explored[u] = 0 � u a b DFS(u): explored[u] = 1 IP Vertex PostPOrder for ((u,v) in E): if (explored[v]=0): a parent[v] = u DFS(v) post-visit(u) • Maintain&a&counter& clock ,&initially&set& clock = 1 • post-visit(u): set postorder[u]=clock, clock=clock+1

  27. Tiffin Example Im Mr cross • Compute&the& postPorder of&this&graph • DFS&from& Z ,&search&in&alphabetical&order A a b c d 111mn19 e f g h 9 e Vertex a b c d e f g h 6 PostPOrder I 2 8 5 4 3 7

  28. Example • Compute&the& postPorder of&this&graph • DFS&from& Z ,&search&in&alphabetical&order 4 8 5 7 a b c d por Ms e f g h 6 2 L 3 Vertex a b c d e f g h PostPOrder 8 7 5 4 6 1 2 3

  29. Obervation • Observation:& if&postorder[u]&<&postorder[v]&then& (u,v)&is&a&backward&edge a b c d e f g h Vertex a b c d e f g h PostPOrder 8 7 5 4 6 1 2 3

  30. an algorithm for finding Gives Observation y backwards edges cycles b • Observation:& if&postorder[u]&<&postorder[v]&then& (u,v)&is&a&backward&edge • DFS(u)&can’t&finish&until&its&children&are&finished • If&postorder[u]&<&postorder[v],&then&DFS(u)&finishes& before&DFS(v),&thus&DFS(v)&is&not&called&by&DFS(u) • When&we&ran&DFS(u),&we&must&have&had&explored[v]=1 • Thus,&DFS(v)&started&before&DFS(u) • DFS(v)&started&before&DFS(u)&but&finished&after • Can&only&happen&for&a&backward&edge

  31. Topological&Ordering

  32. Directed&Acyclic&Graphs&(DAGs) • DAG:& A&directed graph&with&no&directed&cycles • Can&be&much&more&complex&than&a&forest

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