Porque muitos problemas realmente práticos são o problema de parada disfarçado. Uma solução para eles resolve o problema da parada.
Você quer um compilador que encontre o código de máquina mais rápido possível para um determinado programa? Na verdade, o problema de parada.
Você possui JavaScript, com algumas variáveis com níveis altos de segurança e outras com nível baixo de segurança. Você deseja garantir que um invasor não consiga acessar as informações de alta segurança. Este também é apenas o problema da parada.
Você tem um analisador para sua linguagem de programação. Você o altera, mas deseja garantir que ele ainda analise todos os programas que costumava usar. Na verdade, o problema de parada.
Você tem um programa antivírus e deseja verificar se algum dia executa uma instrução maliciosa. Na verdade, apenas o problema de parada.
Quanto ao exemplo da wikipedia, sim, você pode modelar um computador moderno como uma máquina de estado finito. Mas há dois problemas com isso.
Todo computador seria um autômato diferente, dependendo do número exato de bits de RAM. Portanto, isso não é útil para examinar um pedaço de código específico, pois o autômato depende da máquina na qual ele pode ser executado.
Você precisaria de estados se tiver n bits de RAM. Portanto, para o seu computador moderno de 8 GB, são 2 32000000000 . Esse é um número tão grande que o wolfram alpha nem sabe como interpretá-lo. Quando eu faço 2 10 9, ele diz que tem 300000000 dígitos decimais. Isso é claramente muito grande para armazenar em um computador normal.2n2320000000002109300000000
O problema da parada permite pensar sobre a dificuldade relativa dos algoritmos. Isso nos permite saber que existem alguns algoritmos que não existem e que, às vezes, tudo o que podemos fazer é adivinhar um problema e nunca sabemos se o solucionamos.
Se não tivéssemos o problema da parada, ainda estaríamos procurando o algoritmo mágico de Hilbert, que introduz teoremas e resultados, sejam eles verdadeiros ou não. Agora sabemos que podemos parar de procurar e podemos nos esforçar para encontrar heurísticas e o segundo melhor método para resolver esses problemas.
ATUALIZAÇÃO: Apenas para abordar algumas questões levantadas nos comentários.
@Tyler Fleming Cloutier: O problema "sem sentido" surge na prova de que o problema da parada é indecidível, mas o que está no cerne da indecidibilidade é realmente ter um espaço de pesquisa infinito. Você está procurando um objeto com uma determinada propriedade e, se não existir, não há como saber quando você termina.
A dificuldade de um problema pode estar relacionada ao número de quantificadores que possui. Tentando mostrar que existe ( ) um objeto com uma propriedade arbitrária, você deve procurar até encontrar um. Se não existe, não há como (em geral) saber disso. É difícil provar que todos os objetos ( ∀ ) têm uma propriedade, mas é possível procurar um objeto sem a propriedade para refutá-lo. Quanto mais alternâncias existirem entre todos e existir, mais difícil será o problema.∃∀
Para mais informações, consulte a Hierarquia Aritmética . Qualquer coisa acima de é indecidível, embora o nível 1 seja semi-decidível.Σ0 00 0= Π0 00 0
Também é possível mostrar que existem problemas indecidíveis sem usar um paradoxo sem sentido, como o problema de Halting ou o paradoxo de Liars. Uma máquina de Turing pode ser codificada usando uma sequência de bits, ou seja, um número inteiro. Mas um problema pode ser codificado como um idioma, ou seja, um subconjunto dos números inteiros. Sabe-se que não há bijeção entre o conjunto de números inteiros e o conjunto de todos os subconjuntos dos números inteiros. Portanto, deve haver alguns problemas (linguagens) que não possuem uma máquina de Turing associada (algoritmo).
@Brent: sim, isso admite que isso é decidível para computadores modernos. Mas é decidível para uma máquina específica. Se você adicionar uma unidade USB com espaço em disco, ou a capacidade de armazenar em uma rede, ou qualquer outra coisa, a máquina mudou e o resultado ainda não se mantém.
Também é preciso dizer que muitas vezes o algoritmo diz "esse código será interrompido" porque ele falhará e ficará sem memória, e que a adição de um único bit extra de memória faria com que o código ter sucesso e dar um resultado diferente.
O problema é que as máquinas de Turing não têm uma quantidade infinita de memória. Nunca há um tempo em que uma quantidade infinita de símbolos seja gravada na fita. Em vez disso, uma máquina de Turing tem memória "ilimitada", o que significa que você pode continuar obtendo mais fontes de memória quando precisar. Computadores são assim. Você pode adicionar RAM, pen drives ou discos rígidos ou armazenamento em rede. Sim, você fica sem memória quando fica sem átomos no universo. Mas ter memória ilimitada é um modelo muito mais útil.