O problema de parada afirma que não há algoritmo que determine se um determinado programa é interrompido. Como conseqüência, deve haver programas sobre os quais não podemos dizer se eles terminam ou não. Quais são os exemplos mais simples (menores) conhecidos de tais programas?
computability
turing-machines
halting-problem
MaiaVictor
fonte
fonte
Respostas:
Um exemplo bastante simples pode ser um programa testando a conjectura de Collatz :
Sabe- se que para até pelo menos , mas em geral é um problema em aberto.n 5×260≈5.764×1018
fonte
"Nós" não é um algoritmo =) Não existe um algoritmo geral que possa determinar se um determinado programa é interrompido para cada programa .
Considere o seguinte programa:
A função is_perfect verifica se n é um número perfeito . Não se sabe se existem números perfeitos ímpares, por isso não sabemos se este programa é interrompido ou não.
fonte
Você escreve:
Este é um não sequitur, em ambas as direções. Você sucumbe a uma falácia comum que vale a pena abordar.
Dado qualquer programa fixo , seu problema de parada (" sempre pára?") É sempre decidível, porque a resposta é "sim" ou "não". Mesmo que você não saiba qual é, você sabe que um dos dois algoritmos triviais que respondem sempre "sim" resp. "no" resolve o problema de asfalto- .P PP P P
Somente se você exigir que o algoritmo resolva o problema de parada para todos os programas você poderá mostrar que esse algoritmo não pode existir.
Agora, saber que o problema da parada é indecidível não implica que existam programas dos quais ninguém possa provar o término ou o loop. Mesmo se você não for mais poderoso que uma máquina de Turing (que é apenas uma hipótese, não um fato comprovado), tudo o que sabemos é que nenhum algoritmo / pessoa pode fornecer essa prova para todos os programas. Pode haver uma pessoa diferente sendo capaz de decidir para cada programa.
Algumas leituras mais relacionadas:
Portanto, você vê que sua pergunta real (conforme repetida abaixo) não tem nada a ver com se o problema da parada é computável. Em absoluto.
Isso por si só é uma pergunta válida; outros deram boas respostas. Basicamente, você pode transformar cada declaração com valor de verdade desconhecido em um exemplo, desde que ele tenha um valor de verdade:S
Concedido, estes não são muito "naturais".
fonte
Qualquer problema em aberto referente à existência de um número com propriedades particulares dá origem a esse programa (aquele que procura por esse número). Por exemplo, considere a conjectura de Collatz; como não sabemos se é verdade, também não sabemos se o seguinte programa termina:
fonte
Dado que o problema do Busy Beaver não foi resolvido para uma máquina de Turing com 5 estados e 2 símbolos, deve haver uma máquina de Turing com apenas cinco estados e apenas dois símbolos que não foram mostrados para parar ou não quando iniciados para uma fita vazia . Esse é um programa muito curto, conciso e fechado.
fonte
a pergunta é complicada porque a decidibilidade (a formalização / generalização equivalente ao CS do problema de interrupção) está associada aos idiomas; portanto, ela precisa ser reformulada nesse formato. isso parece não ser muito apontado, mas muitos problemas abertos em matemática / CS podem ser facilmente convertidos em problemas (idiomas) de decidibilidade desconhecida. isto é devido a uma correspondência estreita entre prova de teoremas e análise de (in) decidibilidade. por exemplo (um pouco como a outra resposta em números ímpares perfeitos), considere a conjectura de primos gêmeos que data dos gregos (mais de 2 milênios atrás) e está sujeita a importantes avanços recentes de pesquisa, por exemplo, de Zhang / Tao. converta-o em um problema algorítmico da seguinte maneira:
o algoritmo procura primos gêmeos e pára se encontrar n deles. não se sabe se esse idioma é decidível. a resolução do problema dos primos gêmeos (que pergunta se existe um número finito ou infinito) também resolveria a decidibilidade dessa linguagem (se também for comprovado / descoberto quantos existem, se finitos).
outro exemplo, pegue a hipótese de Riemann e considere esta linguagem:
o algoritmo procura por zeros não triviais (o código não é especialmente complexo, é semelhante à descoberta de raízes e existem outras formulações equivalentes que são relativamente simples, que basicamente calculam somas de "paridade" de todos os números primos menores que x etc) e param se encontra n deles e, novamente, não se sabe se essa linguagem é decidível e a resolução é "quase" equivalente a resolver a conjectura de Riemann.
agora, que tal um exemplo ainda mais espetacular? ( ressalva, provavelmente mais controversa também)
da mesma forma, a resolução da decidibilidade dessa linguagem é quase equivalente ao problema P vs NP . no entanto, há um caso menos óbvio para o código "simples" para o problema nesse caso.
fonte
fonte