This proof is quite direct and may be too easy to many. But proof is proof
The good thing is that this proof suggests a general method for problem complexity,
easy to (false) verify by reviewers. Any comments?
This file is intended a proof that ℙ≠ℕℙ. The contents may be updated anytime.
https://sourceforge.net/projects/cscall/files/MisFiles/PNP-proof-en.txt/downloadThis proof suggests a general algorithm for problem complexity, easy to false
prove. With lots of algorithms out there, I only know a few of them, thus,
cannot effectively verify the proof. And, the details of this proof are many
and basic, concise description should be sufficient.
-----------------------------------------------------------------------------
Algorithmic problem::= Problems that can processed by asymptotic analysis..
ANP::= Another NP is a set defined as {q| q is a description of the algorithmic
decision problem that provides 1. A set of certificate data C 2. A Ptime
(Polynomial time) verification method v 3. The answer of q is 'yes' iff
there exists a certificate c, c∈C, such that v(c) is true 4. q can be
computed within O(2^|q|) steps. }.
More precisely, ANP is the set of problems that can be solved by the
following pseudo-C/C++ program temp_anp(n):
bool temp_anp(Problem q) { // Problem: Description of the problem
Certificate c,begin,end; // Certificate data can be accessed by
begin= get_begin_certificate(q); // iteration, at least.
end = get_end_certificate(q);
for(c=begin; c!=end; c=next(c)) { // O(2^|n|) loop (see Note2)
if(v(c)) return true; // v:Certificate->{true,false}, Ptime
// verification function.
}
return false;
}
Note1: Relative to the Turing Machine language for ℕℙ, the reason using
pseudo-C/C++ is that 1.C-code (almost all high level programming
language not involving special hardware features) and TM language are
computationally interchangable. 2.It describes the problem more clearly
(but not always) 3.The result 'false' is visible 4. ℕℙ definition does
not say the certificate C and the verication v are given, fixed
arguments. In ANP, v(c) is explicitly spedified a Ptime function
5.Easier for machine aided verification.
Note2: The semantics of the for loop in temp_anp(n) includes nested loops for
sets like C=C1×C2×C3×...
Theorem: Sequential execution of O(P) number of Ptime functions is equivalent to
the execution of one single Ptime function.
Lemma1: If ANP=ℙ, then there exists a Ptime recursive algorithm (which normally
contains only one recursive call) equivalent to temp_anp(..).
Proof: The number of certificate data to infer in temp_anp(..) is O(2^|q|).
If ANP=ℙ, then there exists an Ptime algorithm which only need to
actually executes O(P) number of verification v(c) and performs the
equivalent function of what the O(2^|q|) loop does. IOW, each execution
of the v(c) can in average reduce O(2^N) uncertainties....This is
equivalent to say that one Ptime computation can reduce the problem size
(normally by 1). Then, what the smaller size problem left can be solved
by a recursive call.
Lemma2: Assuming an ANP problem q is analysized by a recursive method and a
recursive call has completed its task of solving the subproblem (of
size= |q|-1). If the workload of what is left can be described as
solving a subproblem, then, problem q can only be solved in O(2^N) steps
, i.e. q∉ℙ.
Proof: If the workload of what is left (denoted as W(|R|) from removing the
assumingly solved subproblem is equivalent to the workload of solving R
as a recursive subproblem, then, the workload of problem q is determined
as (assume m1=|q|-1) O(2^m1)+O(2^m1)= O(2^|q|), regardless of 'possibly
other algorithm' because the workloads are all the same described as
solving a recursive subproblem.
If the workload of what is left (i.e. R) is not equivalent to the
workload of solving R as another subproblem, the workload of R must be
less than O(2^N) steps (otherwise, it msut be solvable as a subproblem).
Therefore, the workload of problem q is W(|q|)= W(|q-1|)+W(|R|)
= |q|*W(|R|), a value less than O(2^N).
Take Subset Sum as example:
bool subset_sum(const UInt* set, UInt n_elem, UInt sum) {
if(sum==0) return true;
if(n_elem==0) return false;
if(set[n_elem-1]>sum) {
return subset_sum(set,n_elem-1,sum);
}
return subset_sum(set,n_elem-1,sum) || // Subproblem that does not
// contain the last element.
subset_sum(set,n_elem-1,sum- set[n_elem-1]);
}
Assuming a subproblem case of subset_sum is completed, the left task is
equivalent to solving another subbproblem. Therefore, Subset Sum∉ℙ.
Several ℕℙℂ instances that are easy to test by Lemma2, e.g. TSP,... can also be
easily deduced only solvable in O(2^N) steps, i.e. ℕℙℂ≠ℙ. Thus, we can conclude
ℙ≠ℕℙ.
-----------------------------------------------------------------------------