Por que P e P / poli não são trivialmente iguais?

10

A definição de P é uma linguagem que pode ser decidida por um algoritmo de tempo polinomial. A definição de P / poli pode ser entendida como uma linguagem que pode ser decidida por um circuito de tamanho polinomial (consulte http://pages.cs.wisc.edu/~jyc/02-810notes/lecture09.pdf ). Agora, por que um circuito de tamanho polinomial não pode ser simulado em tempo polinomial?

dcw
fonte
4
P / poly pode calcular idiomas indecidíveis (exercício).
Yuval Filmus
Obrigado, mas o que há de errado com meu argumento - que um circuito de tamanho polinomial pode ser simulado em tempo polinomial?
DCW
3
Está errado. Os circuitos de tamanho polinomial para diferentes comprimentos de entrada podem ser radicalmente diferentes e, portanto, nem todos podem ser descritos por uma única máquina de Turing.
Yuval Filmus
Obrigado, mas onde, na definição P, diz que estamos restritos a uma única máquina de Turing? Todas as definições que eu vi são como em mathworld.wolfram.com/PolynomialTime.html
DCW
3
@dcw A linguagem é em P se houver uma máquina de Turing tal que ...
David Richerby

Respostas:

19

O ponto sobre os circuitos é que um circuito possui um número fixo de entradas. Isto significa que, para definir uma linguagem, precisamos de uma família de circuitos C0,C1,C2, tal que o circuito  Ci diz-lhe que strings de comprimento  i estão no idioma, para cada  i . Isso não exige que não deve haver qualquer relação entre a circuitos CiCi+1 : eles pode ser completamente diferente. Em particular, para qualquer conjunto  SN , você pode definir declarar Ci=true seiS eCi=false paraiS . Mesmo queS  seja indecidível!

Por outro lado, um idioma está em  P se houver uma única máquina de Turing que informa se todas as entradas possíveis de todos os comprimentos possíveis estão no idioma. Agora, você não pode jogar nenhum jogo engraçado sobre entradas de diferentes comprimentos.

Você está correto que possamos avaliar qualquer circuito fixo em  P . Mas isso não é necessariamente suficiente para decidir uma linguagem em P/poly . Para fazer isso, primeiro precisamos calcular o comprimento da entrada, depois usá-lo para determinar qual circuito  Ci precisamos avaliar e depois avaliar o circuito. Como mostra o exemplo acima, a parte "determinar qual circuito" pode nem ser computável, muito menos computável em tempo polinomial.

David Richerby
fonte
11
Tem sido anos desde que eu estudei tudo isso e eu tinha (quase) esquecido a definição de , mas lendo esta resposta trouxe tudo de volta: Eu me lembro de ter a mesma confusão quando eu encontrei pela primeira vez a definição e chegar ao mesma resolução / entendimento. :-)P/poly
ShreevatsaR