Undecideability

advertisement
The Halting Problem
• Can we design a program that, given any other
program and its input, tells whether that
program will halt when run on that input?
•
Output of this program, called HALT, when applied to
program P and input I, is “halts” if P(I) eventually
halts
•
Output of this program is “never halts” if P(I) never
halts
• Theorem (Alan Turing 1937):
No computer program can
solve the halting problem.
Proof by Contradiction
• Assume the hypothesis to be proven is false, i.e.
there is a computer program that can solve the
halting problem
• Show that this assumption leads to a
contradiction
• Do it by creating a program and an input to it
that generate this contradiction
Proof by Contradiction
• Suppose there was a computer program,
called HALT, which solved the halting problem.
• We can write a new program that uses HALT and
leads to a contradiction:
Program NonConformist (Program P)
If ( HALT(P) = “never halts” ) Then
Halt
Else
Do While (1 > 0)
Print “Hello!”
End While
End If
End Program
Proof by Contradiction
Program NonConformist (Program P)
If ( HALT(P) = “never halts” ) Then
Halt
Else
Do While (1 > 0)
Print “Hello!”
End While
End If
End Program
• Does NonConformist(NonConformist) halt?
• Note: It calls HALT(NonConformist)
• Yes? Means HALT(NonConformist) = never halts
• No? That means HALT(NonConformist) = halts
• Contradiction: There exists a program
(NonConformist) for which the HALT program
gives the wrong answer
Undecidability
• Halting Problem:
Given a computer program P and input “input”:
• Output “halts” if P(input) eventually halts
• Output “never halts” if P(input) never halts
• We’ve shown that the Halting Problem is
Undecidable – no computer program can ever
solve it, no matter how powerful the
computer is.
Undecidability
• Many other problems are undecidable, too.
• Moreover, the same ideas that we used to
prove undecidability can be used to prove a
very disturbing statement.
GÖDEL’S
INCOMPLETENESS THEOREM
• Until Gödel came along, Mathematicians
were searching for the “one true logical
framework,” i.e. a framework in which
every true statement can be proved.
• Their faith was shattered by Gödel.
• For more on this and its philosophical
implications, see Gödel, Escher, Bach by
Douglas Hofstadter.
GÖDEL’S
INCOMPLETENESS THEOREM
• In 1931, Gödel stunned the world by proving
that in any logical framework in which you
can express basic facts about numbers,
there exists a true statement that cannot
be proved in that framework.
• “Not every true statement has a proof”
GÖDEL’S
INCOMPLETENESS THEOREM
• In 1931, Gödel stunned the world by proving
that in any logical framework in which you
can express basic facts about numbers,
there exists a true statement that cannot
be proved in that framework.
• But wait, if it can’t be proved, how do we
know it is true?
GÖDEL’S
INCOMPLETENESS THEOREM
• We can prove that it is true by “jumping”
outside the original logical framework to a
“larger” logical framework…
GÖDEL’S
INCOMPLETENESS THEOREM
• We can prove that it is true by “jumping”
outside the original logical framework to a
“larger” logical framework…
• But that larger logical framework also has
a true statement that cannot be proved!
GÖDEL’S
INCOMPLETENESS THEOREM
• We can prove that it is true by “jumping”
outside the original logical framework to a
“larger” logical framework…
• But that larger logical framework also has
a true statement that cannot be proved!
• …and so on, and so on…
• No matter when we stop, there will always
be some true statement that doesn’t have
a proof!
GÖDEL’S
INCOMPLETENESS THEOREM
• Until Gödel came along, Mathematicians
were searching for the “one true logical
framework,” i.e. a framework in which
every true statement can be proved.
• Their faith was shattered by Gödel.
• For more on this and its philosophical
implications, see Gödel, Escher, Bach by
Douglas Hofstadter.
More Undecidable Problems?
Post's Correspondence Problem (PCP)
• An instance of PCP of size s is a finite
set of pairs of strings (gi , hi) [for i =
1...s; s>=1] over some alphabet .
• A solution is a sequence i1 i2 ... in of
selections from each set of strings (gi , hi)
such that the strings gi1gi2 ... gin and hi1hi2
... hin formed by concatenation are
identical.
Sample PCP
•g1 =
•g2 =
•g3 =
•g4 =
aba
bbab
baaa
a
h1 =
h2 =
h3 =
h4 =
abaa
abab
a
bb
So, 1,3,1,2 would correspond to
• aba baaa aba bbab from g’s
• abaa a abaa abab from h’s
Not a solution!
Another Sample PCP
•g1 =
•g2 =
•g3 =
•g4 =
aba
bbab
baaa
a
h1 =
h2 =
h3 =
h4 =
abaa
abab
a
bb
1,4,2,1,3 corresponds to
• aba a bbab aba baaa from g
• abaa bb abab abaa a from h
Solution!
PCP is undecidable?
•PCP shown to be undecidable by Post in
1946.
• What about PCP with limited-size inputs
• PCP with size 2 has been proved decidable.
• PCP with size 7 has been proved undecidable
• The decidablility of problems with size between 3
and 6 is still pending.
What Computers Can’t Do
In Your Lifetime
• We’ve now seen examples of problems that
computers can’t solve, even if computers have
unlimited speed and unlimited time.
• Are there more real world problems (eg that
arise in business, science, … ) that can be solved
but take far too much time to be solved in
practice?
“Search” Problems
• We’ll focus on what we’ll call “search problems”.
(In Computer Science terms, we’ll be talking
about what are termed NP problems)
• Intuitively, a search problem is a problem where
you are looking for something which you can
recognize quickly if you find it.
• Recognizing a good solution is easy
• Problem is finding it
Example: Coloring
Example: Coloring with 3 colors
• Suppose we are given a
collection of circles (nodes).
• Some circles connect to others
by edges, forming a graph
• Rule: No two connected
circles can have the same color.
• You only have three colors
(Green, Red, Yellow)
• Is there a valid coloring?
• Note: easy to check validity.
Hard to find?
Search Problems:
More Precise Definition
• Intuitively, a search problem is a problem where
you are looking for something which you can
recognize quickly if you find it.
• A bit more precisely, we require that there is a
small circuit that can quickly check the validity
of a solution.
• For coloring, it would just be a circuit that
checks that for every pair of connected circles,
the colors are different.
Another Example:
Traveling Salesperson Problem
• A saleswoman wants to visit n different cities.
• She knows the costs associated with flights
between each city.
• Can she visit all the cities spending less than $B
in total?
• Note: Easy to check that a given flight plan
visits all the cities and costs less than $B.
• Seems hard to find the flight plan …
Search Problems…
• Unfortunately, we don’t know how to solve these
and many other search problems with a
computer in our lifetimes for large inputs.
•
Large graphs, large number of cities
• For many years, computer scientists wondered
which search problems could be solved, and
which couldn’t.
• But just because computer scientists couldn’t
solve the Coloring problem for 40 years doesn’t
mean it is impossible, right?
•
Proof of Fermat’s Last Theorem took over 300 years
Search Problems…
• Can we prove that it is impossible to solve
them quickly for large inputs?
• Unfortunately, not yet
• But now we are much more confident that
they really are impossible to solve quickly
• How do we make progress toward determining
an answer?
Breakthrough: Reduction
• A surprise:
• In the early 70’s, Cook, Levin, and Karp
showed us that if we can solve the Coloring
problem quickly, then we can solve ALL search
problems quickly!
• But general search problems are defined in
terms of circuits (that can validate their
solutions), not colors…
• Need to map circuits to graph coloring problems
• Then we can map the circuit for any search
problem to the corr. graph coloring problem
Coloring and Circuits
• Suppose we think of :
• Green as meaning True.
• Red as meaning False
• Yellow as meaning nothing
What is the circuit for this
graph?
Input
T
X
So this is
a graph
for a NOT
F
Valid coloring
for this graph
leads to a
NOT gate
Output
NOT X
T
F
Y
X
Output
X
Y
F
F
F
T
T
F
T
T
T
F
Y
X
F
T
Output
X
Y
F
F
F
T
T
F
T
T
T
F
Y
X
Output
X
Y
F
F
F
T
T
F
T
T
T
F
Y
X
Output
X
Y
F
F
F
T
T
F
T
T
T
F
Y
X
Output
X
Y
F
F
F
T
T
F
T
T
T
F
Y
X
Output
X
Y
F
F
F
T
T
F
T
T
T
T
F
Y
X
Output
X
Y
F
F
F
F
T
T
T
F
T
T
T
T
T
F
Y
X
=
Output
OR
X
Y
OR
F
F
F
F
T
T
T
F
T
T
T
T
Coloring !
• And you thought coloring was for kids..
• In fact, we can encode any circuit into a
collection of connected circles (graph) waiting to
be colored.
• Any valid coloring for the graph conforms to the
circuit (which verifies a search problem)
• Thus, we can efficiently reduce any search
problem to Coloring.
• If we can solve Coloring quickly, we can solve
any search problem quickly!
Many more
• Traveling Salesperson Problem is also as “hard”
as any search problem.
• Search Problems with this property are called
complete problems
• Although we don’t know how to prove that they
are hard, we know that if find a way to solve one
of them quickly, we can solve all search problems
quickly!
• Gives us more confidence that they really are
hard.
Recap: Hard search problems
• A hard search problem is a problem where
• It is hard to find a solution
• It is easy to check possible solutions for
validity
• A complete search problem is a problem that is
as hard as any search problem
• Search problem is believed to be hard because
• No one found a way to solve any of the
complete search problems quickly
What does “Quickly” mean?
• In time polynomial in the size of the input
• E.g. if one could solve an n-city TSP in time
– n2+2n+5
– or even n2000+7n1999+…+8n2+5n+6
– Then these are a Polynomial-time algorithms (quick)
• But if one can only solve it in time:
– 2n
– or 2n+6n-1+…+3
– Then these are Exponential-time algorithms (slow)
2
n
versus
n
2
• n = 10
– n2 = 100
– 2n = 1024
• n = 100
– n2 = 10,000
– 2n = (1024)10
> 1 trillion * 1 trillion * 1 million
Hence we call exponential-time algorithms slow
Classes of search problems
• In computer-science terminology:
• NP = All Search Problems
• P = Problems we can solve quickly
• We believe that P  NP, i.e. not every search
problem can be solved quickly on a computer.
NP-Complete Problems
• Coloring is complete
• In particular, we can reduce solving any
search problem to finding a valid coloring for
some collection of circles!
• So, if we could solve Coloring quickly, then
P = NP
• That’s why we believe Coloring can’t be solved
quickly by any computer.
• We call such problems NP-Complete.
Download