Sei sulla pagina 1di 25

INDICE

UNIDAD 5: DECIBILIDAD

Introducción………………………………………………………………………………………………………………. 2

5.1. Lenguajes decidibles……………………………………………………………………………………………. 3

5.2. El problema de Halting…………………………………………………………………………………………. 6

5.3. Decibilidad de Teorías Lógicas………………………………………………………………………………. 9

UNIDAD 6: REDUCIBILIDAD

Introducción……………………………………………………………………………………………………………… 11

6.1. Problemas insolubles para la teoría de lenguajes………………………………………………. 13

6.2. Un problema simple insoluble……………………………………………………………………………. 14

6.3. Funciones Computables…………………………………………………………………………………….. 19

6.4. Reducibilidad de Turing……………………………………………………………………………………… 21

Conclusión………………………………………………………………………………………………………………… 24

Bibliografía………………………………………………………………………………………………………………… 25

1
INTRODUCCIÓN

¿Qué es la decibilidad?
Según definición un sistema lógico o teoría es decidible si el conjunto de todas las
fórmulas válidas en el sistema es decidible. Es decir, existe un algoritmo tal que para cada
fórmula del sistema es capaz de decidir en un número finito de pasos si la fórmula es
válida o no en el sistema.
Ejemplo: La Lógica proposicional (se define una proposición como un enunciado
declarativo que puede ser verdadero o falso, y Las proposiciones se representan mediante
variables proposicionales simbolizadas mediante letras) es decidible, porque existe para
ella un algoritmo; la tabla de verdad tal que para cada fórmula que combina M formulas
atómicas, hay un número máximo N = 2M de pasos tal que tras completar estos N pasos el
algoritmo siempre decidirá si la fórmula es válida o no. Cada "paso" del algoritmo ha sido
definido como una línea de la tabla de verdad.

La lógica de primer orden es decidible si se limita a predicados con un solo argumento. Si


se incluyen predicados con dos o más argumentos, no es decidible.

Toda teoría completa recursivamente enumerable es decidible. Por otro lado, toda teoría
que incluya aritmética básica es no decidible.

En otras palabras se puede decir que un sistema formal es decidible si existe un


algoritmo que diga en tiempo finito (quiere decir que deben estar establecidos cada uno
de los estados que lo forman, en otras palabras el tiempo debe estar señalado) si una
cadena cualquiera es un teorema o no lo es.

También hay que mencionar que en 1936, un matemático británico, Alan Turing, publica
un ensayo titulado: “Acerca de Números Computables con una Aplicación al Problema de
le Decidibilidad” (de Hilbert).

Turing demuestra que problemas computables pueden ser resueltos por una máquina con
una cinta infinitamente larga, subdividida en pequeñas celdas cuadradas y con un
dispositivo con un número definido de estados capaz de “leer” los símbolos “escritos”
sobre esa cinta. En función del símbolo leído y del “estado” de la máquina, se puede
escribir otro símbolo y modificar el estado de la máquina. Trivialmente, la máquina puede
desplazarse sobre la cinta en ambos sentidos.

2
UNIDAD 5

“DECIBILIDAD”

5.1 Lenguajes decidibles

Un lenguaje decidible es aquel lenguaje L para el cual existe una maquina de Turing que le
puede aceptar cualquier cadena w L.

Hay lenguajes formados por cadenas tales que una maquina de Turing logra un estado
final con las cadenas que reconoce y acepta, solamente. En este caso se dice que la
máquina de Turing semidecide al lenguaje. Los lenguajes semidecididos por una MT se
llaman recursivos numerables. Las gramáticas sin restricciones son las que generan los
lenguajes recursivos numerables. De aquí en adelante será suficiente referirse a los
lenguajes recursivos numerables, pues estos generalizan a los lenguajes recursivos, los
cuales generalizan a los lenguajes libres de contexto, y estos a los lenguajes regulares. Lo
anterior tiene relación directa con que los autómatas de Turing generalizan a los de la pila
y estos a su vez a los autómatas finitos. Por otro lado, pese a que lenguajes formales más
generales que los recursivos numerables no son reconocidos por un autómata de Turing,
no existe hasta el momento ningún autómata más poderoso capaz de reconocerlos.

En términos de procedimientos, las cadenas de un lenguaje decidible corresponden a


procedimientos que terminan, ya sea realizando lo que indica la palabra ó señalando que
no tienen la capacidad de realizarlo. Para un lenguaje semidecidible, las cadenas decididas
por la MT son instrucciones realizadas por la MT. De manera complementaria, las cadenas
no decidibles por la MT corresponden a procedimientos que no terminan utilizando una
maquina de Turing. A partir de lo dicho aquí tenemos la definición de algoritmo:

• Un algoritmo es una implementación de una maquina de Turing tal que el conjunto


de sus entradas es el lenguaje decidible.

Es decir, si un dado un conjunto de entradas bajo las cuales una MT logra un estado de
parada para cada entrada, la maquina corresponde a la implementación de un algoritmo.

Si es posible definir una maquina de Turing tal que reconozca al lenguaje de los teoremas,
este lenguaje es decidible y la teoría también lo es en consecuencia. Dicho en otras
palabras, si el conjunto de teoremas visto como un lenguaje es reconocido por una
máquina de Turing, entonces la TL es decidible. Y viceversa. Puede hablarse entonces de
manera indistinta de teorías lógicas o de lenguajes decididles, como aquellos para los que
existe una máquina de Turing capaz de reconocerlos. Luego la correspondencia entre la
sintaxis de una teoría lógica (lenguaje formal) y reconocimiento simbólico del mismo por
parte de un autómata queda establecida.

3
Ejemplo:
Muestre que la colección de lenguajes decidibles por máquina de Turing para un alfabeto
cualquiera es infinita, pero contable.

Solución:
{Lenguajes independientes de contexto} es infinito

{Lenguajes independientes de contexto} ú{Lenguajes decidibles por Turing}

{Lenguajes decidibles por Turing}

{Lenguajes estructurados por frases} es contable

{Lenguajes decidibles por Turing} ú {Lenguajes estructurados por frases}

{Lenguajes decidibles por Turing} es contable

Otro ejemplo de lenguaje decidible es el lenguaje recursivo que se describe mediante la


siguiente definición:

Lenguaje recursivo: es un tipo de lenguaje formal que también es llamado recursivo,


decidible o Turing-decidible. Se caracterizan porque para cada uno de ellos existe una
máquina de Turing que aceptará cualquier palabra del lenguaje y parará siempre.

Ejemplo:

Supongamos que L es un lenguaje recursivo sobre el alfabeto . Entonces, hay una


máquina de Turing M = (Q, , , s, b,  ) que para sobre toda entrada y acepta L.
Considérese la máquina de Turing M ´= (Q, , , s, b, Q − F ,  ) . Obsérvese que cualquier
cadena de L hace que M’ rechaza todas las cadenas de L. Por otro lado, si w L , M
parará en algún estado que no es F, cuando w esté en cinta al principio de la computación.
Es decir, M para en algún estado de Q-F. Pero entonces, M’ también parará y, por tanto, si
w L , entonces w L (M’). Así, L(M’)=  * − L . Es más, ya que M para sobre todas las
cadenas, entonces M’ también lo hace. Finalmente, tendremos el siguiente lema:

Lema 5.3.1. Si L es un lenguaje recursivo, entonces  * − L es un lenguaje recursivo.

Esta propiedad de los lenguajes recursivos que, en general, no se cumple para los
lenguajes recursivamente enumerables. Para verlo, supongamos que  es un alfabeto. Ya
que  * es numerable, podemos enumerarlo como * = {w1 , w2 , w3 ,...} . En la sección de
las máquinas de Turing universales se indico que todas las máquinas de Turing sobre 
podían ser enumeradas (por medio de las cadenas de símbolos generadas para

4
representar las máquinas de Turing codificadas). Por tanto, podremos listar todas las
máquinas de Turing sobre  como M 1 , M 2 ,... Sea

L = {wi wi es aceptado por M i }

Este lenguaje es recursivamente enumerable pero su complemento no.

Primero, veremos que L es recursivamente enumerable, obteniendo una máquina


de Turing M que acepte L. M será una composición de varias máquinas de Turing. Se tiene
una cadena w sobre , obsérvese que w = wi para algún i. M primero generará w1, w2 ...
hasta que encuentre una ir para el cual w = wi . Entonces M generará la (codificada) i-
ésima máquina de Turing M i , codificará wi , y pasará de la codificación de M i y wi a la
máquina de Turing universal U que emule M i sobre wi . Si M i para y acepta wi ,
entonces U para en un estado de aceptación, y por tanto M para y acepta wi .

Por otro lado, M i puede que pare sin aceptar wi o puede que no pare. En ambos
casos, M no para y no acepta wi . Así, wi  L(M ) sí y solo si wi  L( M i ) .

Segundo observemos que  * − L es recursivamente enumerable. Entonces debe


ser aceptado por una máquina de Turing, que llamaremos M j . Consideremos w j . Si
w j  L(M j ) , tendremos que w j  L =  * − L( M j ) y, por tanto, w j  L(M j ) . A la inversa,
si w j  L(M j ) , entonces w j  L y, por tanto, se tiene que w j   * − L = L( M j ) . En
ambos casos se llega a una contradicción, luego el lenguaje  * − L no es aceptado por
ninguna máquina de Turing.

5
5.2. El problema de Halting

En teoría de la computabilidad, es una decisión a un problema el cual puede ser declarado


así. Dada la descripción de un programa decide si el programa termina de correr o correrá
siempre. Esto es equivalente al problema de decidir, considerando un programa y una
entrada, si el programa tarde o temprano se parará cuando controlado con aquella
entrada, o correrá siempre.

Alan Turing demostró en 1936 que un algoritmo general para solucionar el problema
vacilante para todos los pares de entrada de programa posibles no puede existir. Decimos
que el problema vacilante es undecidable sobre máquinas Turing.

B. Jack Copeland (2004) atributos el término real que para problema a Martin Davis.

Declaraciones formales

El problema de Halting es un problema de decisión sobre las propiedades de programas


del ordenador sobre un modelo fijo Turing-completo de cómputo. El problema es de
determinar, considerando un programa y una entrada al programa, si el programa tarde o
temprano se parará cuando controlado con aquella entrada. En este marco abstracto, no
hay ningunas limitaciones de recurso de memoria o tiempo sobre la ejecución del
programa; esto puede tomar arbitrariamente mucho tiempo, y usar arbitrariamente
mucho espacio de almacenaje, antes de la intermitencia. La pregunta es simplemente si el
programa dado alguna vez se parará sobre una entrada particular.

Por ejemplo, en pseudocódigo, el programa


while True: continue

No se para; más bien esto continúa siempre en un lazo infinito. De otra parte, el programa
print "Hello World!"

El problema de Halting es famoso porque esto era uno de los primeros problemas
probados algorítmicamente indecidible. Esto quiere decir que no hay ningún algoritmo
que puede ser aplicado a cualquier programa arbitrario e introducir para decidir si el
programa se para cuando controlado

Representar el problema de Halting como un juego

La representación convencional de problemas de decisión es el juego de objetos que


poseen la propiedad en cuestión. La intermitencia se pone

6
K: = {(yo, x) | el programa tarde o temprano me pararé de ser controlado con la entrada x}
representa el problema vacilante.

Este juego es recurrentemente enumerable, que quiere decir que hay una función
calculable que cataloga todos los pares (yo, x) esto contiene. Sin embargo, el
complemento de este juego no es recurrentemente enumerable.

Hay muchas formulaciones equivalentes del problema vacilante; cualquier juego cuyo
grado Turing iguala él del problema vacilante es tal formulación. Los ejemplos de tales
juegos incluyen:

{ i | programa i tarde o temprano altos cuando controlado con entrada 0}

{ i | hay una entrada x tal que el programa i tarde o temprano altos cuando controlado
con la entrada x}.

Importancia y consecuencias

La importancia histórica del problema de Halting está en el hecho que esto era uno de los
primeros problemas para ser demostrados indecidible. (La prueba de Turing fue a apretar
en mayo de 1936, mientras que la prueba de la Iglesia de la indecibilidad de un problema
en el cálculo de lambda ya había sido publicada en abril de 1936.) Posteriormente,
muchos otros tales problemas han sido descritos; el método típico de demostrar un
problema de ser indecidible es con la técnica de reducción. Para hacer esto, el informático
muestra que si una solución con el nuevo problema fue encontrada, esto podría ser usado
decidir un problema indecidible (por transformando los casos del problema indecidible en
los casos del nuevo problema). Ya que ya sabemos que ningún método puede decidir el
viejo problema, ningún método puede decidir el nuevo problema tampoco.

Una tal consecuencia de la indecibilidad del problema de Halting es que no puede haber
un algoritmo general que decide si una declaración dada sobre números naturales es
verdadera o no. La razón de esto es que la proposición que declara que un cierto
algoritmo parará dado una cierta entrada puede ser convertida en una declaración
equivalente sobre números naturales. Si nosotros tuviéramos un algoritmo que podría
solucionar cada declaración sobre números naturales, esto seguramente podría solucionar
éste; pero esto determinaría si los altos de programa originales, que son imposibles, desde
el problema vacilante son tras indecidible.

Aún otra consecuencia de la indecibilidad del problema de Halting es el teorema de Rice


que declara que la verdad de cualquier declaración no trivial sobre la función que es
definida por un algoritmo es indecidible. Tan, por ejemplo, el problema de decisión " va a

7
este alto de algoritmo para la entrada 0 " es ya indecidible. Note que este teorema
sostiene para la función definida por el algoritmo y no el.

Gregory Chaitin ha definido una probabilidad de Halting y ha representado por el símbolo


la , un tipo de número real que de manera informal, como se dice, representa la
probabilidad que un programa al azar producido se para. Estos números tienen el mismo
grado Turing que el problema de Halting. Es un normal y el número trascendente que
puede ser definido, pero completamente no puede ser calculado. Esto quiere decir que
uno puede demostrar que no hay ningún algoritmo que produce los dígitos de  , aunque
sus pocos primeros dígitos puedan ser calculados en casos simples.

Mientras la prueba de Turing muestra que no puede haber ningún método general o
algoritmo para determinar si el alto de algoritmos, los casos individuales de aquel
problema muy bien puede estar susceptible para atacar. Considerando un algoritmo
específico, uno a menudo puede mostrar que esto debe pararse para cualquier entrada, y
de hecho los informáticos a menudo hacen solamente que como la parte de una prueba
de corrección. Pero cada prueba tiene que ser desarrollada expresamente para el
algoritmo al alcance de la mano; no hay ningún modo mecánico, general de determinar si
los algoritmos sobre un Turing trabajan a máquina el alto. Sin embargo, hay alguna
heurística que puede ser usada en una manera automatizada intentar construir una
prueba, que tiene éxito con frecuencia sobre programas típicos. Conocen este campo de
investigación como el análisis de terminación automatizado.

Ya que la respuesta negativa al problema vacilante muestra que hay problemas que no
pueden ser solucionados por una máquina de Turing, los límites de tesis de Iglesia-Turing
que puede ser logrado por cualquier máquina que pone en práctica métodos eficaces. Sin

8
embargo, no todo máquinas teóricamente posibles son sujetas a la tesis de Iglesia-Turing
(p.ej. las máquinas de oráculo no son). Esto es una pregunta abierta empírica si hay tras
procesos reales deterministas físicos que, a la larga, eluden la simulación por una máquina
de Turing. Esto es también un asunto por resolver si cualquier tal proceso útilmente
podría ser enjaezado en forma de una calculadora (un hiperordenador) que podría
solucionar el problema vacilante para una máquina de Turing entre otras cosas.

5.3 Decibilidad de Teorías Lógicas

Decibilidad de las teorías lógicas. El desarrollo de la teoría de la computabilidad ha ido


íntimamente ligado al desarrollo de la lógica matemática. Esto ha sido así porque la
decibilidad de los distintos sistemas lógicos es una cuestión fundamental. Es bastante fácil
ver que el cálculo proposicional es decidible. Church y Turing demostraron en 1936 que el
cálculo de predicados no era decidible. Por otro lado, para cada una de las distintas teorías
se ha ido estudiando su posible decibilidad. Como ejemplo más ilustrativo, Tarski
demostró que la teoría de los números reales era decidible.

Por otro lado, son muchos los problemas interesantes que se han demostrado
computables. Todas las funciones construidas por recursividad primitiva o minimalización
a partir de funciones calculables resultan ser calculables como consecuencia de los
trabajos de Church y Turing. Pero además, otras funciones más complejamente definidas
también son computables, siendo el resultado más significativo en relación con esta
cuestión el dado por el siguiente teorema:

Primer teorema de Recursión. Todo operador entre funciones calculables que sea
recursivo (esto es que se defina la imagen de f mediante una función calculable en
términos de una parte finita de f), tiene una función parcial computable que es el menor
punto fijo, es decir, esta función es un punto fijo y cualquier otro punto fijo del operador
es una extension de esa función.

Este teorema recibe su nombre porque podemos definir una función mediante una
ecuación recursiva más general que la permitida por la recursividad primitiva, a saber
donde es un operador recursivo. El primer teorema de recursión nos dice que esta
definición es posible; hay una función recursiva que satisface esta ecuación. Como en
matemáticas se requiere que la definición sea unívoca, se dice que dicha ecuación define
el menor punto fijo del operador . Así, y de acuerdo al primer teorema de recursión, la
clase de las funciones calculables es cerrada bajo una muy general forma de definición por
recursión.

A menudo se utiliza la técnica de reducir un problema a otro para comprobar si tiene o no


solución efectiva. La estratégia en el caso de la respuesta negativa es la siguiente, si se
reduce de forma efectiva un problema sin solución efectiva a otro problema (mediante

9
una función calculable), entonces este nuevo problema tampoco tendrá solución efectiva.
La razón es muy simple, si tuviese solución efectiva, componiendo el algoritmo solución
con el algoritmo de transformación obtendríamos una solución para el problema
efectivamente irresoluble. En sentido inverso, si se reduce un problema a otro para el que
se conoce una solución efectiva, entonces componiendo se obtiene una solución para el
primer problema. Esta técnica es muy útil y se utiliza a menudo. Por otro lado, esta mísma
técnica es muy empleada en el campo de la complejidad algorítmica. Para asegurarse de
que un problema está en una clase de complejidad, basta reducir el problema a otro de
dicha clase sin más que asegurarse que la reducción se realiza en la correspondiente clase
de complejidad.

10
INTRODUCCIÓN

“REDUCIBILIDAD”

El identificar los problemas que son computables y los que no lo son tiene un considerable
interés, pues indica el alcance y los límites de la computabilidad, y así demuestra los
límites teóricos de los ordenadores. Además de las cuestiones sobre algoritmos, se han
encontrado numerosos problemas menos "generales" que han resultado ser no
computables. La mayoría de las demostraciones de no computabilidad se basan en el
método de la diagonal. Como ejemplos de estos problemas podemos citar:

1.- El problema de la palabra para Grupos.- Dado un subconjunto S de elementos de un


grupo G, se trata de decidir si una expresión compuesta por elementos de S y con las
operaciones del grupo es igual al elemento neutro del grupo. Durante muchos años se
buscaron ejemplos de grupos finitamente presentados para los que este problema fuese
indecidible. La existencia de uno de estos grupos fué encontrada por Novikov en 1955 y
por Boone en 1957. En el algebra moderna hay abundantes ejemplos de interesantes
problemas no computables; una gran cantidad de ellos sobre propiedades de palabras o
generadores semejantes al problema de la palabra para grupos.

2.- Décimo problema de Hilbert. Una ecuación diofántica es la ecuación de los ceros
enteros de un polinomio con coeficientes enteros. El décimo problema de Hilbert,
propuesto en 1900, pregunta si hay un procedimiento efectivo que determine si una
ecuación diofántica tiene o no solución. Y. Matiyasevich demostró en 1970 que este
problema no tiene solución.

3.- Decibilidad de las teorías lógicas. El desarrollo de la teoría de la computabilidad ha ido


íntimamente ligado al desarrollo de la lógica matemática. Esto ha sido así porque la
decibilidad de los distintos sistemas lógicos es una cuestión fundamental. Es bastante fácil
ver que el cálculo proposicional es decidible. Church y Turing demostraron en 1936 que el
cálculo de predicados no era decidible. Por otro lado, para cada una de las distintas teorías
se ha ido estudiando su posible decibilidad. Como ejemplo más ilustrativo, Tarski
demostró que la teoría de los números reales era decidible.

Por otro lado, son muchos los problemas interesantes que se han demostrado
computables. Todas las funciones construidas por recursividad primitiva o minimalización
a partir de funciones calculables resultan ser calculables como consecuencia de los
trabajos de Church y Turing. Pero además, otras funciones más complejamente definidas
también son computables, siendo el resultado más significativo en relación con esta
cuestión el dado por el siguiente teorema:

Primer teorema de Recursión. Todo operador entre funciones calculables que sea
recursivo (esto es que se defina la imagen de f mediante una función calculable en

11
términos de una parte finita de f), tiene una función parcial computable que es el menor
punto fijo, es decir, esta función es un punto fijo y cualquier otro punto fijo del operador
es una extension de esa función.

Este teorema recibe su nombre porque podemos definir una función mediante una
ecuación recursiva más general que la permitida por la recursividad primitiva, a saber
donde es un operador recursivo. El primer teorema de recursión nos dice que esta
definición es posible; hay una función recursiva que satisface esta ecuación. Como en
matemáticas se requiere que la definición sea unívoca, se dice que dicha ecuación define
el menor punto fijo del operador . Así, y de acuerdo al primer teorema de recursión, la
clase de las funciones calculables es cerrada bajo una muy general forma de definición por
recursión.

Como ejemplo más interesante de aplicación de este tipo de recursión tenemos la función
de Ackermann :

A menudo se utiliza la técnica de reducir un problema a otro para comprobar si tiene o no


solución efectiva. La estratégia en el caso de la respuesta negativa es la siguiente, si se
reduce de forma efectiva un problema sin solución efectiva a otro problema (mediante
una función calculable), entonces este nuevo problema tampoco tendrá solución efectiva.
La razón es muy simple, si tuviese solución efectiva, componiendo el algoritmo solución
con el algoritmo de transformación obtendríamos una solución para el problema
efectivamente irresoluble. En sentido inverso, si se reduce un problema a otro para el que
se conoce una solución efectiva, entonces componiendo se obtiene una solución para el
primer problema. Esta técnica es muy útil y se utiliza a menudo. Por otro lado, esta mísma
técnica es muy empleada en el campo de la complejidad algorítmica. Para asegurarse de
que un problema está en una clase de complejidad, basta reducir el problema a otro de
dicha clase sin más que asegurarse que la reducción se realiza en la correspondiente clase
de complejidad.

12
UNIDAD 6

“REDUCIBILIDAD”

6.1 Problemas insolubles para la teoría de lenguajes

 Problemas de decisión.

Un problema de decisión (PD) es aquel formulado por una pregunta (referida a alguna
propiedad) que requiere una respuesta de tipo “si/no”.

En este tipo de problemas se estudiarán ciertas cuestiones acerca de la computabilidad,


en función de las situaciones en las cuales el resultado de la computación en si o no (o lo
que es igual, 1 ó 0). Los problemas de este tipo se llaman problemas de decisión y dicha
clase de computabilidad se conoce como resolubilidad.

Por ejemplo, el problema “dada una gramática independiente del contexto G,


¿L(G) es vacío?” es un problema del tipo mencionado anteriormente. Obsérvese que hay
un número infinito de casos para este problema – uno por cada gramática independiente
del contexto. Además, para cada caso, se puede determinar una respuesta afirmativa o
negativa.

Otro ejemplo sería la pregunta “dada una gramática sensible al contexto y una
cadena w, ¿ w  L(G) ? ”. Nuevamente obsérvese que hay infinitos casos de este
problema. Cada uno de ellos se determina mediante una gramática sensible al contexto y
una cadena. Es más, cada uno tiene una respuesta sí o no.

Se dice que los problemas de decisión son resolubles si existe un algoritmo que es
capaz de responder si o no a cada uno de dichos casos. Si el algoritmo no existe, se dice
que el problema es irresoluble. Los problemas de los ejemplos anteriores son ambos
resolubles puesto que existe un algoritmo para ellos.

Un problema de decisión es:

• Soluble si existe un algoritmo total para determinar si la propiedad es verdadera


(Existe una MT que siempre para al resolver el problema).
• Parcialmente soluble si existe un algoritmo parcial para determinar si la propiedad
es verdadera (existe una MT que resuelve el problema, pero puede no parar).
• Insoluble si no existe un procedimiento efectivo para determinar si la propiedad es
verdadera (no existe una MT).

13
Otros ejemplos de problemas de decisión:

• ¿Existe un algoritmo para decidir si un número natural cualquiera es par?

Si es soluble.

• ¿Existe un algoritmo para decidir si dos autómatas finitos cualesquiera son


equivalentes?

Si es un problema soluble.

• ¿Existe un algoritmo para determinar si una gramática es ambigua o no?

No es insoluble.

• Muchos problemas insolubles son paradójicos en su naturaleza. Ej: la paradoja de


Russell.

Quizás el problema irresoluble más conocido es el problema de la parada para máquinas


de Turing.

6.2 Un problema Simple Insoluble

 El problema de la Parada

El problema de la parada es el siguiente:

Sea M una máquina de Turing arbitraria con un alfabeto de entrada .

Sea w   * . ¿Parará M con la cadena w como cadena de entrada?

Un caso del problema de parada está formado por la pareja máquina de Turing-
cadena de entrada. Una solución a dicho problema sería un algoritmo que, para cualquier
caso, respondería sí o no de forma correcta, es decir, una algoritmo lo bastante general
como para responder correctamente al problema de parada para cualquier combinación
de máquina de Turing y cadena de entrada.

Al final de nuestro estudio sobre las máquinas de Turing pusimos de relieve la


estrecha relación que existe entre ellas y los algoritmos. El modelo de algoritmo es una
máquina de Turing que para sobre todas las entradas. Por tanto, podemos buscar una
solución al problema de parada, buscando, entre la información que tenemos sobre

14
máquinas de Turing y cadenas de entrada, una máquina de Turing que pare sobre todas
las entradas y proporcione una respuesta positiva o negativa.

En escritos pasados se habló de la máquina de Turing universal y, en particular, se


presentó una técnica para codificar las máquinas de Turing sobre cualquier alfabeto de
entrada  como cadenas de ceros y unos. Hay una cantidad numerable de cadenas de
ceros y unos y , desde luego, no todas tienen por qué ser una codificación de una máquina
de Turing con un alfabeto de entrada , como M 1 M 2 ,... . Además, puesto que  * también
es numerable, podemos enumerarlo como  * = {w1 , w2 ,...}.

Se puede afirmar que L no es un lenguaje recursivamente enumerable. Para


demostrarlo, supongamos que L es recursivamente enumerable. Entonces L debe ser
aceptado por alguna máquina de Turing, llamada M k . Consideremos wk .

Obsérvese que, si wk  L , entonces wk no debe ser aceptada por M k , con lo que


wk  L( M k ) = L , lo que es una contradicción. Por otro lado, si wk  L , entonces ya que
L = L( M k ) , se obtiene que wk  L( M k ) y, por tanto, wk debe estar en L, lo que es otra
contradicción. De esto se deduce que no hay ninguna máquina de Turing que acepte L y
que, por tanto, no puede ser recursivamente enumerable.

Ahora supongamos que el problema de parada tiene solución. Es decir, que hay
una máquina de Turing que para sobre todas las cadenas de entrada y, que ante una
descripción de una máquina de Turing y una cadena de entrada (ambas codificadas), se
puede determinar si M para sobre la cadena de entrada. Entonces, se puede construir una
máquina de Turing M L que acepte el lenguaje anterior. Sea w una cadena. Primero, M L
enumera w1 , w2 ,... hasta que encuentre el k wk y M k a la supuesta máquina de Turing, la
cual determine si M k para sobre la entrada wk . Si se obtiene M k no para sobre la
entrada wk , entonces M L para y acepta wk = w (¿por qué?). Por otro lado, si se obtiene
que M k para sobre la entrada wk , entonces se pasan los códigos correspondientes a M k
y wk a la máquina de Turing universal que simula M k sobre wk . Si M k acepta wk ,
entonces M L para y rechaza wk . Si M k no acepta wk , entonces M L para y acepta wk .

Por tanto, w  L( M L ) si y solo si w L y, entonces, se obtiene que L = L( M L ) .


Esto a su vez, contradice el hecho que L no es recursivamente enumerable. Por tanto, no
puede haber un algoritmo general que dé respuesta al problema de parada para una
combinación arbitraria máquina de Turing-cadena de entrada. Luego podemos enunciar el
siguiente teorema:

15
Teorema 6.1.1. El problema de la parada para las máquinas de Turing es irresoluble

Podemos usar la irresolubilidad del problema de la parada para demostrar que


otros problemas también son irresolubles. Una forma de hacerlo es demostrando que, si
un determinado problema se puede resolver, entonces el problema de parada también es
resoluble.

Por ejemplo, el problema de la cinta en blanco consiste en el problema de decidir si


una máquina de Turing parará cuando comience con una cinta en blanco. para demostrar
que el problema de la cinta en blanco es irresoluble, demostraremos que, si fuera
resoluble, el problema de parada también lo sería. Entonces, consideremos que el
problema de la cinta en blanco es resoluble. Sean M una máquina de Turing y w cualquier
cadena. Sea M’ la máquina de Turing que comienza con una cinta en blanco, luego se
escribe w sobre la cinta y se ejecuta como si hubiera comenzado con la configuración q1 w
(donde q1 es el estado inicial de M). Obsérvese que M´ es una máquina de Turing que al
principio tenía la cinta en blanco. Si obtenemos un algoritmo que determine si una
máquina de Turing arbitraria que comienza con una cinta en blanco para, podremos
determinar si M’ para. Pero M’ para si y sólo si la máquina de Turing M original, para con
la cadena w como entrada. Por tanto podríamos obtener una solución para el problema
de parada si existiera un algoritmo general par el problema de la cinta en blanco. esto
contradice el Teorema 6.1.1 y, por tanto, el problema de la cinta en blanco también es
irresoluble.

La técnica que relaciona el problema de parada con el problema de la cinta en


blanco de forma que nos permite deducir a partir de irresolubilidad del problema de
parada la irresolubilidad del problema de la cinta vacía, se llama reducción. Se dice que el
problema de parada se reduce al problema de la cinta vacía porque la resolublidad del
problema de la cinta vacía nos permite deducir que la resolubilidad del problema de
parada (Un problema X se reduce al problema Y si al obtener la solución de Y, se puede
obtener la solución de X.).

16
Ejemplo 2:

17
18
6.3 Funciones Computables

Las funciones computables son el objeto básico de estudio de la teoría de la computabilidad y


consisten en las funciones que pueden ser calculadas por una máquina de Turing.

Las funciones computables son una formalización de la noción intuitiva de algoritmo y


según la Tesis de Church-Turing son exactamente las funciones que pueden ser calculadas
con una máquina de cálculo. La noción de la computabilidad de una función puede ser
relativizada a un conjunto arbitrario de números naturales A, o equivalentemente a una
función arbitraria f de los naturales a los naturales, por medio de máquinas de Turing
extendidas por un oracle por A o f. Tales funciones puede ser llamados A-computable o f-
computable respectivamente. Antes la definición preciso de una función computable los
matemáticos usaban el término informal efectivamente computable.

Las funciones computables son usadas para discutir computabilidad sin referirse a ningún
modelo de computación concreto, como máquina de Turing o máquina de registros. Los
axiomas de Blum pueden ser usados para definir una teoría de complejidad
computacional abstracta sobre el conjunto de funciones computables.

Según la Tesis de Church-Turing, la clase de funciones computables es equivalente a la


clase de funciones definidas por funciones recursivas, cálculo lambda, o algoritmos de
Markov.

Alternativamente se pueden definir como los algoritmos que pueden ser calculados por
una máquina de Turing, una máquina de Post, o una máquina de registros.

En teoría de la complejidad computacional, el problema de determinar la complejidad de


una función computable esta conocido como un problema de funciones.

Definición

Una función parcial

Se llama computable si el gráfico de f es un conjunto recursivamente enumerable. El


conjunto de funciones parcialmente computables con un parámetro es normalmente
escrito o si el número de parámetros es claro del contexto.

Una función total

19
Se llama computable si el gráfico de f es un conjunto recursivo. El conjunto de funciones
totalmente computables con un parámetro normalmente se escribe o .

Una función computable f se llama predicado computable si es una función con valor
booleano, o sea

A veces, por razones de claridad, se escribe una función computable como

Podemos fácilmente codificar g en una nueva función

Usando una función de pares.

20
6.4. Reducibilidad de Turing

Post propuso un camino para obtener un conjunto no completo para la reductibidad de


Turing, definiendo y estudiando reducibilidades intermedias.

Así, las diferencias importantes entre la reducción M y la de Turing son obviamente el


poder efectuar más de una pregunta, y en segundo lugar el poder “hacer lo contrario” de
lo que indica la respuesta; pero la propiedad realmente relevante resulta ser un poder que
cada pregunta dependa esencialmente de las respuestas obtenidas a preguntas anteriores
(“adaptabilidad” de la reducción).

Es posible definir reducibilidades intermedias, entre ellas las reducciones por la tabla de
variedad, que no son adaptativas.

Y, en efecto, una versión reforzada de los conjuntos simples, los hipersimples, proporciona
conjuntos que no son completos respecto de la reductibilidad por tablas de verdad. Post
demostró este hecho, y construyo un conjunto hipersimple; nosotros lo tenemos fácil por
que, de hecho, ya lo tenemos: el propio conjunto SK no solo es simple si no hipersimple.

Así mismo, propuso un concepto de hiper-hipersimple, y demostró que existen, en la


esperanza de que no fueran completos respecto reducciones de Turing.

La idea era procurar que los complementarios fueran “lo más delgados posible” en cierto
sentido intuitivo: en un inmune “no cabe” un recursivamente enumerable y en un
hiperinmune (complementario de un hipersimple) “el siguiente elemento esta siempre
demasiado lejos” para lo que puede lograr enumerar una función recursiva.

Sin embargo más adelante se estableció que existen hiper-hipersimples que son T-
completos e incluso que existen recursivamente numerables maximales respecto a la
inclusión, y por tanto con complementario “lo más delgado posible” en este sentido
intuitivo, y que son T-completos.

La solución finalmente requirió un concepto técnico nuevo, las construcciones por


métodos de prioridad, que extendieron otra de las varias contribuciones de Post. Merece
la pena comentar que actualmente existen varias demostraciones diferentes, algunas de
las cuales pueden considerarse la culminación del programa estructural de Post; pese a lo
cual, los métodos de prioridad han de verse como el camino apropiado de solución.

21
El problema de Correspondencia de Post

Veremos aquí un problema típico relativo a gramáticas libres de contexto que es


irresoluble, y cuya irresolubilidad se demuestra viendo que es equivalente al Problema de
la Correspondencia de Post. Recordamos las siguientes definiciones

• Una palabra w en el lenguaje libre de contexto (LLC) L es ambigua en una GLC G


que genere a L si w posee más de una derivación siniestra (leftmost) en G. Como
un ejemplo trivial, se tiene que, en la gramática con producciones , ,
, la palabra a posee dos derivaciones siniestras

• Una GLC G es ambigua si hay una palabra, del lenguaje que genera, ambigua en
ella.
• Un LLC L es inherentemente ambiguo si cualquier GLC G que lo genere es ambigua.
A guisa de ejemplo se tiene que el lenguaje

es inherentemente ambiguo. Sin que presentemos aquí una demostración formal de esta
aseveración, daremos una motivación intuitiva de ella. Seguramente el lector no tendrá
ninguna dificultad en visualizar una GLC para generar L1 y otra para generar L2. Ahora,

consideremos el lenguaje Tenemos que


y cada palabra en L0 puede ser derivada tanto por la gramática de L1 como por la
gramática de L2. Una y otra derivación hacen que cada palabra de L0 se a ambigua (para
cualquier gramática de L).

El Problema de Reconocimiento de Ambigüedad en GLC (PRAGLC) es el siguiente:


Instancia:

Solución:

Proposición 2.2 PCP se reduce algorítmicamente a PRAGLC. Por tanto este último es
irresoluble.

Demostración: Dada una instancia de PCP hemos de construir una instancia

de PRAGLC, la cual consistirá de una gramática , de manera que

22
posea solución en PCP si y sólo si sea ambigua. Denotemos por A al

alfabeto de PCP. Escribamos , , y extendamos A incluyendo k

nuevos símbolos . Construyamos los siguientes dos lenguajes:

Sea la GLC cuyas producciones son:

Resultan evidentes las propiedades siguientes:

• El lenguaje generado por esta gramática es

• es ambigua si y sólo si se cumple cualquiera de las siguientes dos


proposiciones claramente equivalentes entre sí:

1.

2.

Posee solución en PCP.

23
CONCLUSIÓN:

Al finalizar este trabajo puedo concluir que la Decibilidad tiene que ver mucho con
los diferentes lenguajes que se manejan como es el lenguaje recursivo y que son
aceptados por la Máquina de Turing, así como pude encontrar diferentes problemas que
pudieron mostrar la Decibilidad como lo el problema de Halting que este es un problema
en donde también se vieron otros temas como el teorema de Rice y de Church.

En cuanto a la Reducibilidad en este caso pude conocer el concepto de


Reducibilidad y los diferentes problemas insolubles para la teoría de lenguajes como lo es
el problema de la Parada y el problema de Post así como también otros problemas
insolubles donde se muestran diagramas para poder ver que no hay resolubilidad, otro
tema que comprendí fueron las funciones computables que son diferentes funciones que
se pueden dar de acuerdo a un lenguaje y la Reducibilidad de Turing es algo que igual se
puede mostrar mediante diferentes problemas y se hace de acuerdo con la máquina de
Turing.

24
BIBLIOGRAFÍA

Kelly Dean

TEORÍA DE AUTOMÁTAS Y LENGUAJES FORMALES

Prentice Hall

http://asixteco.blogdiario.com/

http://sistemas.itlp.edu.mx/tutoriales/teoriadelacomputacion/index.htm

http://entucaramcfly.blogspot.com/2009/06/teoria-de-la-computacion-primera.html

http://www.wikipedia.com/TeoriasDecidibles.html

http://campusvirtual.unex.es/cala/epistemowikia/index.php?title=Funciones_compu
tables

http://www.slidefinder.net/m/mpu6_ilp/3904809

25

Potrebbero piacerti anche