Чи відомий явний приклад алгоритму з властивістю таким, що якщо то цей алгоритм не запускається в поліноміальний час, а якщо то він працює в поліноміальний час?
Чи відомий явний приклад алгоритму з властивістю таким, що якщо то цей алгоритм не запускається в поліноміальний час, а якщо то він працює в поліноміальний час?
Відповіді:
Якщо припустити, що є доказовим у PA (або ZFC), тривіальним прикладом є такий:
Input: N (integer in binary format)
For I = 1 to N do
begin
if I is a valid encoding of a proof of P = NP in PA (or ZFC)
then halt and accept
End
Reject
Інший - менш тривіальний - приклад, який не покладається на жодне припущення, такий:
Input: x (boolean formula)
Find the minimum i such that
1) |M_i| < log(log(|x|)) [ M_1,M_2,... is a standard fixed TM enumeration]
2) and M_i solves SAT correctly
on all formulas |y| < log(log(|x|))
halting in no more than |y|^|M_i| steps
[ checkable in polynomial time w.r.t. |x| ]
if such i exists simulate M_i on input x
until it stops and accept/reject according to its output
or until it reaches 2^|x| steps and in this case reject;
if such i doesn't exist loop for 2^|x| steps and reject.
Якщо алгоритм незабаром чи пізніше - припустимо, на вході - знайдіть індекс поліноміального часу машини Тюрінга (або вкладеної його версії) який вирішує SAT в і для всіх входів, більших за , продовжуватимуть моделювати його та зупинятись у поліноміальному часі (зауважте, що крок 2 також можна перевірити в поліноміальний час). Іншими словами, якщо алгоритм розв'язує SAT у поліноміальний час на всіх, окрім кінцевої кількості екземплярів.
Якщо алгоритм працює в експоненціальному часі.