Pergunta  
 
Rede de conhecimento computador >> Pergunta >> PC Resolução de problemas >> Content
Como a redução do problema de interrupção pode ser aplicada para determinar a computação de um determinado algoritmo?
A redução do problema de parada é uma ferramenta poderosa para provar que um determinado problema (ou algoritmo) é indecidível , o que significa que não há algoritmo geral que sempre possa determinar corretamente se a instância do problema fornecida pode ser resolvida por algum outro algoritmo. * Não * diz diretamente se um algoritmo * é * computável, mas se determinar * uma propriedade sobre * o algoritmo é computável.

Veja como funciona a redução:

1. Compreendendo o problema de interrupção:

*O problema de parada pergunta:Dado um algoritmo (programa) *h *e uma entrada *i *para esse algoritmo, irá *h *halt (terminar em execução) quando executado com entrada *i *?
* O problema de parada é indecidível . Não há algoritmo, `interrompa (h, i)`, que sempre pode retornar corretamente `true` se *h *parar *i *e` false` se *h *loops para sempre.

2. A técnica de redução (prova por contradição):

Para provar que um problema * p * é indecidível, você faz o seguinte:

1. Suponha, por uma questão de contradição, que * p * é decidível. Isso significa que assumimos que existe um algoritmo `solvep (inputForp)` que sempre retorna corretamente a solução para qualquer instância do problema *p *.

2. Construa uma redução: Você precisa mostrar como usar o hipotético algoritmo `solvep ()` para resolver o problema de interrupção. Em outras palavras, você cria um algoritmo `parada (h, i)` que usa `solvep ()` como uma sub -rotina. Este algoritmo `interrompe (h, i)` deve funcionar da seguinte forma:

`` `
parada (h, i):
1. Transforme a instância do problema de interrupção (h, i) em uma instância do problema P, vamos chamá -lo de 'inputForp`. Esta é a etapa crucial:você está criando `inputForp` de uma maneira que *a solução para o problema P nessa entrada revela diretamente se H é interrompido em i *. As especificidades de como você faz essa transformação dependem inteiramente do problema *p *.
2. ResultP =Solvep (InputForp) // Chame nosso solucionador hipotético para o problema P.
3. Com base no resultado, determine se H interrompe em i e retorne verdadeiro ou falso de acordo.
`` `

3. Mostre que sua redução implica uma solução para o problema de interrupção: Explique claramente como o resultado de `solvep (inputForp)` diz diretamente se o algoritmo *h *é interrompido na entrada *i *.

4. contradição: Como o problema de interrupção é conhecido por ser indecidível e você mostrou que um hipotético `solvep` poderia ser usado para resolvê -lo, você alcançou uma contradição.

5. Conclusão: Portanto, nossa suposição inicial (de que * p * é decidível) deve ser falsa. Portanto, o problema * p * é indecidível.

Idéias e desafios -chave:

* a transformação é chave: A parte mais difícil é encontrar uma transformação de (h, i) para uma instância de *p *, de modo que a solução para *p *revele diretamente se *h *interrompe *i *. Isso requer inteligência e compreensão do problema de parada e do problema *p *.
* Prova por contradição: Você não está * diretamente * provando que * p * é indecidível. Você está mostrando que, se * p * * fosse * decidível, isso levaria a uma impossibilidade (resolvendo o problema de interrupção).
* Generalização: O objetivo é provar que *não pode *existir um algoritmo que resolve *p *para *todas as entradas possíveis *. Sua redução deve ser válida para qualquer algoritmo arbitrário *h *e entrada *i *.

Exemplo:o problema do vazio para as máquinas Turing

O problema do vazio para as máquinas Turing pergunta:Dada uma máquina de Turing *M *, o idioma é aceito por *m *vazio (ou seja, *m *aceita *alguma *entrada)? Vamos mostrar que isso é indecidente.

1. Suponha que o vazio seja decidível: Suponha que haja um algoritmo `isEmpty (m)` que retorna `true` se o idioma aceito por * m * estiver vazio e` falso`.

2. Redução: Criaremos um algoritmo `parada (h, i)` que usa `isEmpty ()`:

`` `
parada (h, i):
1. // Construa uma nova máquina de Turing M_HI
// - m_hi recebe qualquer entrada w.
// - m_hi primeiro simula h em I.
// - Se h interromper em i, então m_hi aceita w.
// - Se h não parar em i, então m_hi loops para sempre.
M_hi =constructtm (h, i)

2. Resultado =isEmpty (m_hi)

3. Se resultado ==true:
retornar false // h não pára em i
outro:
Retorne True // H interrompe em i
`` `

3. Por que isso funciona:

*Se *h *interromper *i *, então `m_hi` aceitará *cada *entrada` W`. Assim, o idioma aceito por `m_hi` não está vazio (na verdade é σ*, o conjunto de todas as cordas). Portanto, `isEmpty (m_hi)` retornará `false`, e` interrompa (h, i) `retorna 'true`.

*Se *h *não *param *i *, então `m_hi` fará um loop para sempre em *todas as *entradas` w`. Assim, o idioma aceito por `m_hi` está vazio. Portanto, `isEmpty (m_hi)` retornará `true` e` interrompa (h, i) `retorna 'false`.

4. contradição: Criamos um algoritmo `parado (h, i)` que usa `isEmpty ()` para resolver o problema de parada. Mas o problema de interrupção é indecidível, então isso é uma contradição.

5. Conclusão: Portanto, o problema do vazio para as máquinas de Turing é indecidível.

Notas importantes:

* A redução mostra que o problema * p * é * pelo menos tão difícil quanto * o problema de parada. Como o problema de interrupção é indecidível, o mesmo acontece com *p *.
* Reduções são frequentemente usadas para provar indecidibilidade, mas também podem ser usadas para provar a completude NP no contexto da complexidade computacional.
* O algoritmo `construttm (h, i)` no exemplo acima é um construto teórico. Na prática, você não "construiria" uma máquina de Turing física. O ponto é que * em princípio * é possível descrever essa máquina.

Em resumo, a redução de problemas de interrupção é uma técnica de prova poderosa que nos ajuda a entender os limites da computação. Ao mostrar que resolver um problema específico implicaria uma solução para o problema de parada (o que sabemos que é impossível), podemos concluir que o problema é indecidente.

Anterior :

Próximo :
  Os artigos relacionados
·Como corrigir o iMovie se a junção de clipes estiver …
·Como obter o Windows Vista da hibernação 
·Como desativar o JIT depuração no Sony Vegas 
·Como os arquivos duplicados são criados 
·Como remover um GB Dialer 
·Como desaparecer completamente:use óculos que enganam …
·Como restaurar arquivos excluídos do disco em hexadeci…
·Como instalar o servidor OpenSSH no Debian 11 
·Demasiados erros Usuários em FileZilla 
·Tecnologia de orientação - artigos de instruções, g…
  Artigos em destaque
·Como gerenciar seu arquivo e pastas do seu computador 
·Que tipo de ataque usa mais de um computador para a ví…
·Como transferir Robux para outra conta Roblox 
·O que o técnico deve fazer antes de executar procedime…
·Qual é a essência de seguir os procedimentos corretos…
·Qual é a senha do Euro Truck Simulator? 
·Os contatos podem ser enviados por e-mail se os computa…
·Como excluir um portfólio no Yahoo Finance 
·Como comprar um portátil Toshiba LCD Backlight 
·Como manter o desempenho do PC 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados