KEMBAR78
Data structure and algorithms lecture22 presentation | PPTX
CSE373: Data Structures & Algorithms
Lecture 22: The P vs. NP question,
NP-Completeness
Lauren Milne
Summer 2015
Admin
• Homework 6 is posted
– Due next Wednesday
– No partners
Algorithm Design Techniques
• Greedy
– Shortest path, minimum spanning tree, …
• Divide and Conquer
– Divide the problem into smaller subproblems,
solve them, and combine into the overall solution
– Often done recursively
– Quick sort, merge sort are great examples
• Dynamic Programming
– Brute force through all possible solutions, storing solutions to
subproblems to avoid repeat computation
• Backtracking
– A clever form of exhaustive search
• Backtracking is a technique used to solve problems with a large
search space, by systematically trying and eliminating possibilities.
• A standard example of backtracking would be going through a
maze.
– At some point, you might have two options of which direction to go:
Junction
Portion A
Portion
B
Backtracking: Idea
Junction
Portion B
Portion
A
One strategy would be to try going through
Portion A of the maze.
If you get stuck before you find your
way out, then you "backtrack" to the
junction.
At this point in time you know that Portion A
will NOT lead you out of the maze,
so you then start searching in Portion B
Backtracking
• Clearly, at a single junction you
could have even more than 2
choices.
• The backtracking strategy says to try
each choice, one after the other,
– if you ever get stuck, "backtrack" to
the junction and try the next choice.
• If you try all choices and never
found a way out, then there IS no
solution to the maze.
Junction
B
C
A
Backtracking
Backtracking (animation)
start ?
?
dead end
dead end
?
?
dead end
dead end
?
success!
dead end
Backtracking
• Dealing with the maze:
– From your start point, you will iterate through each possible
starting move.
– From there, you recursively move forward.
– If you ever get stuck, the recursion takes you back to where
you were, and you try the next possible move.
• Make sure you don't try too many possibilities,
– Mark which locations in the maze have been visited already
so that no location in the maze gets visited twice.
– If a place has already been visited, there is no point in trying
to reach the end of the maze from there again.
The neat thing about coding up backtracking is
that it can be done recursively, without having
to do all the bookkeeping at once.
– Instead, the stack of recursive calls does most of
the bookkeeping
– (i.e., keeps track of which locations we’ve tried so
far.)
Backtracking
On to Complexity theory!
The $1M question
The Clay Mathematics Institute
Millennium Prize Problems
1. Birch and Swinnerton-Dyer Conjecture
2. Hodge Conjecture
3. Navier-Stokes Equations
4. P vs NP
5. Poincaré Conjecture
6. Riemann Hypothesis
7. Yang-Mills Theory
The P versus NP problem (informally)
Can every problem whose solution can be quickly
verified by a computer also be quickly solved by a
computer?
What is an efficient algorithm?
polynomial time
O(nc
) for some
constant c
non-polynomial
time
Is an O(n) algorithm efficient?
How about O(n log n)?
O(n2
) ?
O(n10
) ?
O(nlog n
) ?
O(2n
) ?
O(n!) ?
The Class P (polynomial time)
P
Binary Search
Breadth-First Search
Dijkstra’s Algorithm
Sorting Algorithms
NP (Nondeterministic Polynomial Time)
Binary Search
Breadth-First Search
Dijkstra’s Algorithm
Sorting Algorithms
…
P
NP
Hamilton Cycle
Sudoku
SAT
…
The P versus NP problem
Is one of the biggest open problems in computer
science (and mathematics) today
It’s currently unknown whether there exist polynomial
time algorithms for NP-complete problems
– We know P  NP, but does P = NP?
– People generally believe P ≠ NP, but no proof yet
What do these NP problems look like?
Sudoku
3x3x3
Sudoku
3x3x3
Sudoku
4x4x4
Sudoku
4x4x4
Suppose you have an algorithm
S(n) to solve n x n x n
V(n) time to verify the solution
Fact: V(n) = O(n2
x n2
)
Question: is there some
constant such that
S(n) = O(nconstant
)?
n x n x n
...
Sudoku
Sudoku
n x n x n
... P vs NP problem
=
Does there exist an algorithm
for solving n x n x n Sudoku
that runs in time p(n) for some
polynomial p( ) ?
The P versus NP problem (informally)
Can every problem whose solution can be verified
in polynomial time by a computer also be solved
in polynomial time by a computer?
To check if a problem is in NP
• Phrase the problem as a yes/no question
– If we can prove any yes instance is correct (in
polynomial time), it is in NP
– If we can also answer yes or no to the
problem (in polynomial time) without being
given a solution, it is in P
The Class P
The class of all sets that can be
verified in polynomial time.
AND
The class of all decision
problems that can be
decided in polynomial time.
P
Binary Search
Breadth-First Search
Dijkstra’s Algorithm
Sorting Algorithms
NP
Binary Search
Breadth-First Search
Dijkstra’s Algorithm
Sorting Algorithms
…
P
NP
Hamilton Cycle
Sudoku
SAT
…
The class of all sets that
can be verified in
polynomial time.
Sudoku
Input: n x n x n sudoku instance
Output: YES if this sudoku has a solution
NO if it does not
The Set “SUDOKU”
SUDOKU = { All solvable sudoku instances }
Hamilton Cycle
Given a graph G = (V,E), is there a cycle that
visits all the nodes exactly once?
YES if G has a Hamilton cycle
NO if G has no Hamilton cycle
The Set “HAM”
HAM = { graph G | G has a Hamilton cycle }
AND
AND
NOT
Circuit-Satisfiability
Input: A circuit C with one output
Output: YES if C is satisfiable
NO if C is not satisfiable
The Set “SAT”
SAT = { all satisfiable circuits C }
Verifying Membership
Is there a short “proof” I can give you to verify that:
G  HAM?
G  Sudoku?
G  SAT?
Yes: I can just give you the cycle, solution, circuit
The Class NP
The class of sets for which there exist
“short” proofs of membership
(of polynomial length)
that can “quickly” verified
(in polynomial time).
Recall: The algorithm doesn’t have to find the proof; it just needs to be
able to verify that it is a “correct” proof.
Fact: P  NP
Summary: P versus NP
P: in NP (membership verified in polynomial time)
AND membership in a set can be decided in polynomial time.
NP: “proof of membership” in a set can be verified in
polynomial time.
Fact: P  NP
Question: Does NP  P ?
i.e. Does P = NP?
People generally believe P ≠ NP, but no proof yet
Why Care?
Classroom Scheduling
Packing objects into bins
Scheduling jobs on machines
Finding cheap tours visiting a subset of cities
Finding good packet routings in networks
Decryption
…
NP Contains Lots of Problems
We Don’t Know to be in P
OK, OK, I care...
We would have to show that every set in NP has a
polynomial time algorithm…
How do I do that?
It may take a long time!
Also, what if I forgot one of the sets in NP?
How could we prove that NP = P?
We can describe just one problem L in NP, such that if
this problem L is in P, then NP  P.
It is a problem that can capture all other problems in NP.
The “Hardest” Set in NP
We call these problems NP-complete
How could we prove that NP = P?
Theorem [Cook/Levin]
SAT is one problem in NP, such that if we can show SAT
is in P, then we have shown NP = P.
SAT is a problem in NP that can capture all other
languages in NP.
We say SAT is NP-complete.
Poly-time reducible to each other
Oracle for
problem X
Oracle for
problem Y
Instance of
problem Y
Map instance of Y
into instance of X
Takes polynomial time
Answer
Answer
Any problem in NP SAT
can be reduced
(in polytime to)
an instance of
hence SAT is
NP-complete
Sudoku
can be reduced
(in polytime to)
an instance of
hence Sudoku
is NP-complete
NP-complete: The “Hardest” problems in NP
Sudoku
SAT
3-Colorability
Clique
HAM
Independent-Set
These problems are all “polynomial-time equivalent”
i.e., each of these can be reduced to any of the others
in polynomial time
If you get a polynomial-time algorithm for one,
you get a polynomial-time algorithm for ALL.
(you get millions of dollars, you solve decryption, … etc.)

Data structure and algorithms lecture22 presentation

  • 1.
    CSE373: Data Structures& Algorithms Lecture 22: The P vs. NP question, NP-Completeness Lauren Milne Summer 2015
  • 2.
    Admin • Homework 6is posted – Due next Wednesday – No partners
  • 3.
    Algorithm Design Techniques •Greedy – Shortest path, minimum spanning tree, … • Divide and Conquer – Divide the problem into smaller subproblems, solve them, and combine into the overall solution – Often done recursively – Quick sort, merge sort are great examples • Dynamic Programming – Brute force through all possible solutions, storing solutions to subproblems to avoid repeat computation • Backtracking – A clever form of exhaustive search
  • 4.
    • Backtracking isa technique used to solve problems with a large search space, by systematically trying and eliminating possibilities. • A standard example of backtracking would be going through a maze. – At some point, you might have two options of which direction to go: Junction Portion A Portion B Backtracking: Idea
  • 5.
    Junction Portion B Portion A One strategywould be to try going through Portion A of the maze. If you get stuck before you find your way out, then you "backtrack" to the junction. At this point in time you know that Portion A will NOT lead you out of the maze, so you then start searching in Portion B Backtracking
  • 6.
    • Clearly, ata single junction you could have even more than 2 choices. • The backtracking strategy says to try each choice, one after the other, – if you ever get stuck, "backtrack" to the junction and try the next choice. • If you try all choices and never found a way out, then there IS no solution to the maze. Junction B C A Backtracking
  • 7.
    Backtracking (animation) start ? ? deadend dead end ? ? dead end dead end ? success! dead end
  • 8.
    Backtracking • Dealing withthe maze: – From your start point, you will iterate through each possible starting move. – From there, you recursively move forward. – If you ever get stuck, the recursion takes you back to where you were, and you try the next possible move. • Make sure you don't try too many possibilities, – Mark which locations in the maze have been visited already so that no location in the maze gets visited twice. – If a place has already been visited, there is no point in trying to reach the end of the maze from there again.
  • 9.
    The neat thingabout coding up backtracking is that it can be done recursively, without having to do all the bookkeeping at once. – Instead, the stack of recursive calls does most of the bookkeeping – (i.e., keeps track of which locations we’ve tried so far.) Backtracking
  • 10.
  • 11.
    The $1M question TheClay Mathematics Institute Millennium Prize Problems 1. Birch and Swinnerton-Dyer Conjecture 2. Hodge Conjecture 3. Navier-Stokes Equations 4. P vs NP 5. Poincaré Conjecture 6. Riemann Hypothesis 7. Yang-Mills Theory
  • 12.
    The P versusNP problem (informally) Can every problem whose solution can be quickly verified by a computer also be quickly solved by a computer?
  • 13.
    What is anefficient algorithm? polynomial time O(nc ) for some constant c non-polynomial time Is an O(n) algorithm efficient? How about O(n log n)? O(n2 ) ? O(n10 ) ? O(nlog n ) ? O(2n ) ? O(n!) ?
  • 14.
    The Class P(polynomial time) P Binary Search Breadth-First Search Dijkstra’s Algorithm Sorting Algorithms
  • 15.
    NP (Nondeterministic PolynomialTime) Binary Search Breadth-First Search Dijkstra’s Algorithm Sorting Algorithms … P NP Hamilton Cycle Sudoku SAT …
  • 16.
    The P versusNP problem Is one of the biggest open problems in computer science (and mathematics) today It’s currently unknown whether there exist polynomial time algorithms for NP-complete problems – We know P  NP, but does P = NP? – People generally believe P ≠ NP, but no proof yet What do these NP problems look like?
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
    Suppose you havean algorithm S(n) to solve n x n x n V(n) time to verify the solution Fact: V(n) = O(n2 x n2 ) Question: is there some constant such that S(n) = O(nconstant )? n x n x n ... Sudoku
  • 22.
    Sudoku n x nx n ... P vs NP problem = Does there exist an algorithm for solving n x n x n Sudoku that runs in time p(n) for some polynomial p( ) ?
  • 23.
    The P versusNP problem (informally) Can every problem whose solution can be verified in polynomial time by a computer also be solved in polynomial time by a computer?
  • 24.
    To check ifa problem is in NP • Phrase the problem as a yes/no question – If we can prove any yes instance is correct (in polynomial time), it is in NP – If we can also answer yes or no to the problem (in polynomial time) without being given a solution, it is in P
  • 25.
    The Class P Theclass of all sets that can be verified in polynomial time. AND The class of all decision problems that can be decided in polynomial time. P Binary Search Breadth-First Search Dijkstra’s Algorithm Sorting Algorithms
  • 26.
    NP Binary Search Breadth-First Search Dijkstra’sAlgorithm Sorting Algorithms … P NP Hamilton Cycle Sudoku SAT … The class of all sets that can be verified in polynomial time.
  • 27.
    Sudoku Input: n xn x n sudoku instance Output: YES if this sudoku has a solution NO if it does not The Set “SUDOKU” SUDOKU = { All solvable sudoku instances }
  • 28.
    Hamilton Cycle Given agraph G = (V,E), is there a cycle that visits all the nodes exactly once? YES if G has a Hamilton cycle NO if G has no Hamilton cycle The Set “HAM” HAM = { graph G | G has a Hamilton cycle }
  • 29.
    AND AND NOT Circuit-Satisfiability Input: A circuitC with one output Output: YES if C is satisfiable NO if C is not satisfiable The Set “SAT” SAT = { all satisfiable circuits C }
  • 30.
    Verifying Membership Is therea short “proof” I can give you to verify that: G  HAM? G  Sudoku? G  SAT? Yes: I can just give you the cycle, solution, circuit
  • 31.
    The Class NP Theclass of sets for which there exist “short” proofs of membership (of polynomial length) that can “quickly” verified (in polynomial time). Recall: The algorithm doesn’t have to find the proof; it just needs to be able to verify that it is a “correct” proof. Fact: P  NP
  • 32.
    Summary: P versusNP P: in NP (membership verified in polynomial time) AND membership in a set can be decided in polynomial time. NP: “proof of membership” in a set can be verified in polynomial time. Fact: P  NP Question: Does NP  P ? i.e. Does P = NP? People generally believe P ≠ NP, but no proof yet
  • 33.
  • 34.
    Classroom Scheduling Packing objectsinto bins Scheduling jobs on machines Finding cheap tours visiting a subset of cities Finding good packet routings in networks Decryption … NP Contains Lots of Problems We Don’t Know to be in P OK, OK, I care...
  • 35.
    We would haveto show that every set in NP has a polynomial time algorithm… How do I do that? It may take a long time! Also, what if I forgot one of the sets in NP? How could we prove that NP = P?
  • 36.
    We can describejust one problem L in NP, such that if this problem L is in P, then NP  P. It is a problem that can capture all other problems in NP. The “Hardest” Set in NP We call these problems NP-complete How could we prove that NP = P?
  • 37.
    Theorem [Cook/Levin] SAT isone problem in NP, such that if we can show SAT is in P, then we have shown NP = P. SAT is a problem in NP that can capture all other languages in NP. We say SAT is NP-complete.
  • 38.
    Poly-time reducible toeach other Oracle for problem X Oracle for problem Y Instance of problem Y Map instance of Y into instance of X Takes polynomial time Answer Answer Any problem in NP SAT can be reduced (in polytime to) an instance of hence SAT is NP-complete Sudoku can be reduced (in polytime to) an instance of hence Sudoku is NP-complete
  • 39.
    NP-complete: The “Hardest”problems in NP Sudoku SAT 3-Colorability Clique HAM Independent-Set These problems are all “polynomial-time equivalent” i.e., each of these can be reduced to any of the others in polynomial time If you get a polynomial-time algorithm for one, you get a polynomial-time algorithm for ALL. (you get millions of dollars, you solve decryption, … etc.)

Editor's Notes

  • #12 What do we mean by quickly here?
  • #14 the class of problems that can be solved and whose solutions can be verified in polynomial time
  • #15 The class of all sets that can be verified in polynomial time (if solution is fast to verify, can try all solutions with nondeterministic paths). It can be solved in polynomial time with a non-deterministic algorithm (deterministic algorithm can only follow one path when presented with a choice, non-deterministic can choose multiple paths)
  • #16 P is a problem that can be solved in polynomial time NP is a problem that can be verified in polynomial time (non deterministic polynomial time)
  • #23 phrase a problem as a yes/no question a problem is in NP if in polynomial time we can prove any yes instance is correct
  • #24 frame as decision problems with Sets of solutions (yes instances)
  • #28 Does it have a cycle? is in NP Prove it doesn’t have a cycle is not in NP phrase a problem as a yes/no question a problem is in NP if in polynomial time we can prove any yes instance is correct
  • #29 Boolean satisfiability: problem of determining if there exists an interpretation that satisfies a boolean formula can you give an input so the circuit evaluates to true First problem shown to be NP-complete! every problem in NP can be solved in polynomial time using a nondeterministic computer/Turing machine
  • #36 every problem in NP is reducible to an NP-complete problem