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


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 не є функцією, оскільки воно порушує унікальність.

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

nNMNL(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
NPP

1

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

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

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

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

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


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

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