Maquinas Abstractas

11,897 views

Published on

Teoria de Computacion

  • Be the first to comment

  • Be the first to like this

Maquinas Abstractas

  1. 1. Teoría de la Computación Máquinas Abstractas
  2. 2. Máquinas Abstractas <ul><li>Autómatas Finitos </li></ul><ul><ul><li>Lenguajes Regulares </li></ul></ul><ul><li>Autómatas con Pila </li></ul><ul><ul><li>Lenguajes Independientes del Contexto </li></ul></ul><ul><li>Máquinas de Turing </li></ul><ul><ul><li>Lenguajes Sensibles al Contexto </li></ul></ul><ul><ul><li>Computabilidad, Decidibilidad </li></ul></ul>
  3. 3. Autómatas Finitos <ul><li>AF = ( Q,  ,  , q 0 , F) </li></ul><ul><ul><li>Q :conj. Finito de estados </li></ul></ul><ul><ul><li> :alfabeto finito de entrada </li></ul></ul><ul><ul><li> :función de transición,  :Qx   Q </li></ul></ul><ul><ul><li>q 0  Q: estado inicial </li></ul></ul><ul><ul><li>F  Q: conj. de estados finales </li></ul></ul><ul><li>Representación </li></ul><ul><ul><li>matriz </li></ul></ul><ul><ul><li>grafo </li></ul></ul>
  4. 4. d: dígito d d d 7 d d d d 6 5 4 3 2 1 E E +, - d E + - 1 2 2 2 5 3 3 4 4 4 5 5 7 6 6 6 7 7 7 * * 
  5. 5. Autómatas Finitos <ul><li>Movimiento: </li></ul><ul><ul><li>si  (q, s) = q’ entonces (q, sw)  (q’, w) </li></ul></ul><ul><li>Sea w   *, w es aceptada o reconocida por AF, si (q 0 , w)  * (q,  ), q  F </li></ul><ul><li>L(AF)={w  w   * y  (q 0 , w)  * (q,  ), q  F} </li></ul><ul><li>Sea AF = ( Q,  ,  , q 0 , F) un autómata finito, p  Q es accesible desde q  Q, si existe una palabra tal que  (q, x) = p </li></ul><ul><li>Problema </li></ul><ul><li>AFD AFND </li></ul>
  6. 6. Autómatas con Pila <ul><li>AP = ( Q,  ,  ,  , q 0 , z 0 , F) </li></ul><ul><ul><li>Q :conj. Finito de estados </li></ul></ul><ul><ul><li> :alfabeto finito de entrada </li></ul></ul><ul><ul><li> : alfabeto finito de la pila </li></ul></ul><ul><ul><li> :función de transición, </li></ul></ul><ul><ul><ul><li> :Q  (  {  })  Q  * </li></ul></ul></ul><ul><ul><li>q 0  Q: estado inicial </li></ul></ul><ul><ul><li>z 0   : símbolo inicial de la pila </li></ul></ul><ul><ul><li>F  Q: conj. de estados finales </li></ul></ul>
  7. 7. Autómatas con Pila <ul><li>Interpretación </li></ul><ul><ul><li> (q 0 ,s,z)={(p 1 ,  1), ..., (p m ,  m )}, </li></ul></ul><ul><ul><ul><li>q 0 p i  Q s  z   j  * </li></ul></ul></ul><ul><ul><li> (q 0 ,  ,z)={(p 1 ,  1), ..., (p m ,  m )}, </li></ul></ul><ul><ul><ul><li>q 0 p i  Q z    j   * </li></ul></ul></ul><ul><li>Movimiento: </li></ul><ul><ul><li>si (q’,  )   (q, s, z) entonces (q, sw, z  )  (q’, w,  ), </li></ul></ul><ul><ul><ul><li>q, q’  Q s  w  * z   ,  * </li></ul></ul></ul><ul><li>Sea w   *, w es aceptada o reconocida por AP, si </li></ul><ul><ul><li>(q 0 , w, z 0 )  *(q,  ,  ) con q  F  * ó </li></ul></ul><ul><ul><li>(q 0 , w, z 0 )  *(q,  ,  ) termina con pila vacía </li></ul></ul><ul><li>L(AP)={w  (q 0 , w, z 0 )  *(q,  ,  ) para q  F  *} ó {(q 0 , w, z 0 )  *(q,  ,  )} </li></ul>
  8. 8. q0 q1 0,0/00 0,z/0z 1,0/  1,0/   ,z/   ,z/  ¿Lenguaje? ¿APD?
  9. 9. Máquinas de Turing <ul><li>T = ( Q,  ,  ,  , q 0 , Δ, F) </li></ul><ul><ul><li>Q : conj. Finito de estados </li></ul></ul><ul><ul><li> : alfabeto finito de entrada, Δ   ,    </li></ul></ul><ul><ul><li> : alfabeto finito de la cinta </li></ul></ul><ul><ul><li> :función de transición, </li></ul></ul><ul><ul><ul><li> :Q  Q  {I,D}, I,D movimientos </li></ul></ul></ul><ul><ul><li>q 0  Q: estado inicial </li></ul></ul><ul><ul><li>Δ   : blanco </li></ul></ul><ul><ul><li>F  Q: conj. de estados finales </li></ul></ul>
  10. 10. Máquinas de Turing <ul><li>Configuración: (  1 , q,  2 ) </li></ul><ul><ul><li>q  Q, estado actual, </li></ul></ul><ul><ul><li> 1  * string a la izquierda de la cabeza, </li></ul></ul><ul><ul><li> 2  * string a la derecha de la cabeza </li></ul></ul><ul><ul><li>si  2 =  , la cabeza examina un blanco </li></ul></ul><ul><li>Movimiento: </li></ul><ul><ul><li>Si  (q,x i )=(p,y,I), entonces (x 1 ...x i-2 x i-1 ,q,x i ...x n )  (x 1 ...x i-2 ,p,x i-1 yx i+1 ...x n ) </li></ul></ul><ul><ul><li>Si  (q,x i )=(p,y,D), entonces (x 1 ...x i-1 ,q,x i x i+1 ...x n )  (x 1 ...x i-1 y,p,x i+1 ...x n ) </li></ul></ul><ul><li>L(T)={w  w   * y (q 0 , w)  * (  1 , p,  2 ) para algún p  F y  1 ,  2  *} </li></ul>
  11. 11. Ejemplo q0 (q1,x,D) (q3,y,D) q1 (q1,0,D) (q2,y,I) (q1,y,D) q2 (q2,0,I) (q0,x,D) (q2,y,I) *q4 q3 (q3,y,D) (q4,Δ,D) 0 1 x y Δ  0/x,D y/y,D 0/0,D 1/y,I y/y,D 0/0,I x/x,D y/y,I q0 q1 q2 q3 q4 y/y,D Δ /Δ,D
  12. 12. Máquinas de Turing <ul><li>Construya una MT que acepte {a n b n c n  n  0} </li></ul><ul><li>Def. : Un lenguaje es recursivamente enumerable (RE) si es aceptado por una Máquina de Turing </li></ul><ul><ul><li>Las palabras son enumeradas o listadas por la MT </li></ul></ul><ul><li>Hay lenguajes recursivamente enumerables semi decidibles </li></ul><ul><li>La clase de lenguajes recursivamente enumerables decidibles se conoce como la clase de lenguajes recursivos </li></ul>
  13. 13. Máquinas de Turing <ul><li>Teorema : Si un lenguaje es recursivo, entonces es recursivamente enumerable </li></ul><ul><li>Teorema : Si L es un lenguaje recursivo, entonces su complemento -L también es recursivo </li></ul>
  14. 14. Máquinas de Turing <ul><li>Def. : Una MT implementa una función string f(w)=u, si se cumple q 0 w  * q f u, donde q 0 es estado inicial y q f es estado final </li></ul><ul><li>Def. : Una función string f es Turing computable , si existe una MT, T = ( Q,  ,  ,  , q 0 , Δ, F), para la cual q 0 w  * q f u , para algún q f  F, cuando f(w)=u </li></ul><ul><li>La definición anterior, se puede extender fácilmente a funciones algebraicas </li></ul><ul><ul><li>f(n,m)=n+m  transformar a n ba m en a n+m b </li></ul></ul>
  15. 15. Construcción de Máquinas de Turing <ul><li>Combinación de máquinas sencillas, que comparten la misma cinta, forma máquinas más complejas </li></ul><ul><li>Máquina compleja: </li></ul><ul><ul><li>Repertorio de máquinas básicas </li></ul></ul><ul><ul><li>Reglas para combinar máquinas </li></ul></ul><ul><li>Cuando una máquina termina su ejecución, la otra empieza </li></ul><ul><ul><li>La segunda máquina opera sobre el contenido de la cinta que dejó la primera al detenerse </li></ul></ul>
  16. 16. Construcción de Máquinas de Turing <ul><li>Def. : Sean T 1 y T 2 dos máquina de Turing sobre el mismo alfabeto de entrada  y el mismo alfabeto de la cinta  , </li></ul><ul><ul><li>donde T 1 = ( Q 1 ,  ,  ,  1 , p 1 , Δ, F 1 ) </li></ul></ul><ul><ul><li>y T 2 = ( Q 2 ,  ,  ,  2 , p 2 , Δ, F 2 ), </li></ul></ul><ul><ul><li>con Q 1  Q 2 =  </li></ul></ul><ul><li>La composición de T 1 y T 2 es la máquina de Turing T 1 T 2 = ( Q,  ,  ,  , q 0 , Δ, F), </li></ul><ul><ul><li>donde Q= Q 1  Q 2 </li></ul></ul><ul><ul><li>q 0 = p 1 F= F 2 </li></ul></ul><ul><ul><li> (q,s)= </li></ul></ul><ul><ul><ul><li> 1 (q,s) si q  Q 1 y  1 (q,s)  (p,s’,X),  p  F 1 </li></ul></ul></ul><ul><ul><ul><li> 2 (q,s) si q  Q 2 </li></ul></ul></ul><ul><ul><ul><li>(p 2 ,s’,X), si q  Q 1 y  1 (q,s) =(p,s’,X), para algún p  F 1 </li></ul></ul></ul>
  17. 17. Composición de Máquinas de Turing <ul><li>Bloques básicos: </li></ul><ul><ul><li>R : mueve la cabeza una celda a la derecha </li></ul></ul><ul><ul><li>L : mueve la cabeza una celda a la izquierda </li></ul></ul><ul><ul><li>a : escribe el símbolo a en la celda actual </li></ul></ul><ul><ul><li>RR o R 2 : mueve la cabeza dos celdas a la derecha </li></ul></ul><ul><ul><li>R Δ , R s : mueve la cabeza a la derecha hasta encontrar el primer blanco o el primer símbolo s respectivamente </li></ul></ul><ul><ul><li>Otros R  Δ cualquier símbolo distinto de Δ , L Δ , L s , L  Δ </li></ul></ul><ul><li>Bifurcaciones </li></ul>L Δ R a b s=Δ s  Δ
  18. 18. ¿Qué hacen las siguientes máquinas de Turing? R s=a s=b a b R s  Δ s= Δ R Δ ΔR 2 Δ sL 2 Δ s T 1 T 2 ¿Cómo quedaría la máquina que reconoce {a n b n c n  n  0}?
  19. 19. Modificaciones a la máquina de Turing <ul><li>1.-  :Q  Q  {L,R}, puede ser modificado como  :Q  Q  {L,R,S} </li></ul><ul><ul><li> (q,s)=(p,s’,S), la cabeza no se mueve </li></ul></ul><ul><li>2.- Cada celda de la cinta se divide en subceldas </li></ul><ul><ul><li>cinta con múltiples pistas </li></ul></ul><ul><ul><li>contenido de las celdas son n-túplas </li></ul></ul><ul><ul><li>1 cabeza lectora/escritora </li></ul></ul><ul><li>3.- Cinta infinita en una sola dirección </li></ul><ul><ul><li>generalmente, limitada a la izquierda, infinita a la derecha </li></ul></ul>
  20. 20. Modificaciones a la máquina de Turing <ul><li>4.- Máquina de Turing multicinta </li></ul><ul><ul><li>cada cinta tiene su propia cabeza lecto/escritora </li></ul></ul><ul><ul><li>cada cabeza lecto/escritora se controla independientemente de las demás </li></ul></ul><ul><ul><li>en un movimiento la máquina </li></ul></ul><ul><ul><ul><li>cambia de estado dependiendo del estado actual y de las celdas de todas las cintas </li></ul></ul></ul><ul><ul><ul><li>escribe un símbolo en la celda examinada por cada cabeza </li></ul></ul></ul><ul><ul><ul><li>mueve cada cabeza a la izquierda o a la derecha </li></ul></ul></ul><ul><ul><li>función de transición </li></ul></ul><ul><ul><ul><li> :Q  n  Q  n  {L,R} n </li></ul></ul></ul><ul><ul><ul><li> (q,(s 1 ,s 2 ,...,s n ))=(p,(t 1 ,t 2 ,...,t n ),(X 1 ,X 2 ,...,X n )) </li></ul></ul></ul>
  21. 21. Modificaciones a la máquina de Turing <ul><li>5.- Máquina de Turing con cinta multidimensional </li></ul><ul><ul><li>función de transición </li></ul></ul><ul><ul><ul><li> :Q  Q  {L,R,U,D} </li></ul></ul></ul><ul><li>6.- Máquina de Turing no determinista </li></ul><ul><ul><li>función de transición </li></ul></ul><ul><ul><ul><li> :Q  Q  {L,R} </li></ul></ul></ul><ul><ul><ul><li> (q,s)={(p,s’,X),(p’,s’’,X),...,(p i ,s i ,X)} </li></ul></ul></ul>
  22. 22. Máquina de Turing Universal <ul><li>Def. : La máquina de Turing universal es una máquina de Turing que, a partir de una descripción adecuada de una máquina de Turing arbitraria T y un string de entrada w, simula el comportamiento de T sobre el string w. La MTU </li></ul><ul><ul><li>tiene como entrada a T y a w </li></ul></ul><ul><ul><li>requiere de una codificación de T = ( Q,  ,  ,  , q 0 , Δ, F) sobre de un alfabeto finito </li></ul></ul><ul><ul><li>requiere que T tenga un solo estado final </li></ul></ul>
  23. 23. Máquina de Turing Universal <ul><li>Suposiciones </li></ul><ul><ul><li>Q={q 1 , q 2 , ..., q n } </li></ul></ul><ul><ul><ul><li>q 1 es estado inicial y q 2 es el único estado final </li></ul></ul></ul><ul><ul><li> ={s 1 , s 2 , ..., s m } </li></ul></ul><ul><ul><ul><li>s 1 es el blanco </li></ul></ul></ul><ul><li>Para codificar T sólo hay que codificar  </li></ul><ul><li>Representaciones: </li></ul><ul><ul><li>Q :  q 1 : 1 q 2 : 11 .... </li></ul></ul><ul><ul><li> :  s 1 : 1 s 2 : 11 .... </li></ul></ul><ul><ul><li>Movimiento cabeza l/e  L : 1 R : 11 </li></ul></ul><ul><ul><li>El cero se usa como separador </li></ul></ul><ul><li>Ejemplo </li></ul><ul><ul><li> (q 2 , s 1 )=(q 3 , s 4 , L) :  01101011101111010 </li></ul></ul>
  24. 24. Máquina de Turing Universal <ul><li>Una máquina de Turing universal T u se puede implementar como una máquina de Turing de 3 cintas, cuyo alfabeto de entrada contenga ceros y unos </li></ul><ul><ul><li>cinta 1 : codificación de T, con la cabeza en el 0 inicial </li></ul></ul><ul><ul><li>cinta 2 : contenido de la cinta de T, con la cabeza en el 1 que pertenece a la codificación del símbolo actual </li></ul></ul><ul><ul><li>cinta 3 : estado actual de T, con la cabeza en el 1 inicial </li></ul></ul><ul><li>Procedimiento </li></ul><ul><ul><li>T u compara el contenido de las cintas 3 y 2 con el de la cinta 1 , hasta que encuentra una transición para la configuración codificada (en cuyo caso hace las transformaciones indicadas en la cinta 1) o hasta que agota todas las posibilidades </li></ul></ul>
  25. 25. Lenguajes recursivos y recursivamente enumerables <ul><li>Teorema: </li></ul><ul><ul><li>Si L es un lenguaje regular, entonces L es un lenguaje recursivo </li></ul></ul><ul><ul><li>¿Hay lenguajes recursivos que no son regulares? </li></ul></ul><ul><li>Teorema: </li></ul><ul><ul><li>Si L es un lenguaje independiente del contexto, entonces L es un lenguaje recursivo </li></ul></ul><ul><ul><li>¿Hay lenguajes recursivos que no son independientes del contexto? </li></ul></ul><ul><ul><li>Sí, {a n b n c n  n  0}, lo es </li></ul></ul>
  26. 26. Lenguajes recursivos y recursivamente enumerables <ul><li>Teorema: </li></ul><ul><ul><li>Si L es un lenguaje sensible al contexto, entonces L es un lenguaje recursivo </li></ul></ul><ul><li>Lema </li></ul><ul><ul><li>Sea G=(N,  ,S,P) una gramática sensible al contexto. Entonces existe una máquina de Turing T, que para con toda entrada y acepta L(G) </li></ul></ul><ul><li>Teorema: </li></ul><ul><ul><li>Si L 1 y L 2 son lenguajes recursivos, entonces L 1  L 2 también lo es </li></ul></ul><ul><ul><li>¿Cómo podemos probarlo? </li></ul></ul><ul><ul><li>Ejemplo L 1 ={a i b i c k  i,k  0}, L 2 ={a i b j c j  i,j  0} </li></ul></ul>
  27. 27. Lenguajes recursivos y recursivamente enumerables <ul><li>Teorema: </li></ul><ul><ul><li>Hay un lenguaje recursivamente enumerable L para el cual  *-L no es recursivamente enumerable </li></ul></ul><ul><li>Teorema: </li></ul><ul><ul><li>Si L 1 y L 2 son lenguajes recursivos, entonces L 1  L 2 también lo es </li></ul></ul><ul><li>Teorema: </li></ul><ul><ul><li>Si L es un lenguaje RE para el cual  *-L también es RE, entonces L es recursivo </li></ul></ul><ul><li>Teorema: </li></ul><ul><ul><li>Les un lenguaje RE ssi L es enumerado por una máquina de Turing </li></ul></ul>
  28. 28. <ul><li>Máquina de Turing </li></ul><ul><ul><li>modelo de computación mecánica </li></ul></ul><ul><ul><li>modela un proceso </li></ul></ul><ul><ul><li>los procesos mecánicos que siempre terminan se llaman algoritmos </li></ul></ul><ul><ul><li>una máquina de Turing que para sobre cualquier string es un modelo de algoritmo </li></ul></ul><ul><li>Si L es recursivo, hay un algoritmo que determina si w  L o no </li></ul><ul><li>si L es RE pero no recursivo no hay un algoritmo que determine si w  L o no </li></ul><ul><ul><li>Problema de indecidibilidad (irresolubilidad) </li></ul></ul>
  29. 29. Lenguajes recursivos y recursivamente enumerables <ul><li>Teorema: </li></ul><ul><ul><li>Si L es RE y  *-L también lo es, entonces L es recursivo </li></ul></ul><ul><li>Tanto los lenguajes RE, como los recursivos son cerrados bajo la intersección y la unión </li></ul><ul><li>Tesis de Church-Turing </li></ul><ul><ul><li>Nada puede ser considerado algoritmo si no puede ser ejecutado como una máquina de Turing que para con todas las entradas, y todas esta máquinas serán legítimamente llamadas algoritmos </li></ul></ul>
  30. 30. Halting Problem <ul><li>Se dice que los problemas de decisión son solubles si existe un algoritmo capaz de responder sí o no a cada caso </li></ul><ul><li>Si tal algoritmo no existe, el problema es insoluble </li></ul><ul><li>El problema insoluble más conocido es el problema de la parada de la máquina de Turing: </li></ul><ul><li>Sea T una máquina de Turing arbitraria con alfabeto de entrada  . Sea w  *. ¿Parará T con w como entrada? </li></ul>
  31. 31. Halting Problem <ul><li>Necesitamos una MT que pare con todas las entradas (T,w) y responda sí , si T con w para y responda no si T con w no para </li></ul><ul><li>MTs sobre  son enumerables T 1 , T 2 , ... </li></ul><ul><li>Sea L={w i  w i no es aceptada por T i } </li></ul><ul><li>L no es RE </li></ul><ul><ul><li>Supongamos L enumerable, entonces L es aceptado por T k , y consideremos w k </li></ul></ul><ul><ul><li>Si w k  L entonces no debe ser aceptada por T k , luego w k  L(T k )=L </li></ul></ul><ul><ul><li>Si w k  L, ya que L= L(T k )  w k  L(T k ) y por lo tanto w k  L </li></ul></ul>
  32. 32. Otros Problemas Insolubles <ul><li>Un algoritmo, o programa que automáticamente determine: </li></ul><ul><ul><li>si una gramática independiente del contexto es ambigua </li></ul></ul><ul><ul><ul><li>un string w  L(G), un árbol de derivación sintáctico en G </li></ul></ul></ul><ul><ul><li>una demostración de la corrección de programas </li></ul></ul><ul><ul><ul><li>realmente f(x  , x  ,..., x  )=z </li></ul></ul></ul><ul><ul><ul><li>realmente f para para cualquier (x  , x  ,..., x  ) </li></ul></ul></ul>
  33. 33. Ambigüedad en gramáticas independientes del contexto <ul><li>E  E o E </li></ul><ul><li>E  E y E </li></ul><ul><li>E  p </li></ul><ul><li>E  q </li></ul><ul><li>E  r </li></ul>p o q y r E E E p o q E q y r y r p o <ul><li>E  E o T </li></ul><ul><li>E  E y T </li></ul>T  p T  q T  r
  34. 34. Corrección de programas <ul><li>Ambiente = asertivas </li></ul><ul><ul><li>antes, después de la ejecución de un comando </li></ul></ul><ul><ul><li>ambiente inicial + </li></ul></ul><ul><ul><li>reglas propuestas por el programa </li></ul></ul><ul><ul><li>= ambiente final deseado </li></ul></ul><ul><ul><li> programa correcto </li></ul></ul><ul><li>Similar demostración de teoremas </li></ul><ul><li>¿Problema de la parada de la MT? </li></ul><ul><ul><li>Verificación si el programa se detiene </li></ul></ul>

×