Це дуже цікаве питання.
Спочатку уточнююче зауваження. Зауважте, що "верхня межа кількості свідків" не є властивістю обчислювальної проблеми як такої, а певного верифікатора, який використовується для вирішення задачі , подібно до того, як "верхня межа кількості станів" не була б властивість проблеми, але машина Тюрінга, що вирішує її. Таким чином, сказати " N P проблема з верхньою межею щодо кількості рішень" не зовсім точна, і якщо P = N P, то кожна проблема N P має верифікатор з будь-якою кількістю бажаних рішень (включаючи нуль, включаючи всі можливі рядки) .NPNPP=NPNP
Отже, ми повинні зробити визначення, щоб вирішити ваше питання. Для , скажімо , Н Р Проблеми л «має в більшості з ( п ) рішення» , якщо для деякої константи з є Про ( п з ) Час верифікаторів V такими , що для кожної довжини входу п і кожен x ∈ L довжиною n , є різні y 1 , … , y s ( ns:N→NNPLs(n)cO(nc)Vnx∈Ln довжини n c такою, щоV(x, y i )приймає всіi, аV(x,y)відкидає всі іншіyдовжини n c .y1,…,ys(n)ncV(x,yi)iV(x,y)ync
Я думаю, що зараз можу сказати:
- Кожна -повна проблема, яку я знаю (визначена певним природним верифікатором), має очевидну відповідну версію підрахунку # P -комплект (з тим самим верифікатором).NP#P
- Для будь-якої -повної проблеми, визначеної верифікатором, що має щонайбільше рішень p o l y ( n ) (або навіть 2 n o ( 1 ) рішення), відповідна версія рахунку, ймовірно, не є # P -повною.NPpoly(n)2no(1)#P
Детальніше: Припустимо, є N P -комплектним, з верифікатором V, що має щонайбільше O ( n c ) рішень. Тоді натуральний підрахунок "рішення" версія L , яку ми визначаємо якLNPVO(nc)L
CountL(x):=the number of y such that V(x,y) accepts
обчислимо в , тобто, функція поліноміальних по з O ( журнал п ) запитів до N P . Це тому , що вирішити , є чи число рішень й не більш до знаходиться в N P : свідок, якщо він існує, це просто число у я «s робить V прийняти, що ми знаємо , що в більшості O ( п в )FPNP[O(logn)]O(logn)NPxkNPyiVO(nc). Тоді ми можемо бінарний пошук , використовуючи цю завдання обчислити точне число рішень L .NPL
Таким чином, -повна задача такого роду не може бути поширена на # P -повне завдання звичайним способом, якщо тільки # P ⊆ F P N P [ O ( log n ) ] . Це виглядає малоймовірним; вся ієрархія часу поліномів в основному руйнується до P N P [ O ( log n ) ] .NP#P#P⊆FPNP[O(logn)]PNP[O(logn)]
Якщо припустити, що у вищесказаному, ви все одно отримаєте малоймовірний наслідок. Ви б показали, що # P можна обчислити за 2 n o ( 1 ) час за допомогою N P oracle. Це більш ніж достатньо, щоб довести, наприклад, що E X P N P ≠ P P і згодом E X P N P ⊄ P / p o l ys(n)=2no(1)#P2no(1)NPEXPNP≠PPEXPNP⊄P/poly. Не те, що ці розділення є малоймовірними, але, мабуть, малоймовірно, що це було б доведено, надаючи алгоритм -oracle для підсумкового часу для підсумкового часу .NP
До речі, я тут нічого занадто проникливого не сказав. В літературі майже напевно є такий аргумент.