Tentei provar que o seguinte idioma é recursivo: para , um número inteiro positivo: onde
É fácil provar porque é finito, mas eu não percebi isso e tentei provar isso encontrando uma TM decisiva para ele. Eu pensei que, como a codificação da TM é de comprimento , ela não pode ter mais de estados e, executando-a no épsilon por etapas, se parar por essa altura, aceitar outras rejeições. Foi-me dito que está incorreto - é uma solução errada. Como posso provar isso usando esse método (e não da maneira que mencionei sobre ser finito)?
Respostas:
Não existe uma maneira geral de encontrar uma TM decisiva paraLk
Você está certo de que é recursivo porque, sendo um subconjunto do conjunto finito , também é finito.Lk Σk
Você prefere encontrar uma TM decisiva para e sugere algumas técnicas. Mesmo sem entrar em detalhes dessas técnicas e por que elas não funcionam, você não tem nenhuma chance de ter sucesso.Lk
A primeira coisa que você deve notar é que o argumento de finitude indica que existe um TM decisivo para o idioma , mas não informa o que é esse TM. É um exemplo de prova não construtiva: você prova que existe uma decisão, mas não pode dizer qual é.Mk Lk
Agora, suponha que, dado , você tenha um procedimento para encontrar esse decisivo para o idioma (em vez de apenas provar que ele existe). Então, dada qualquer máquina de Turing , existe um número inteiro tal que , de modo que . Em seguida, você pode usar o procedimento para encontrar uma decisão TM que possa determinar se . Então você tem uma maneira de decidir se o TM pára na entrada vazia. E isso funciona para qualquer TMk P(k) Mk Lk M k′ |⟨M⟩|=k′ ⟨M⟩∈Σk′ P Mk′ ⟨M⟩∈Lk′ M M . No entanto, isso não é possível, porque é indecidível se um determinado TM pára na entrada vazia.M
Portanto, o procedimento não pode existir.P
Desde que você está procurando uma maneira geral para encontrar o decisivo TM , você não pode ter sucesso porque esse método seria precisamente um procedimento como .Mk′ P
Observe que essa prova ainda pode deixar a possibilidade (muito remota) de encontrar um fator para alguns valores específicos de , mas você precisaria identificar com precisão os valores em questão e o método não funcionaria para todos os valores de . Não estou aconselhando você a tentar.k k
fonte
Você pode "consertar" sua prova usando a função de castor ocupado. Seja o número máximo de etapas que uma máquina de Turing com tamanho de descrição no máximo executa antes de parar, quando recebe a entrada vazia. Se você conhece (ou mesmo apenas um limite superior em , ou seja, alguns ), poderá resolver os problemas de parada para máquinas de Turing com o tamanho de descrição (e a entrada vazia) executando a máquina fornecida por até para as (ou ). Se não parar nesse ponto, então você sabe que nunca pára.Bk k Bk Bk Tk≥Bk k Bk Tk
Como o problema de parada não é decidível, sabemos que a função não pode ser computável. De fato, nenhuma função computável satisfaz para todos os . Em outras palavras, para qualquer função computável , é o caso de para infinitamente muitos . Grosso modo, cresce mais rápido que todas as funções computáveis.Bk Tk Tk≥Bk k f(k) Bk>f(k) k Bk
Na verdade, usando um diagonalization pode mostrar que faz crescer mais rápido do que toda função computável: para cada computável existe tal que para todo . Isso foi provado pela primeira vez pelo Rado .Bk f(k) K Bk>f(k) k≥K
fonte
A principal falácia é que você assume que o número de estados de uma TM limita seu tempo de execução (antes da finalização) de alguma forma. Isto é falso.
Caso em questão, existem máquinas de Turing universais , que são TMs finitamente descritas que podem exibir qualquer comportamento, desde o término rápido da execução arbitrariamente longa até a repetição de loop, com a entrada correta.
Em uma nota técnica, as TMs universais são geralmente descritas como tendo dois parâmetros, uma codificação de TM e a entrada para simulá-lo. É fácil mesclá-los em um parâmetro, para que haja, de fato, MTs universais unárias.
Mais especificamente, você ignora a entrada da TM codificada, que pode ser arbitrariamente grande (e complicada). O estado real de uma TM é o produto do estado de controle e do conteúdo da fita, portanto, um argumento combinatório simples baseado no número de estados de controle sozinho não é suficiente. Em particular, uma TM não está em um loop inevitável quando visita algum estado pela segunda vez.
fonte