Perché P e P / poly non sono banalmente la stessa cosa?


10

La definizione di P è un linguaggio che può essere deciso da un algoritmo temporale polinomiale. La definizione di P / poly può essere intesa come un linguaggio che può essere deciso da un circuito di dimensioni polinomiali (vedi http://pages.cs.wisc.edu/~jyc/02-810notes/lecture09.pdf ). Ora, perché non è possibile simulare un circuito di dimensioni polinomiali in tempo polinomiale?


4
P / poly può calcolare lingue indecidibili (esercizio).
Yuval Filmus

Grazie, ma cosa c'è di sbagliato nella mia tesi: che un circuito di dimensioni polinomiali può essere simulato in tempo polinomiale?
dcw

3
È sbagliato. I circuiti di dimensioni polinomiali per diverse lunghezze di ingresso potrebbero essere radicalmente diversi e quindi non possono essere tutti descritti da una singola macchina di Turing.
Yuval Filmus

Grazie, ma dove nella definizione P dice che siamo limitati a una singola macchina di Turing? Tutte le definizioni che ho visto sono come in mathworld.wolfram.com/PolynomialTime.html
dcw

3
@dcw Una lingua è in P se c'è una macchina di Turing tale che ...
David Richerby

Risposte:


19

Il punto sui circuiti è che un circuito ha un numero fisso di ingressi. Ciò significa che, per definire una lingua, abbiamo bisogno di una famiglia di circuiti C0,C1,C2,... tale che il circuito  Cio ti dice quali stringhe di lunghezza  io sono nella lingua, per ciascuna  io . Ciò non richiede che vi sia alcuna relazione tra i circuiti CioCi+1 : potrebbero essere completamente diversi. In particolare, per qualsiasi set  SN , è possibile impostare dichiarare Ci=true seiS eCi=false periS . Anche seS  è indecidibile!

Al contrario, una lingua è in  P se esiste una singola macchina di Turing che ti dice se ogni possibile input di ogni possibile lunghezza è nella lingua. Ora, non puoi giocare a giochi divertenti sugli input di diverse lunghezze.

Hai ragione che siamo in grado di valutare qualsiasi circuito fissato in  P . Ma questo non è necessariamente sufficiente per decidere una lingua in P/poly . Per fare questo, avremo bisogno per calcolare la lunghezza dell'input, quindi utilizzare tale per determinare quale circuito  Cio bisogna valutare, e quindi valutare il circuito. Come mostra l'esempio sopra, la parte "determina quale circuito" potrebbe non essere nemmeno calcolabile, e tanto meno calcolabile in tempo polinomiale.


1
Sono passati anni da quando ho studiato tutto questo e ho avuto (quasi) dimenticato la definizione di , ma leggendo questa risposta ha portato tutto indietro: mi ricordo avendo la stessa confusione quando ho incontrato la definizione e l'arrivo al il stessa risoluzione / comprensione. :-)P/poly
ShreevatsaR
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.