Existe um candidato para um problema natural em

27

Quero saber se a não uniformidade ajuda na prática as funções de computação. É fácil mostrar que existem funções em P / p o l y - P , assuma qualquer função incontestável f e considere a linguagem { 0 f ( n ) : n ω }, que claramente possui circuitos não uniformes simples, mas não é computável de maneira uniforme, mas esse não é o tipo de função em que estou interessado.P/ Poly- Pf0 0f( N ): n ω

Existe uma função que sabemos que pode ser calculada de maneira não uniforme, mas não sabemos se ela pode ser calculada de maneira uniforme (ou pelo menos provar que ela não pode ser calculada de maneira uniforme não é óbvia)?

Como a não uniformidade de circuitos pode ser usada para funções de computação que não se sabe serem computáveis ​​uniformemente (com quase a mesma quantidade de recursos)?

Observe que eu não quero funções patológicas como a incontestável mencionada acima, quero funções naturais nas quais as pessoas realmente se interessam em computação e é plausível que possa ser ou possa ter sido calculado de maneira uniforme.

Edit: Eu sei que B P P P / p o l y . Portanto, uma resposta que não é um resultado de derandomizações é mais interessante para mim.B PPP/ Poly

Editar 2: Como András Salamon e Tsuyoshi Ito ter dito nas suas respostas, S p um r s e P / p o l Y , e existem problemas interessantes em S p um r s e que não são conhecidos por serem em P , assim formalmente que estes tenham respondido o que eu pedi, mas isso não ajudar com o que eu estou realmente interessado em uma vez que a razão de que eles estão em P / p o l y é a possibilidade de codificar uma linguagem escassa no circuito. Uma linguagem que não seja escassa seria mais interessante.Sp a r s e P/ PolySparsePP/poly

Kaveh
fonte
@ András Salamon, @Tuyuyhi Ito: obrigado. Mas o que me interessa é entender como a não uniformidade pode ajudar nas funções de computação. O fato de que as línguas esparsas estão em P / p o l y não ajuda com isso, eles estão em P / p o l y simplesmente porque podemos "codificar"-los para o circuito. Eu deveria ter acrescentado o requisito à minha pergunta que "a língua não é trivial em P / p o l y ". P/polyP/polyP/poly
precisa saber é o seguinte

Respostas:

13

Não sei se isso atende aos seus requisitos, mas o post de Bill Gasarch em julho de 2010 pergunta sobre idiomas no SPARSE ∩NP que não se pensa estar em P, dando um exemplo da Teoria de Ramsey. Qualquer um desses idiomas pertence a (P / poli) ∩NP.

Relacionado a isso, para qualquer idioma L ∈NP, o idioma T L = {1 n : L contém alguma sequência de comprimento n } está em TALLY ∩NP ⊆ SPARSE∩NP ⊆ (P / poli) ∩NP. Dependendo da escolha da linguagem L , T L não pode ter uma razão óbvia para pertencer a P.

Tsuyoshi Ito
fonte
8

O fraseado elegantemente escasso de Tsuyoshi Ito em outra resposta não o diz explicitamente, mas talvez valha a pena ressaltar: qualquer idioma esparso está em P / poli. Além disso, qualquer idioma de registro está em P / poli (como todo idioma de registro é escasso).

Portanto, uma maneira de encontrar idiomas "naturais" em P / poli, mas não em P, é procurar idiomas esparsos "difíceis". Como você ressalta, os "mais difíceis" são os indecidíveis quando codificados de maneira esparsa, por exemplo, em unários. De maneira mais geral, a versão codificada unária de qualquer idioma fora de EXP ficará fora de P. (caso contrário, considere a máquina de Turing de tempo exponencial que gera a codificação unária, composta pela máquina que resolve o idioma codificado unário resultante no tempo isso é polinomial na codificação unária. Isso é exponencial no tamanho da instância original. A máquina geral é executada em tempo exponencial.) Alguma linguagem acessível de 2 EXP completa pode ser adequada ao seu gosto como um problema "natural".

Observe que a linguagem esparsa da teoria de Ramsey, esparsa, de Bill Gasarch parece se enquadrar na categoria de línguas construídas pela esparsificação de uma linguagem difícil. Se alguém codifica a instância como um triplo de números binários, em vez de dois unários e um binário, a coloração não é mais do tamanho polinomial, portanto a linguagem não está obviamente em NP.

András Salamon
fonte
6

É mais um comentário em resposta à pergunta revisada (revisão 3) do que uma resposta, mas é muito longo para um comentário.

Simplesmente excluir idiomas esparsos não é suficiente para excluir idiomas como { x ∈ {0,1} * : | x | ∈ S } em vez de {1 n : nS }, em que S é um subconjunto infinito de {0, 1, 2,…}. Gostaria de salientar que pode ser difícil distinguir entre o caso em que um idioma pertence a P / poly porque é "essencialmente esparso" (como {1 n : nS } e { x : | x | ∈ S}) e o caso em que um idioma pertence a P / poly por outros motivos. A coisa problemática aqui é, obviamente, como definir o termo "essencialmente escasso".

Você pode definir "escassez essencial" da seguinte forma: um idioma é essencialmente escasso se for redutível a um idioma esparso. No entanto, é necessário ter cuidado, pois se você usar a redutibilidade de Turing em tempo polinomial nesta definição, a definição será equivalente à associação a P / poly!

Portanto, uma coisa óbvia a se tentar é usar a redutibilidade de muitos em um polinômio. Não sei se isso é equivalente à participação em P / poly, muito menos se P / poly contém qualquer linguagem natural que não seja essencialmente esparsa nesse sentido.

Tsuyoshi Ito
fonte
Na verdade, pensei nisso quando vi as respostas antes de modificar a pergunta, pois era natural pensar na combinação booleana de linguagens esparsas. Eu pensei que a exclusão línguas que são um C 0 redutível à linguagem esparsa (ou talvez um pouco mais) deve ser suficiente para a minha pergunta, mas parece que isso é mais envolvido do que eu pensava. AC0
Kaveh
@ Kaveh: Essa pode ser outra boa definição para “essencialmente esparsa”. Lendo seu comentário, eu me pergunto se P / poly = P∪ (AC0 / poly) (acho que não), porque qualquer problema em (P / poly) ∖ ( Pode-se dizer que P∪ (AC0 / poli)) é “computável usando uma família não uniforme de circuitos de tamanho polinomial combinando realmente a potência dos circuitos de tamanho polinomial e a potência da não uniformidade.”
Tsuyoshi Ito,
Um possível problema com a minha definição baseada em um dos seus exemplos é se o seguinte idioma é essencialmente escassa : verifique se o número de uns na entrada está em uma linguagem esparsa S . (De um modo mais geral, seja f um problema de função completo para a classe de complexidade C e S seja uma linguagem esparsa. Pense em f como tendo um grande intervalo semelhante à função NumOnes. Seja L o conjunto de x s st f ( x ) ( S. ))SfCSfLxf(x)S
Kaveh
[continuação] Outra classe de idiomas: pegue um idioma esparso S e o idioma A completo para a classe C de complexidade e considere a concatenação L = A ' .01 . S ' ( A ' é A onde cada símbolo é substituído por duas cópias, por exemplo, 010 se torna 001100). Pode-se também exigir que o comprimento da segunda parte na concatenação seja menor que o comprimento da primeira parte. Essas linguagens atendem a todas as condições, exceto sendo um problema natural que as pessoas estão realmente interessadas em resolver. SACL=A.01.SAA
Kaveh
@ Kaveh: Hmm, entendo. Obrigado por compartilhar os exemplos. Retiro a ideia de visualizar (P / poli) ∖ (P∪ (AC0 / poli)) como “P / poli por razões não triviais.” uma linguagem esparsa, então ainda há alguma esperança de que a definição de “escassez essencial” que sugeri na resposta seja adequada.
Tsuyoshi Ito