Existem provas não construtivas da existência de “pequenas” máquinas de Turing / NFAs?

11

Depois de ler uma pergunta relacionada , sobre provas não-construtivas de algoritmos, fiquei pensando se existem métodos para mostrar a existência de máquinas de computação "pequenas" (digamos, em termos de estado) sem realmente construí-la.

Formalmente:

suponha que recebamos alguma linguagem e conserte algum modelo de computação (NFAs / turing machine / etc.).LΣ

Existem quaisquer resultados de existência não-construtivas que mostram um máquina -state para G existe, mas sem a capacidade de encontrar (em p o l y ( n , | Σ | ) tempo) é?nLpoly(n,|Σ|)

Por exemplo, existe alguma linguagem regular para a qual podemos mostrar n s c ( L ) n, mas não sabemos como construir um autômato n- state?Lnsc(L)nn

( é a complexidade não determinística do estado de L , ou seja, o número de estados no NFA mínimo que aceita L ).nsc(L)LL


Edição: depois de alguma discussão com Marzio (obrigado!) Acho que posso formular melhor a pergunta da seguinte maneira:

Existe uma linguagem e um modelo de computação para o qual o seguinte se aplica:L

  1. Sabemos como construir uma máquina que calcula que possui m estados.Lm

  2. Temos uma prova de que -states máquina para L existe (onde n < < m ), mas de qualquer não podemos encontrá-lo em tudo ou levaria tempo exponencial para calcular isso.nLn<<m

RB
fonte
o que é nsc (L)? a questão parece estar relacionada com a compressão complexidade / Kolmogorov, que pede para encontrar máquinas pequenas (EST) para representar seqüências ...
vzn
nsc (L) é a complexidade não determinística do estado de L (o número de estados no menor NFA que aceita L).
RB
outra idéia / ângulo, talvez haja algumas classes de circuitos "pequenas" (outro modelo de computação) para as quais é comprovado que eles podem calcular certas funções, mas a construção real é complicada? SJ mencionou recentemente Barrington que os programas de ramificação com largura 5 podem computar a maioria ...?
vzn
@vzn A prova do teorema de Barrington fornece um procedimento fácil para converter fórmulas em programas de ramificação.
Sasho Nikolov
1
@RB: ok, você pode encontrar exemplos mais interessantes da complexidade de Kolmogorov com recursos limitados (em particular a complexidade com prazos). Por exemplo, dada uma string , qual é a menor máquina que roda no tempo O ( 2 n ) que imprime x ? Nesse caso, podemos facilmente criar uma TM que imprima x , mas encontrar a menor requer a digitalização de todas as TMs | M | < | x | (o tempo limite o torna computável). Quando tiver mais tempo, expandirei minha resposta. xO(2n)xx|M|<|x|
Marzio De Biasi

Respostas:

8

Apenas um comentário estendido com um exemplo trivial; você pode escolher o idioma de um elemento:

Lk={Mσ(M)=Σ(k)}

Lkkk

kLk2k(logk+2)

Marzio De Biasi
fonte
Embora concorde que funciona, eu estava olhando para a existência mostrando técnicas de dado explicitamente a linguagem L.
RB
3
O que é um "idioma explicitamente fornecido"?
Jeffε
3

MODp={aipi0}pO(logp)

O(log2+o(1)p)MODp

REF: Seção 4.2 de (Ambainis e Yakaryilmaz, 2015) .

Abuzer Yakaryilmaz
fonte
2

Outra solução é usar o lema de Higman :

Um idioma fechado em subpalavras é regular.

uvuv

Portanto, escolha qualquer linguagem L, seu fechamento de subpalavras é regular, mas não é de todo construtível, pois L é arbitrário.

CP
fonte