Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Maquinas Abstractas

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 34 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (20)

Anzeige

Ähnlich wie Maquinas Abstractas (20)

Anzeige

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>

×