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.).
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) é?
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?
( é a complexidade não determinística do estado de L , ou seja, o número de estados no NFA mínimo que aceita L ).
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:
Sabemos como construir uma máquina que calcula que possui m estados.
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.
Respostas:
Apenas um comentário estendido com um exemplo trivial; você pode escolher o idioma de um elemento:
fonte
REF: Seção 4.2 de (Ambainis e Yakaryilmaz, 2015) .
fonte
Outra solução é usar o lema de Higman :
Portanto, escolha qualquer linguagem L, seu fechamento de subpalavras é regular, mas não é de todo construtível, pois L é arbitrário.
fonte