Ideas principales
Ser reconocible significa que puede crear un proceso automático (volveremos a eso más adelante) que toma una palabra como parámetro de manera que
- Si finaliza el proceso automático, devuelve SÍ o NO.
- Este proceso automático no tiene que terminar en cada entrada, pero debe terminar si la palabra de entrada está en el idioma.
Ser co-reconocible significa el lenguaje w∈Σ∗,w∉L (o, en inglés, el conjunto de todas las palabras que no están en L, es decir, su complementario) es reconocible.
Ser decidible significa que puede crear un proceso automático que tome una palabra como entrada, de modo que
- El proceso automático siempre termina
- Responde SÍ o NO. Si responde SÍ, la palabra está en el idioma, si responde NO, la palabra no está en el idioma.
Un resultado importante es que L es decidible si y solo si L es reconocible y co-reconocible
La idea de probar este resultado es que puede construir un proceso automático a partir de los procesos que le brindan el reconocimiento y el reconocimiento conjunto, alternando los pasos de ambos procesos, hasta que uno de ellos le dé la respuesta SÍ. Uno de ellos tiene que hacerlo, ya que cada palabra está o no en el idioma)
Procesos automáticos
Sin ser demasiado formales, se han diseñado muchos tipos de máquinas, y básicamente todas se han vinculado a tipos de idiomas (esos tipos dependen de las herramientas necesarias para definir dichos idiomas. Para más información, la Jerarquía de Chomsky puede ayudar).
El significado habitual del proceso automático, con respecto a la capacidad de decisión, es una máquina de Turing. Puede definir una máquina de Turing de modo que pueda:
- Recibir valores de la entrada
- Almacenar valores
- Lee los valores almacenados
- Calcular operaciones matemáticas básicas sobre valores
- Pruebe las propiedades matemáticas básicas en esos valores y actúe en consecuencia, eventualmente en bucle.
Básicamente, una máquina de Turing puede hacer todo lo que puede definir en un programa, excepto que es un objeto matemático, con memoria infinita y tiempo para gastar en un cálculo. No siempre termina.
Otra propiedad importante de las máquinas de Turing es que puede describir una máquina de Turing como una sola palabra (esto es codificación), y existe una máquina de Turing que, dada como entrada, codifica una máquina My una palabra w, puede simular el cálculo de M en la entrada w. Esto será importante en un momento.
Señalemos que los lenguajes regulares, que son (casi) el tipo de lenguaje más simple en el que se puede pensar desde el punto de vista matemático, tienen la propiedad peculiar de que están cerrados bajo el complemento. Esto básicamente significa que en esos idiomas, las nociones de reconocibilidad y capacidad de decisión son equivalentes. Esto no se cumple a medida que avanzas en la Jerarquía de Chomsky.
Ejemplo de lenguaje indecidible
Estudiaremos el problema de detención . La pregunta es, ¿podemos construir una máquina de Turing que, dada la codificación de otra máquina de TuringM y una palabra w, decide siM termina en la entrada w ?
Obviamente, esto es reconocible , ya que solo tenemos que simularM en whasta que termine, y cuando lo haga, diga SÍ. Sin embargo, siMnunca termina, no diremos NO, por lo que reconocemos este lenguaje, pero no lo decidimos. Se ha demostrado que este lenguaje no puede ser decidido por una máquina de Turing. Esto implica un esquema matemático habitual: un argumento diagonal, que no llamaría intuitivo. Puede consultar este boceto de prueba para acostumbrarse.
Para resumir
No podrá, dado un idioma, simplemente indicar si es decidible o no. No hay ningún algoritmo que pueda hacer eso, y demostrar que un idioma no es decidible requiere pensar, y puede requerir algún conocimiento sobre máquinas de Turing, argumentos diagonales, etc.
Sin embargo, aquí está mi forma personal de manejar esta pregunta. Por lo general, cuando estudio un idioma, supongo que es decidible, a menos que muestre alguna forma de referencia sobre la forma en que funciona Turing Machine. En ese caso, empiezo a desconfiar e intento definir un algoritmo para decidir el idioma. Si esto no parece fácil, a veces ayuda dividir el trabajo en algoritmos tanto de reconocimiento como de reconocimiento conjunto. Si todavía no puedo hacerlo, trataría de establecer una conexión entre este idioma y otro indecidible, como "Si puedo decidir ese idioma, puedo decidir el problema de detención". Esta es una reducción de Turing a un problema indecidible, por lo que el primer problema no puede ser decidible. Si todo eso falla, puedo intentar usar argumentos diagonales, pero esto puede ser un poco complicado.