cs20a np problems
play

CS20a: NP problems Graph theory Strongly-connected components T - PowerPoint PPT Presentation

CS20a: NP problems Graph theory Strongly-connected components T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 1 I F L I L O G


  1. CS20a: NP problems • Graph theory – Strongly-connected components T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 1 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  2. Graph theory • A graph is a set of points (vertices) that are interconnected by a set of lines (edges) v2 v3 v6 e4 e1 e9 v5 v1 e3 e7 e5 v8 e8 e6 e10 e2 v7 v4 This is not a vertex T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 2 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  3. Formal definition of graphs • A graph G is defined as a pair G = (V, E) where – V is a set of vertices – E is a set of edges (v i , v j ), . . . • n = | V | is the size of the graph • | E | is the number of edges T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 3 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  4. Directed graphs • A directed graph assigns a direction to the edges T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 4 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  5. Paths, cycles A directed cycle An articulation point An undirected path An acyclic graph T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 5 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  6. Connected components • A directed graph G is defined as a pair G = (V, E) where – V is a set of vertices – E is a set of edges (v i → v j ), . . . • Two vertices v i , v j are strongly connected iff there is a directed path from v i to v j , and a directed path from v j to v i . • Two vertices v i , v j are weakly connected iff there is an undirected path from v i to v j • Use these to define strongly-connected and weakly- connected components. T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 6 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  7. Using DFS to get strongly-connected comp • Variables: – count : the current DFS index – dfs [v] : the DFS number of vertex v – low [v] : the lowest numbered vertex x such that there is a back-edge from some descen- dent of v to x – stack a stack of the collected vertices • if low [v] = dfs [v] , then v is the root of a strongly- connected component T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 7 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  8. Strongly-connected components T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 8 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  9. Compute DFS spanning forest DFS Forest 6 1 5 7 8 3 2 4 Backedges T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 9 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  10. Compute low values low[6] = 6 low[1] = 1 6 1 low[5] = 4 low[2] = 1 5 7 8 3 2 low[7] = 7 low[8] = 6 low[3] = 1 4 low[4] = 3 min { low (w) | w is an immediate descendent of v } x = y = min { z | z is reachable by a back-edge from v } low (v) = min (x, y) T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 10 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  11. Using DFS to get strongly-connected comp • Variables: – count : the current DFS index – dfs [v] : the DFS number of vertex v – low [v] : the lowest numbered vertex x such that there is a back-edge from some descen- dent of v to x – stack a stack of the collected vertices • if low [v] = dfs [v] , then v is the root of a strongly- connected component T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 11 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  12. DFS algorithm let rec search v = mark v as old ; dfs [v] ← count ; count ← count + 1; low [v] ← dfs [v] ; push v onto stack ; for w ∈ outedges [v] do if w is new then search w ; low [v] ← min ( low [v], low [w]) else if dfs [w] < dfs [v] and w on stack then low [v] ← min ( dfs [w], low [v]) ; T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 12 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  13. 2SAT graph A ¬ A T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 13 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  14. 2SAT algorithm Theorem A 2SAT formula B is satisfiable iff no pair of complementary literals appear in the same strongly- connected component of G . Proof • If they do, then A ⇔ ¬ A , so B is not satisfiable. • Conversely – Collapse the strong components of G into sin- gle vertices; this new graph is acyclic – If A occurs in a strong component before a strong component for ¬ A , assign A = ⊥ – Otherwise assign A = ⊤ T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 14 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  15. 2SAT algorithm • Given formula B – Form the directed graph – Find the strongly-connected components – If any strongly-connected component contains a literal and its negation, report “not satisfiable” – Otherwise, build a satisfying assignment • Collapse strongly-connected components to get DAG • If A occurs before not A, then let A = false • If not A occurs before A, then let A = true T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 15 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  16. 3SAT formulas • 2SAT is easy • Let’s try to find an algorithm for 3SAT • Consider a 3SAT formula (l 1 ∨ l 2 ∨ l 3 ) ∧ · · · • Build a graph G with a vertex for each occurrence of a literal • Add an edge between two literals if they are in different clauses, and they are not complementary T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 16 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

  17. Conflict graph for 3SAT C 1 C 2 C 3 (x ∨ y) ∧ ( ¬ x ∨ ¬ y) ∧ (x ∨ ¬ y) C 1 x y ¬ x ¬ y ¬ y x C 2 C 3 T U T E I O T S F N T I E A C I H N N Computation, Computers, and Programs Recursive functions R O O 17 I F L I L O G http://www.cs.caltech.edu/courses/cs20/a/ November 25, 2002 A C Y If this page displays slowly, try turning off the “smooth line art” option in Acrobat, under Edit->Preferences

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