polynomial time computability
an initial definition that i had studied was from davis'
(based on the concept of a nondeterministic turing machine).
(which i actually prefer):
. if
, then
is recursive
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity; theorem 2.3]
.
[cite:taken from @computability_arora_2009 definition 2.19]
a broken link: blk:def-lang
an alphabet
is said to be polynomial-time decidable if there is a turing machine
that accepts
, and a polynomial
, such that the number of steps in an accepting computation by
with input
is
. when the alphabet is understood, we write
for the class of polynomial-time decidable languages.
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity]
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity]
a total function
on
, where
is an alphabet, is said to be polynomial-time computable if there is a turing machine
that computes
, and a polynomial
, such that the number of steps in the computation by
with input
is
.
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity]
the following definition is the original definition of [cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity]
a language
is said to belong to the class
if there is a nondeterministic turing machine
that accepts
, and a polynomial
, such that for each
, there is an accepting computation
by
for
with
.
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity]
an equivalent definition from arora's:
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity]
for every function
and
, we say that
if there is a constant
and a
-time NDTM
such that for every
,
.
[cite:;taken from @computability_arora_2009 definition 2.5]
another definition for [cite:;taken from @computability_arora_2009 definition 2.5]
a language
is in
if there exists a polynomial
and a polynomial-time TM
(called the verifier for
) such that for all
:
if
and
satisfy
, then we call
a certificate for
(with respect to the language
and machine
).
[cite:;taken from @computability_arora_2009 definition 2.1]
we then have:
[cite:;taken from @computability_arora_2009 definition 2.1]
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity; theorem 2.3]
let
we show that the
language defined in is in
. recall that this language contains all pairs
such that the graph
has a subgraph of at least
vertices with no edges between them (such a subgraph is called an independent set). consider the following polynomial-time algorithm
: given a pair
and a string
, output
if and only if
encodes a list of
vertices of
such that there is no edge between any two members of the list. clearly,
is in
if and only if there exists a string
such that
and hence
is in
. the list
of
vertices forming the independent set in
serves as the certificate that
is in
. note that if
is the number of vertices in
, then a list of
vertices can be encoded using
bits, where
is the number of vertices in
. thus,
is a string of at most
bits, which is polynomial in the size of the representation of
.
[cite:;refer to @computability_arora_2009 chapter 2.1 the class np; example 2.2] gives an intuitive example of how the definition of
relates to the "largest party you can throw" problem.
[cite:;taken from @computability_arora_2009 example 2.2]
[cite:;refer to @computability_arora_2009 chapter 2.1 the class np; example 2.2] gives an intuitive example of how the definition of
[cite:;taken from @computability_arora_2009 example 2.2]
let
be languages, then we write
and say that
is polynomial-time reducible to
, if there is a polynomial-time computable function
such that
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity; theorem 2.3]
if
and
then
is
too. if
and
then
is
too.
a language
is called
-hard if for every
, we have
,
is called
-complete if
and
is
-hard.
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity; theorem 2.3]
[cite:;taken from @computability_davis_1994 chapter 15 polynomial-time complexity; theorem 2.3]
if there is an
-complete language in
then
.
the implications of
are mind-boggling.
problems seem to capture some aspects of "creativity" in problem solving, and such creativity could become accessible to computers if
. for instance, in this case computers would be able to quickly find proofs for every true mathematical statement for which a proof exists. resolving the
versus
question is truly of great practical, scientific, and philosophical interest.
[cite:;taken from @computability_arora_2009 chapter 2.1 the class NP]
[cite:;taken from @computability_arora_2009 chapter 2.1 the class NP]
the following language is
-complete:
[cite:;taken from @computability_arora_2009 example 2.21]
for every
, we say that
if there exists a polynomial
and a polynomial-time TM
such that for every
,
note the use of the
quantifier in this definition where polynomial_time_computability.html used
.
[cite:;taken2 from @computability_arora_2009 definition 2.20]
[cite:;taken2 from @computability_arora_2009 definition 2.20]