Чи є завдання, яке можна вирішити в поліномічний час, але не перевірити в поліноміальний час?


34

Мій колега і я щойно потрапили до записок одного з наших професорів. У примітках зазначається, що існують завдання, які можна вирішити в поліноміальний час (знаходяться в класі PF), але які НЕ перевіряються в поліноміальний час (НЕ є в класі NPF).

Щоб детальніше розповісти про ці класи: Ми отримуємо деякий вхід X і виробляємо деякий вихід Y такий, що (X, Y) знаходяться у відношенні R, що представляє наше завдання. Якщо можливо отримати Y для X за поліноміальний час, задача належить до класу PF. Якщо можливо перевірити поліномальний сертифікат довжини Z, який доводить, що кортеж (X, Y) знаходиться у відношенні R за поліноміальним часом, завдання належить до класу NPF.

Ми не говоримо про проблеми прийняття рішень, де відповідь просто ТАК чи НІ (більш формально, якщо якась рядок належить якійсь мові). Для проблем з рішенням виявляється, що PF є належним підмножиною NPF. Однак для інших завдань це може бути інакше.

Чи знаєте ви завдання, яке можна розв’язати в поліноміальний час, але не перевірити в поліноміальний час?


8
Можливо, я неправильно розумію, але чому наступний варіант не є алгоритмом перевірки поліноміального часу? Дано (x,y) , обчисліть функцію f(x) самостійно, використовуючи алгоритм поліноміального часу, і поверніть "правильне", якщо f(x)=y . Можливо, ви неправильно прочитали чи помилували професора і замість цього мали намір сказати, що існують проблеми, перевірені в поліноміальний час, але не вирішені в поліноміальний час?
— Lieuwe Vinkhuijzen

1
@LieuweVinkhuijzen "сказати, що існують проблеми, перевірені в поліноміальний час, але не вирішені в поліноміальний час?" [відп. потрібно]
— Т. Веррон

@ T.Verron Haha так, я теж був би дуже радий бачити докази професора для цього твердження;)
— Lieuwe Vinkhuijzen

Відповіді:


44

Це можливо лише в тому випадку, якщо для даного входу є багато допустимих виходів. Тобто, коли відношення R не є функцією, оскільки воно порушує унікальність.

Наприклад, розгляньте цю проблему:

n∈NMNL(M)=L(N)#N>n#NN

Mnn

n,M,NNn,ML(M)=L(N)#N>nN

L(M)=L(N)nGnn,Gn


1
Очікував, що це не так. Чудова відповідь!
— Філіп Хаглунд

7
zM,NzzMz

2
M,NM,NNMMNTxyT(x)y
— Lieuwe Vinkhuijzen

3
Ry

2
NP⊊P

1

Це лише опрацювання першого речення відповіді @ chi, оскільки я не вважав це очевидним.

Ідея полягає в тому, що якщо у вас є алгоритм, який знаходить відповідь на якусь проблему в поліноміальний час, то є дві можливості:

  1. Ви раніше довели (математично), що вихід алгоритму є рішенням проблеми, і в цьому випадку самі кроки алгоритму формують доказ коректності.

  2. У вас є інший алгоритм перевірки того, що результат дійсно є рішенням, і в цьому випадку ви повинні запустити цей алгоритм (інакше ви потрапляєте під випадок №1), що означає, що ви робите це в поліноміальний час.

Тому такої проблеми не може бути.


Я не розумію №2. Що означає, що різний алгоритм працює в поліноміальний час?
— Альберт Хендрікс

@AlbertHendriks: Якщо верифікатор не запускався в поліноміальний час, тоді оригінальний вирішальник не міг стверджувати, що знайшов правильне рішення за полиномний час, оскільки йому потрібно запустити перевіряючий елемент, щоб переконатися, що його рішення правильне.
— Мехрдад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.