Los problemas de decisión y los idiomas son solo las dos caras de la misma moneda: cada problema puede reformularse como el problema de la membresía de algún idioma. El problema de, por ejemplo, determinar si un número es primo es exactamente el problema de la membresía del lenguaje de los números primos.
Formalmente, un idioma es un conjunto de cadenas finitas sobre un alfabeto finito fijo (a veces, las cadenas pueden ser infinitas; ese es un escenario diferente pero relacionado). Los problemas que no sean preguntas directas sobre las cadenas deberán codificarse como cadenas, por ejemplo, habría sido más preciso escribir la última oración del párrafo anterior como "Si arreglamos un alfabeto y una codificación de números naturales como cadenas sobre ese alfabeto, el problema de, por ejemplo, determinar si un número es primo es exactamente el problema de la membresía del idioma de las cadenas que codifican números primos ".
Para revisar rápidamente sus preguntas secundarias,
Sabemos que el conjunto de todos los idiomas incontables. ¿El conjunto de problemas también es incontable?
Sí, ya que los problemas y los idiomas son esencialmente lo mismo.
¿Puede cada problema ser definido por un idioma?
Problemas de decisión, sí. Sin embargo, los problemas de optimización (cuál es la X más pequeña con la propiedad Y) y los problemas de conteo (cuántas X tienen la propiedad Y) pueden reformularse como problemas de decisión (¿es la Z la X más pequeña con la propiedad Y ?; ¿hay NX con la propiedad Y?) esa no suele ser la forma más natural de tratarlos.
¿Puede un idioma resolver más de un problema y viceversa?
Sí y sí, porque tiene que usar codificaciones para traducir entre problemas e idiomas. Por ejemplo, los idiomas.{ 10 , 11 , 101 , 111 , 1011 , ... } y { 2 , 3 , 5 , 7 , 11 , ... }ambos codifican el problema de primalidad (en binario y decimal, respectivamente). Por el contrario, aunque quizás un poco artificialmente, el lenguaje{ 0 , 10 , 110 , 1110 , ... } codifica el problema de determinar si un número binario tiene la forma 2k- 2 para algunos ky el problema de determinar si una cadena de 1 y 0 tiene exactamente un 0, que es su carácter final. (Quizás alguien pueda encontrar un mejor ejemplo de un lenguaje que codifique naturalmente dos problemas sin que uno sea una reformulación tan trivial del otro).
¿Existe una correspondencia uno a uno entre el problema y los idiomas?
No, ya que esta pregunta es solo el complemento de la anterior. :-)