Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
Como alguém pode provar que o idioma é decidível?
Para provar que um idioma L é decidível, você deve mostrar que existe uma máquina de Turing (ou um modelo computacional equivalente) que interrompe e aceita cordas em L e rejeita strings não em L. Existem várias maneiras de demonstrar isso:

1. Construindo uma máquina de Turing (ou algoritmo):

Esta é a abordagem mais direta. Você descreve explicitamente uma máquina de Turing (ou um algoritmo de alto nível que pode ser facilmente traduzido em uma máquina de Turing) que decide o idioma. Esta descrição precisa cobrir:

* Entrada: Como a máquina de Turing recebe a sequência de entrada.
* Estados: Os diferentes estados que a máquina pode estar dentro.
* Transições: Como a máquina se move entre os estados com base no estado atual e o símbolo lido da fita.
* Aceitação/rejeição: Como a máquina sinaliza a aceitação (por exemplo, inserindo um estado de "aceitar") ou rejeição (por exemplo, inserir um estado de "rejeição").
* interromper: Fundamentalmente, você deve demonstrar que a máquina * sempre é interrompida, independentemente de a sequência de entrada estar em L ou não. Esta é a parte mais desafiadora.

Exemplo: Considere o idioma l ={w | w é um palíndromo}. Podemos descrever uma máquina de Turing que:

1. Varredura a fita de entrada da esquerda para a direita, marcando o primeiro e o último símbolos.
2. Move os marcadores um passo para dentro de ambas as extremidades.
3. Repete a etapa 2 até que os marcadores se encontrem (a corda é um palíndromo) ou os marcadores cruzam (a corda não é um palíndromo).
4. Aceita se os marcadores se reúnem e rejeitam se eles cruzarem.

Esta máquina sempre pára, provando L é decidível.

2. Redução para uma linguagem decidível conhecida:

Se você puder mostrar que seu idioma L pode ser reduzido a uma linguagem decidível conhecida L ', isso também é decidível. Uma redução é uma função computável para que:

* x ∈ L se e somente se f (x) ∈ L '

Se você tiver um algoritmo para decidir L ', poderá usá -lo para decidir l primeiro aplicando a redução f. Como o F e o algoritmo para L 'são computáveis, o processo combinado também é computável, decidindo L.

Exemplo: Seja l a linguagem das cordas que representam expressões aritméticas válidas. Podemos reduzir o L para uma linguagem gramatical livre de contexto (CFG) L 'que é decidível (existem algoritmos de análise para CFGs). A redução envolveria a transformação da corda de expressão aritmética em uma árvore de análise de acordo com a gramática. Se a transformação for bem -sucedida e uma árvore de análise válida for gerada, a string estará em L; Caso contrário, não é.

3. Usando propriedades de fechamento de idiomas decidíveis:

Os idiomas decidíveis são fechados sob certas operações como união, interseção, concatenação, estrela de Kleene e complemento. Se você puder expressar seu idioma l usando essas operações em idiomas decidíveis conhecidos, também é decidível.

Exemplo: Se L1 e L2 forem decidíveis, L1 ∪ L2 também será decidível. Você pode decidir L1 ∪ L2 executando os algoritmos de decisão para L1 e L2 na sequência de entrada; Se um aceita, o sindicato aceita.


em resumo: Provar a decidabilidade se resume a mostrar que existe um algoritmo determinístico (ou máquina de Turing) que sempre interrompe e classifica corretamente todas as cadeias de entrada como pertencentes ao idioma ou não. O método que você escolher depende do idioma específico e de sua intuição sobre suas propriedades. A abordagem mais comum está construindo diretamente uma máquina ou algoritmo de Turing, mas as propriedades de redução e fechamento são ferramentas poderosas para idiomas mais complexos.

Anterior :

Próximo :
  Os artigos relacionados
·O que é um rascunho do computador? 
·Como pintar Texto Vertical Modo Datagridview 
·Como determinar o comprimento de corda no texto B 
·Como mesclar Dois Data Colunas 
·Como se pode demonstrar que um idioma é regular? 
·O que é necessário para converter uma linguagem de al…
·Como criar um Widget 
·O que são linguagens de consulta? 
·Avançado SAS Certificação exemplo Perguntas 
·Como fazer uma cadeia de caracteres Minúscula 
  Artigos em destaque
·Como ler arquivos PDF em PHP 
·Como verificar se uma cadeia de conteúdo variável é …
·Como armazenar uma lista de objetos em MFC 
·Como criar aplicativos da Web ASP NET Mobile 
·Como transformar uma String para um nome VAR em PHP 
·O que é LoadLibrary Jvm.Dll 
·Como se conectar a um banco de dados Oracle em Java 
·Como escrever um programa que permite ao usuário espec…
·Uma unidade Delphi é exibida em tempo de execução? 
·Como exibir dados de banco de dados em páginas da Web 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados