“Conocimiento Programación>Lenguajes De Programación

¿Cuál es un ejemplo de un idioma decidible?

2012/10/29
Un ejemplo de lenguaje decidible es el lenguaje `a ={ | M es un DFA que acepta w} `. En otras palabras, el lenguaje consiste en pares de un autómata finito determinista (DFA) codificado como una cadena y una cadena `W`, de modo que el DFA acepta la cadena` W`.

He aquí por qué es decidible y cómo una máquina Turing puede decidirlo:

decidibilidad: Un idioma es decidible si existe una máquina de turbio que se detiene en cada entrada y acepta la entrada si está en el idioma y la rechaza si no lo es.

Turing Machine Decish: Podemos construir una máquina Turing `d` que decida` a` como sigue:

1. Entrada: `D` toma como entrada` `, donde` M` es la codificación de un DFA y `W` es una cadena.

2. Simulación: `D` simula el DFA` M` en la cadena de entrada `W`. Esto es posible porque `D` puede realizar un seguimiento del estado actual de` M` y el símbolo actual que se lee de `W`. La simulación procede de la siguiente manera:

* Iniciar `M` en su estado inicial.

* Para cada símbolo en `W`, Transición` M` al siguiente estado de acuerdo con su función de transición.

3. Aceptar/rechazar:

* Si `M` termina en un estado de aceptación después de leer toda la cadena` W`, entonces `d` acepta` `.

* Si `M` termina en un estado no aceptado después de leer toda la cadena` W`, entonces `D` rechaza` `.

Por qué funciona esto:

* DFAS siempre se detiene: DFAS, por definición, procesa cada símbolo de entrada exactamente una vez y luego se detiene. No tienen bucles infinitos ni comportamiento indefinido.

* La simulación es posible: Una máquina de Turing puede simular fácilmente el comportamiento determinista de un DFA porque tiene suficiente memoria y control para rastrear el estado y la posición de entrada del DFA.

* deteniendo: La máquina Turing `d` siempre se detiene porque la simulación DFA siempre se detiene.

* corrección: `D` acepta exactamente las cadenas` `donde` M` acepta `W`, y rechaza exactamente las cadenas` `donde` m` no * no * acepta `w`.

Prueba formal (boceto):

Para demostrar rigurosamente la decidibilidad, necesitaría:

1. Defina formalmente la codificación: Especifique cómo un DFA `M` y una cadena` W` se representan como cadenas en el alfabeto de entrada de la máquina Turing `D`.

2. Defina formalmente la máquina Turing `D`: Dé un diagrama de estado o una descripción formal de las transiciones de `D`.

3. Demuestre corrección: Muestre que si `` está en el lenguaje `a`, entonces` d` lo acepta, y si `` no * no * en el lenguaje `a`, entonces` d` lo rechaza.

4. Probar detenerse: Muestre que `d` siempre se detiene en cualquier entrada.

En resumen: Debido a que podemos construir una máquina Turing que siempre se detenga y acepte correctamente o rechaza en función de si un DFA determinado acepta una cadena dada, el lenguaje `A` es decidible. Este es un ejemplo fundamental e importante en la teoría de la computación.

Lenguajes De Programación
Cómo hacer un bucle que continúa para siempre en Roblox
Cómo aprender Macros
Cómo crear una Pivot en VBA
Cómo utilizar Direct3D
Cómo crear una COBOL Copybook
¿Cuál es el uso del decodificador en la arquitectura de la computadora?
Cómo escribir un XML en ASP.NET con SqlDataReader
Tipos de datos Groovy
Conocimiento de la computadora © http://www.ordenador.online