Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
Como se pode demonstrar que um idioma é decidível?
Para demonstrar que um idioma L é decidível, você precisa mostrar que existe uma máquina de Turing (TM) que:

1. interrompe em todas as entradas: A MT deve, eventualmente, atingir um estado de aceitação ou um estado de rejeição, independentemente da sequência de entrada. Não pode fazer um loop para sempre.
2. Se uma string `W` estiver em L, a TM é interrompida em um estado de aceitação.
3. rejeita as cordas não na linguagem l: Se uma string `W` não estiver em L, o TM é interrompido em um estado de rejeição.

Em outras palavras, uma linguagem decidível possui uma máquina de Turing que atua como um testador de associação perfeito:sempre fornece uma resposta "sim" ou "não" e sempre o faz em um período de tempo finito.

Aqui está um colapso de técnicas e considerações comuns:

1. Construindo uma máquina de Turing (TM) Descrição:

* Descrição de alto nível: Comece com uma descrição clara e legível pelo homem do algoritmo da MT. Isso deve explicar a lógica e as etapas necessárias para processar a entrada. Pense nisso como pseudo-código.
* Descrição do nível de implementação (opcional): Você * pode * fornecer uma descrição de nível inferior, especificando os estados, função de transição, alfabeto de fita, etc. Isso geralmente é tedioso e não é necessário, a menos que seja explicitamente solicitado, ou se o algoritmo é muito sutil e requer definição precisa. Concentre-se na descrição de alto nível primeiro.
* clareza é chave: O mais importante é que sua descrição é compreensível e convincente. Uma descrição de alto nível mal escrita pode ser mais difícil de entender do que uma descrição formal bem escrita.

2. Estratégias gerais para projetar decisores:

* Simule outras máquinas: Se você pode mostrar que L pode ser decidido simulando outro idioma decidível (ou vários desses idiomas), você demonstrou que L é decidível. A decidabilidade é fechada em muitas operações (união, interseção, complemento, concatenação, estrela de Kleene).
* converter para um problema mais simples: Tente reformular o problema em um problema equivalente, mas mais fácil de resolver.
* Considere casos básicos e recursão: Se o problema tiver uma estrutura recursiva, um algoritmo recursivo poderá ser traduzido em uma máquina de Turing. Verifique se a recursão está limitada para garantir a rescisão.
* Pesquisa exaustiva: Se o espaço de entrada for finito ou puder ser limitado, você pode usar a pesquisa exaustiva para verificar todas as possibilidades. O ponto crucial é que a pesquisa deve ser garantida para terminar.
* alavancar idiomas decidíveis conhecidos: Construa o conhecimento de que certos idiomas já são decidíveis. Por exemplo, idiomas regulares, idiomas livres de contexto e muitos outros.

3. Técnicas para demonstrar terminação:

* Contagem: Mostre que o algoritmo envolve um contador que aumenta ou diminui estritamente em direção a um limite.
* Tamanho diminuindo: Mostre que cada etapa do algoritmo reduz o tamanho do problema até atingir um caso base trivial.
* sem loops infinitos: Argumentam de forma convincente que o algoritmo não pode entrar em um loop infinito. Isso pode envolver mostrar que a máquina sempre move a cabeça da fita, ou que os estados visitados são sempre distintos dentro de um determinado período.
* Comprimento da simulação: Se o algoritmo simular outra MT, estabeleça um limite superior no número de etapas que a simulação tomará. Isso geralmente depende do tamanho da entrada.

4. Exemplos e cenários comuns:

* idiomas regulares: Para mostrar um idioma regular, é decidível, forneça um DFA para o idioma. Uma TM pode simular o DFA e interromper um estado de aceitação ou rejeição com base no estado final do DFA.
* Idiomas livres de contexto: Use o algoritmo Cyk ou um algoritmo de análise semelhante. Esses algoritmos têm um tempo de execução finito.
* indecidibilidade: Entenda o problema de parada. Você * não pode * decidir se uma máquina de Turing arbitrária é interrompida em uma entrada arbitrária. Se você pode reduzir o problema de parada para o seu problema, você mostrou que seu problema não é exigente (não é decidível).
* teste de vazio: Mostrar um idioma está * vazio * (não contém strings) às vezes é mais fácil do que mostrar que é decidível. Por exemplo, o idioma de uma máquina de Turing * não é * decidível. No entanto, dado um DFA ou CFG, determinar se o idioma que ele representa está vazio * é * é decidível.

5. O que não fazer:

* Não apenas afirme que é decidível sem justificação. Você deve fornecer um argumento razoável, que geralmente significa descrever o algoritmo.
* Não forneça uma tm que * apenas * aceite seqüências de caracteres no idioma. Ele também deve * rejeitar * Strings * não * no idioma e deve parar.
* Não forneça um algoritmo que * possa * parar, mas tem o potencial de fazer um loop para sempre. Uma decisão * deve * parar.
* Não confunda a decidabilidade com o reconhecimento. Uma linguagem reconhecível exige apenas uma MT para parar e aceitar se a entrada estiver no idioma. Pode fazer um loop para sempre se a entrada não estiver no idioma. Os idiomas decidíveis são sempre reconhecíveis, mas o inverso não é verdadeiro.
* Não tente fornecer uma "prova pelo exemplo" Mostrar que uma entrada específica é aceita ou rejeitada não prova nada sobre a decidabilidade do idioma.

Exemplo 1:a ={0 n 1 n | n> =0} é decidível.

* Descrição de alto nível:

1. Digitalize a sequência de entrada para garantir que ela consista apenas 0s seguida por 1s. Caso contrário, rejeite.
2. Embora existam 0s e 1s restantes:
* Atravesse o mais à esquerda 0.
* Atravesse o mais à esquerda 1.
3. Se não houver 0s e nenhum 1s permanecer, aceite.
4. Se apenas 0s ou apenas 1s permanecer, rejeite.

* justificativa: Este algoritmo é interrompido para todas as entradas. As etapas 1 e 3/4 estão encerrando verificações. Etapa 2 cruza um 0 e um 1 em cada iteração. O número de 0s e 1s é finito, portanto o loop será encerrado. Se o número de 0s e 1s foi igual, aceitamos. Caso contrário, rejeitamos.

Exemplo 2:Dado um DFA D, sua linguagem l (d) está vazia? A DFA ={ | D é um dfa e l (d) =∅} é decidível.

* Descrição de alto nível:

1. Marque o estado inicial de D.
2. Repita até que nenhum novo estado seja marcado:
* Marque qualquer estado que possa ser alcançado de um estado atualmente marcado, seguindo uma flecha em D.
3. Se algum estado aceita é marcado, rejeite.
4. Caso contrário, aceite.

* justificativa: Este algoritmo é interrompido. A etapa 2 explora todos os estados acessíveis possíveis. O número de estados em D é finito, portanto o loop será encerrado. Se pudermos alcançar um estado de aceitação, o idioma não está vazio e rejeitamos. Caso contrário, é e aceitamos. Observe que `d` é garantido como um DFA por suposição e, portanto, possui estados finitos.

Ao seguir essas estratégias e entender as propriedades das máquinas de Turing e idiomas decidíveis, você pode efetivamente demonstrar que um idioma é decidível. Lembre -se de se concentrar em uma descrição clara e convincente do algoritmo e um argumento sólido para sua rescisão e correção.

Anterior :

Próximo :
  Os artigos relacionados
·Como dividir o Matlab Jet tabela de cores para RGB 
·Falta Operando Após um Operador 
·Como carregar os arquivos em uma sessão PowerShell 
·O que é API para SMS 
·Como criar Subscrito usando códigos HTML 
·Como definir a cor de fundo da classe Usando jQuery 
·Definição de COBOL Comp -3 
·Tipos de dados COBOL 
·Como converter arquivos Rdb para Mpeg 
·Como diferenciar entre o Mainframe & Servidor DASD 
  Artigos em destaque
·Como Fazer um Beep Com Java 
·Quanto por Hora Do programadores PHP Fazer 
·Como configurar um quadro branco com Applets Java 
·VBA Estrutura de Programação 
·Como fazer uma String Maiúsculas Usando Python 
·Como converter um número para uma string PHP 
·Como você implementa o paralelismo no nível de instru…
·Como usar o Microsoft Script Debugger 
·O que são objetos e como eles criaram a partir de uma …
·A maneira mais fácil de aprender SQL 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados