Vous êtes sur la page 1sur 10

1.

- Describe una Máquina de Turing que acepte cadenas de entrada de


longitud par.

-Estados (Q’s): {S, Q1, Q2, T, R} (S=Start, T=Take, R=Reject)

-Alfabeto de entrada (): {a}

-Alfabeto de cinta (): {, ,} (= Símbolo de inicio =Espacio en blanco)

-Funciones de transición (: Q × Γ = Q × Γ × {→, ←}


 (S,)= (Q1,, )

(Q1, a) = (Q2, , )

Q1, ) = (T, _ , _)

Q2, a) = (Q1, , )

Q2, ) = (R, _ , _)

-Esquema:

-Ejemplo de aceptación de la cadena par: aa

En cinta:aa
La cabeza lectora comienza con el estado S, lee el símbolo “”, lo reescribe, se
mueve a la derecha y cambia al estado Q1, con dicho estado lee el símbolo “a”, lo
sustituye por “ ” y se mueve nuevamente a la derecha cambiando al estado Q2,
con dicho estado lee la siguiente “a”, la sustituye por otro “ ” y se mueve a la
derecha modificando su estado a Q1; finalmente, lee “ ” y cambia al estado de
aceptación (T).

-Ejemplo de rechazo de la cadena no par: aaa

En cinta:aaa

La cabeza lectora comienza con el estado S, lee el símbolo “”, lo reescribe, se


mueve a la derecha y cambia al estado Q1, con dicho estado lee el símbolo “a”, lo
sustituye por “ ” y se mueve nuevamente a la derecha cambiando al estado Q2,
con dicho estado lee la siguiente “a”, la sustituye por otro y se mueve a la
derecha modificando su estado a Q1, con dicho estado lee la última “a” la
sustituye por “ ”, se mueve a la derecha y cambia al estado Q2; finalmente, lee
y cambia al estado de rechazo (R).

2.- Da argumentos en favor o en contra de la afirmación: “El problema de


determinar si una máquina de Turing se detiene con una entrada es más fácil
que el problema de determinar que no se detiene”.

Es más fácil tomar una postura respecto al enunciado anterior si primero


clarificamos algunos conceptos, como “recursivo” y “recursivamente enumerable” y
esbozamos el problema de la detención (Halting Problem).

De acuerdo con Kozen1, un conjunto es recursivamente enumerable si éste es


aceptado por una MT y es recursivo si es aceptado por una MT total. En donde MT
total se refiere a una MT que se detiene con todas las entradas, es decir que
siempre acepta o rechaza, nunca entra en un loop infinito. Los conjuntos
recursivos están cerrados bajo complemento, es decir que si el conjunto A es
recursivo su complemento también lo es. Entonces, si tenemos una MT total con
L(M)=A e intercambiamos sus estados de aceptación y rechazo, obtendremos una
MT total tal que L(M’)=~A

Pero en las MT no totales no ocurre igual, esto es porque “rechazar” y “no aceptar”
no son sinónimos, así que una máquina dada con una entrada dada podría entrar
en un loop, lo cual significa que se va a un ciclo infinito de estados de transición y
nunca acepta o rechaza. Todos los conjuntos que son recursivos son

1
Kozen, C., Dexter, Automata and Computability, Springer-Verlag, Nueva York, 1997, pp. 219-220.
recursivamente enumerables, pero no al revés, esto significa que no todas las MT
son equivalentes a MT totales, así que no de todas sabemos que van a detenerse.

Es un hecho que existen MT que frente a ciertas cadenas de entrada nunca se


detendrán2. Consideremos entonces el problema de si existe un algoritmo tal que
dada una cadena w y una MT arbitraria, nos permita determinar si la MT se va a
detener o no (con aceptación o rechazo), este es el problema de la detención
(HP). La pregunta sobre la existencia de tal algoritmo es equivalente a la pregunta
sobre la posibilidad de construir una MT (H), que pueda predecir el
comportamiento de otra MT (M), lo cual significaría que todos los lenguajes
recursivamente enumerables son recursivos, en tal caso en vez de alimentar a M,
alimentaríamos a H con una cadena de entrada w, y con la descripción de M. Si H
dice que M va a detenerse, entonces correríamos la cadena w en M para ver si
acepta o rechaza, pero si H dice que M no va a detenerse, entonces nos
ahorraríamos el esfuerzo. No obstante, ya se ha demostrado que H no puede
existir3.

Alan Turing demostró que el Halting Problem no es decidible, pues no podemos


generar una MT universal total que haga lo que se sugiere en el párrafo anterior.

Una mejor comprensión de la demostración de indecibilidad de Turing requiere


considerar la noción de MT universal, la cual es una MT que puede simular una
MT arbitraria con una entrada arbitraria. Cuando la MT arbitraria acepta una
cadena, la máquina universal que la emula la acepta también, cuando la MT
arbitraria rechaza una cadena la MT universal la rechaza también y cuando la MT
arbitraria se va en un loop indefinido la que la emula hace lo mismo. En breve, una
MT universal no intenta determinar si la MT a la que emula se detendrá o no, solo
la simula ciegamente, y si la MT nunca se detiene, la MT universal la seguirá
simulando felizmente por siempre4. Pero siempre se pueden hacer adaptaciones a
una MT universal.

Ahora consideremos específicamente la MT que Turing intentó construir, la cual es


la MT universal total (K) que se detiene y acepta si la MT arbitraria se detiene con
una cadena, y que se detiene y rechaza si la MT arbitraria entra en un loop. K
sería muy útil para saber si una máquina se detendrá o no, pero no es posible
construir K y Turing lo probó mediante el método de la diagonalización de Cantor;
demostró que la máquina K no puede ser construida, es decir, partiendo de la idea
de su existencia llegó a una contradicción por reducción al absurdo.

2
Viso Gurovich, Elisa, Introducción a la Teoría de la Computación, Facultad de Ciencias, UNAM, p.277
3
Idem.
4
Kozen, op. Cit., pp.231-232
La prueba consiste en una matriz cuyo encabezado (columnas) son todas las
posibles cadenas binarias, mientras que el nombre de sus filas (izquierda)
corresponde a todas las MT posibles codificadas binariamente como se muestra a
continuación:

Si asumimos que se puede construir la máquina K (anteriormente descrita)


entonces podremos construir una máquina N, la cual acepta cuando K rechaza y
se va en un loop cuando K acepta (invierte). La construcción de la máquina N
implica complementar la diagonal (en la matriz anterior), lo cual significaría que
hay una MT que no está en nuestra tabla, esto es una contradicción, pues
supusimos que estaban todas las MT. De lo anterior, como asumimos K y
llegamos a una contradicción, entonces concluimos que no puede existir tal
máquina K y por tanto el problema de la detención (HP) es indecidible.

Todo lo que hemos analizado hasta ahora, en especial la prueba anterior, nos
muestra que no hay un algoritmo general que nos permita saber si una máquina
se parará o no se parará. Sin embargo, uno siempre puede simular una máquina
dada en una entrada dada, si la máquina se detiene, pues lo sabremos tarde o
temprano, pero si la simulación no se ha detenido, no podremos determinar si se
parará en algún momento o ha entrado en un loop infinito, es en tal sentido que
encontramos una asimetría entre el problema de determinar si una máquina se
parará con una entrada determinada y el de determinar si no se parará.

Lo anterior significa que dada una máquina de Turing M puedes construir una
máquina de Turing N que acepte cuando M acepta. Pero no hay un algoritmo para
5
Ibídem., p. 233
construir una máquina N' que acepte cuando M se va en un loop. Dicho de otra
forma, el problema de la detención (HP), al igual que el de la pertenencia (MP),
son indecidibles pero son también semidecidibles (ambos son recursivamente
enumerables), la demostración de eso sólo requiere que se hagan ciertas
adaptaciones a una MTU6. En contraste, el problema de determinar si una MT no
se detiene con alguna entrada no es semidecidible, es sólo indecidible, también
hay una prueba para esto, pero basta decir que para que el –HP (el problema de
la no detención) fuera semidecidible tendría que ser recursivamente enumerable,
pero dado que ya sabemos que HP es recursivamete enumerable, esto significaría
que ambos son recursivos; sin embargo, ya está demostrado que HP no es
recursivo.

Finalmente, como dato adicional, es importante señalar que aunque no podemos


tener un algoritmo general que diga si una máquina se detendrá o no, hay
máquinas y entradas concretas para las cuales es posible determinar la detención
por medios heurísticos, por ejemplo, una máquina para la cual el estado de inicio
es el estado de aceptación7. Los métodos heurísticos facilitan encontrar pruebas
para programas concretos.

3. Argumenta en favor o en contra de adoptar una noción de inferencia


lógica que tome en cuenta la eficiencia.

En computación la eficiencia de un algoritmo está relacionada con la cantidad de


recursos que utiliza, así que un algoritmo es considerado eficiente si su consumo
de recursos está en o por debajo de la media aceptable, es decir, si usa un
“tiempo razonable” para el cómputo.

En otros términos, la eficiencia se define en función del número de pasos que


toma llegar a una conclusión; entre más pasos se requieren para completar un
algoritmo el proceso será menos eficiente, y entre menos pasos será más
eficiente. De acuerdo con Papadimitriou8, podemos considerar las tasas de
crecimiento polinomiales como aceptables en cuanto a consumo de tiempo; en
contraste, tasas exponenciales 2n, como las que usamos para calcular las filas de
una tabla de verdad, o las de la forma n!, son motivo de preocupación.
Usualmente, si no es posible encontrar una solución en tiempo polinomial, se
considerará que el problema no tiene una solución eficiente, evidentemente esto

6
Las adaptaciones son que Dadas M ∈ TM y α ∈ Σ∗: se simula M con α y se acepta (M#α) si M acepta α (en
ese caso el lenguaje aceptado es MP); se simula M con α, pero se acepta (M#α) si M termina, ya sea con
aceptación o rechazo (en tal caso el lenguaje aceptado es HP). Obtenido de las diapositivas de la clase.
7
Ibídem., p. 232.
8
Papadimitriou, H., Christos, Computational Complexity, Addison Wesley Longman, USA, 1994, p.6-7
es controversial, pues hay cómputos eficientes que no son polinomiales y
cómputos polinomiales que en la práctica no son eficientes, pero digamos que es
una convención para algunos.

Esbozado el concepto de eficiencia queda clara su importancia, pero debemos


señalar que en distintas lógicas hay diferentes niveles de eficiencia, y a veces
intercambiamos eficiencia por expresividad. Como aquí se nos pregunta sobre una
noción de inferencia lógica que tome en cuenta la eficiencia, y también se nos
sugirió analizarlo con ejemplos de la vida real, diremos en primer lugar que en
nuestro razonamiento cotidiano, la eficiencia, entendida como el menor número de
pasos para llegar a soluciones, es prioritaria sobre la validez inferencial. Con lo
anterior nos referimos a que en nuestras decisiones cotidianas no nos detenemos
demasiado a corroborar que la conclusión se siga necesariamente de las
premisas, preferimos ahorrar pasos, ser lo más eficientes que se pueda al tomar
decisiones, pues solo así podemos movernos en el mundo sin tropezar a cada
paso. Tan solo tenemos que imaginar lo poco eficiente que sería realizar largos
razonamientos para decidir el ángulo en que se moverá cada uno de nuestros pies
al caminar, probablemente mientras lo decidiésemos habríamos sido atropellados
por un automóvil o habríamos perdido el autobús que estábamos a punto de
tomar.

Pondremos un ejemplo más dramático: si tuviéramos una bomba que explotará en


10 segundos, y necesitáramos 30 segundos para hacer todas las inferencias que
con seguridad nos llevarán a desactivarla, seguramente preferiremos un
razonamiento eficiente, basada en cierto conocimiento limitado y que no nos dará
seguridad absoluta pero tomará menos de 10 segundos, pues esta es nuestra
única oportunidad de sobrevivir.

No obstante, hay que señalar que también hay casos en los que la eficiencia es
menos importante y preferimos usar más tiempo y recursos porque sabemos que
eso nos llevará a la mejor decisión.

Pondremos un ejemplo: si tuviéramos que decidir si enviar un cohete tripulado al


espacio, deberíamos evaluar todas las posibilidades sobre el éxito de la misión, es
decir, en este caso resulta menos importante la eficiencia, no importa si
requeriremos de diez años de difíciles cálculos matemáticos y lógicos, pues la
prioridad es la validez del razonamiento, es decir, el éxito de la misión.

En conclusión, si la eficiencia debe adoptarse o no en una noción de inferencia


lógica, y en específico si debe adoptarse en los razonamientos de la vida
cotidiana, dependerá del caso, en algunos casos preferiremos sacrificar eficiencia
por precisión, mientras que en otros haremos lo contrario.
4.- Explica por qué sería difícil utilizar el no determinismo para hacer más
eficiente el razonamiento en la vida real.

Una definición estricta para no determinismo en el caso de las MT es que dada


una entrada para un estado, existen diferentes funciones de transición. Una MT no
determinista tiene una sola cabeza y una cinta infinita hacia ambas direcciones 9, y
en cada símbolo y estado, la máquina tiene un número finito de opciones para
moverse10. Lo que hace a las MT no deterministas tan poderosas y diferentes es la
noción “liberal” de lo que significa resolver un problema, es decir, una entrada es
aceptada cuando hay una secuencia de elecciones no deterministas que
conducen a la aceptación y no importa si otros caminos llevan al rechazo, un “sí”
es suficiente.11

En situaciones no determinista podemos no saber cómo se va a desarrollar una


computación pero podemos tener cierta idea del rango de posibilidades. Dada una
cadena podemos imaginar una máquina de Turing tomando múltiples vías, cada
una siguiendo su propia ruta para determinar si la cadena se acepta, lo cual ocurre
cuando una de sus múltiples rutas la lleva a aceptar. Como ejercicio, podemos
pensar una MT que se replica a sí misma, y cada réplica sigue un camino distinto.

Ejemplo: digamos que programamos una máquina para resolver un problema de


sudoku, entonces cada una de sus posibles vías sigue una ruta distinta
concluyendo el proceso cuando una de ellas llega a la solución del sudoku. La
siguiente imagen ayuda a entender lo que es una MT no determinista:

9
En realidad no existen ninguna restricción para que una MT no determinista tenga más de una cabeza, más
de una cinta o una cinta infinita en una sola dirección, esto es debido a su equivalencia con las MT
deterministas, cuya demostración no haremos en este trabajo.
10
Viso Gurovich, op., Cit., p.242
11
Papadimitriou, op., Cit. pp.45-46
12

El poder de las MT no deterministas se muestra por ejemplo al considerar el


problema de la satisfacción, este es un problema NP, pero una MT no determinista
podría llegar a su solución en tiempo polinomial (asumiendo que la fórmula se
puede satisfacer). Lo anterior podría considerarse un proceso eficiente, pues como
señalamos previamente, para algunos autores las soluciones en tiempo polinomial
son eficientemente aceptables.

Sin embargo, el no determinismo, tal como fue definido en los párrafos anteriores,
difícilmente puede ocurrir en la vida real, pues los seres humanos no podemos
replicarnos para recorrer simultáneamente distintas vías en la búsqueda de
soluciones, tal vez haya algunos súper humanos que puedan hacerlo, pero en
general no ocurre así; además, los humanos no tenemos un Buda que nos diga
cuál camino recorrer primero para llegar a la solución pronto, es decir, no tenemos
la garantía de que la vía de razonamiento que elegimos nos llevará a la solución
correcta, es en tal sentido que el no determinismo difícilmente haría más eficiente
el razonamiento en la vida real.

5.- Señala un lenguaje lógico que sea más expresivo que el cálculo de
proposiciones, pero menos que el cálculo de predicados. ¿Qué ventajas
puede tener el uso de este lenguaje?

En cuanto a poder expresivo, la lógica modal proposicional es más poderosa que


la lógica proposicional, pero menos que la lógica de primer orden. En un nivel
intermedio entre las dos se encuentra la lógica modal proposicional.

12
Ibídem, p.46.
Por una parte, la lógica proposicional es la más simple de las tres, sus fórmulas
son construidas a partir de proposiciones atómicas que se evalúan como
verdaderas o falsas. Las proposiciones se combinan mediante operadores
booleanos (conjunción, negación, implicación y disyunción). En realidad, en lógica
proposicional lo relevante no es la verdad de las fórmulas individuales, sino la
forma en la que la verdad de una proposición afecta la de otras.

Por otra parte, la lógica de primer orden es la más rica de las tres, pues su
lenguaje incluye elementos que permiten razonar acerca de individuos en un
dominio dado, esto incluye funciones, predicados y cuantificación universal y
existencial sobre individuos. Mientras las proposiciones son solo verdaderas o
falsas, los predicados se evalúan como verdaderos o falsos dependiendo de los
valores dados a sus parámetros1314.

En suma, la lógica de primer orden es más expresiva que la lógica proposicional,


pues tiene más reglas que permiten construir fórmulas más complejas. Pero entre
estas dos se encuentra la lógica modal proposicional, que gracias a sus
operadores es más expresiva que la proposicional, pero menos que la de primer
orden, pues esta última puede capturar todo lo que podemos expresar con lógica
modal proposicional.

Entonces, en pocas palabras, la ventaja de utilizar el lenguaje de la lógica modal


proposicional sobre el de la lógica proposicional es que, por ejemplo, podemos
expresar nuestras nociones de necesidad y posibilidad (mediante los operadores
unarios de caja y diamante) cosa que no podemos hacer en lógica proposicional.
Del otro lado, aunque la lógica modal proposicional es menos expresiva que la
lógica de primer orden, tiene la ventaja de ser decidible.

Además, es preciso decir que la gran expresividad de la lógica de primer orden


tiene un costo en términos de complejidad de las inferencias, esto ocurre cuando
los problemas son complejos y requieren de algoritmos también complejos que
pueden ser incompatibles con los recursos usuales de un sistema autómata15.

Cabe señalar también que combinando los cuantificadores de lógica de primer


orden y los operadores modales de la lógica modal proposicional obtenemos una
lógica aún más expresiva, lógica modal de primer orden.

13
Bacelar Almeida, José, Rigorous Software Development, Springer, Londres, 2011, p.28.
14
Fagin, Ronald, et. Al., Reasoning About Knowledge, The Mit Press, USA, 2004.

15
Lalanda, Philiphpe, Autonomic Computing, Springer, USA, 2013, p.207
Bibliografía:

Bacelar Almeida, José, et. Al., Rigorous Software Development, Springer, Londres,
2011.

Fagin, Ronald, et. Al., Reasoning About Knowledge, The Mit Press, USA, 2004.

Lalanda, Philiphpe, et. Al., Autonomic Computing, Springer, USA, 2013.

Kozen, C., Dexter, Automata and Computability, Springer-Verlag, USA, 1997.

Viso Gurovich, Elisa, et Al., Introducción a la Teoría de la Computación, Facultad


de Ciencias, UNAM.

Papadimitriou, H., Christos, Computational Complexity, Addison Wesley Longman,


USA, 1994.

Vous aimerez peut-être aussi