Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
O que é um exemplo de linguagem indecidível?
Um dos exemplos mais famosos de uma linguagem indecidível é o problema de parada .

O problema de parada:

O problema de interrupção é o problema de determinar, dada a descrição de um programa de computador arbitrário e uma entrada, se o programa terminará de executar ou continuará a ser executado para sempre. Mais formalmente, ele pergunta:

* Entrada: `` onde:
* `P` é uma máquina de Turing (ou uma representação de qualquer programa de computador de uso geral).
* `I` é a entrada para a máquina de Turing` p`.
* saída:
* "Sim" se a máquina de Turing `p` interromper (termina de execução) quando recebida entrada` i`.
* "Não" se a máquina de Turing `p` não parar (loops para sempre) quando recebe a entrada` i`.

Por que é indecidível:

O problema de interrupção é indecidível, o que significa que existe * Máquina de Turing (ou algoritmo) que pode resolver corretamente o problema de parada para * todas as entradas possíveis ``.

A prova é normalmente feita por contradição. Suponha que exista * uma máquina de Turing `h` que resolva o problema de parada. `H` toma` `como entrada e saídas" sim "se` p` interromper `i` e" não "se` p` lotes para sempre em `i`.

Em seguida, podemos construir outra máquina de Turing `d` (frequentemente chamada de" diagonalizador ") que usa` h` como uma sub -rotina:

`` `
Turing Machine D (P):
1. Execute H (P, P) // Run H com P como o programa e a entrada
2. Se h (p, p) retornar "Sim" (P pares na entrada P):
Então faça um loop para sempre.
3. Se h (p, p) retornar "não" (p loops para sempre na entrada p):
Então pare.
`` `

Agora, o que acontece quando executamos `d` por si mesmo como entrada:` d (d) `?

* cenário 1:suponha `d (d)` parada.
- Isso significa que na etapa 1, `h (d, d)` retornou "sim" (porque `d` interrompe se e somente se` h (d, d) `diz que` d 'termina na entrada `d`).
- mas se `h (d, d)` retornar "sim", então `d` foi projetado para fazer um loop para sempre (na etapa 2). Isso contradiz nossa suposição de que `d (d)` interrompe.

* Cenário 2:suponha `d (d)` loops para sempre.
- Isso significa que na etapa 1, `h (d, d)` retornou "não" (porque `d` loops para sempre se e somente se` h (d, d) `diz que` d` loops na entrada `d`).
- mas se `h (d, d)` retornar "não", então `d` foi projetado para parar (na etapa 3). Isso contradiz nossa suposição de que `d (d)` loops para sempre.

Como ambos os cenários levam a uma contradição, nossa suposição inicial de que existe uma máquina de Turing `h` que resolve o problema de interrupção deve ser falsa. Portanto, o problema de parada é indecidível.

em termos mais simples: Você não pode escrever um programa que sempre possa prever de maneira confiável se outro programa acabará por parar ou correr para sempre.

Significado:

A indecidibilidade do problema de interrupção tem implicações profundas para a ciência da computação. Isso mostra que existem limites fundamentais para o que os computadores podem calcular. Também serve como base para provar a indecidibilidade de muitos outros problemas. Se você puder mostrar que resolver outro problema permitiria resolver o problema de parada, esse outro problema também deve ser indecidível.

Anterior :

Próximo :
  Os artigos relacionados
·Como eu pode simplesmente criar um Mapa do Site 
·Como você chamou o operador de computador em hindi? 
·Como criar um arquivo WSDL Validated A partir de uma UR…
·Como alocar um arquivo 
·Como usar COBOL Sintaxe 
·Como encontrar um UIImage Onde está posicionado em um …
·Como gerar um número aleatório em Ada 
·Como converter o itálico para Normal em látex 
·Como determinar objetos base em Cocoa 
·Como exportar um Exe Visual C # Studio Express 
  Artigos em destaque
·Como transferir dados de um conjunto de registros ADO p…
·Como passar um Vector Container para uma função 
·Como adicionar JavaScript no site do Weebly? 
·Como importar arquivos CSV para o MySQL Usando PHP 
·Como adicionar uma bala no PHP 
·Como usar a barra de progresso na VB 
·O que significa isso , se um arquivo de aplicativo já …
·Como remover elementos de uma matriz em PHP 
·Código HTML para Sublinhado Itálico 
·Como instalar o Visual Studio 6.0 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados