Make your own free website on Tripod.com
megaman(goyo)
Home | Page Title

Árboles de derivación

Gráficas y árboles

Recordamos que una gráfica G=(V,A) consta de un conjunto de vértices y de un conjunto de aristas A donde cada arista es una pareja de vértices. Para una arista

 

se dice que la arista incide en sus extremos vi,vj y que éstos son adyacentes. Para cada vértice , el grado o la valencia de v es el número de vértices que le son adyacentes:


Un camino entre dos vértices u,v es una sucesión de aristas tal que u es un extremo de a1, v lo es de ak y cualesquiera dos aristas contiguas tienen un extremo común. Una gráfica dirigida es una gráfica tal que cada arista es un elemento del producto cartesiano , es decir, cada arista posee un inicio y un fin. En tal caso, las valencias externa e interna cuentan, respectivamente, las aristas que salen de y las que entran a ese vértice, es decir, para cualquier :


Un árbol es una gráfica dirigida tal que

  • Existe un único vértice de grado interior cero. Ese vértice se dice ser la raiz de .
  • Cualquier vértice que no es raiza posee un grado interior igual a 1.

Un vértice es interior si su grado exterior es mayor que 0. Los vértices que no son interiores son hojas. Si entonces v se dice ser un hijo de u y u el padre de v. Dos vértices con un mismo padre se dicen ser hermanos.

 

 

 

 

 

 

 

 

 

Observación 1.1  

1.

Cada vértice tiene un camino único que lo conecta con la raiz. El número de aristas en ese camino es la altura del vértice. Los vértices visitados por ese camino son los ancestros de v.

2.

Para cada vértice el conjunto adquiere naturalmente una estructura de árbol. Se dice ser el subárbol enraizado en u.

3.

En cada vértice el subárbol es la unión de junto con los subárboles enraizados en los hijos de u.

Todo árbol tiene una estructura de conjunto ordenado mediante el orden


Sin embargo, el árbol se dice ordenado sólo si en cada vértice interior el conjunto de sus hijos posee un orden lineal, es decir, a los hijos de todo vértice u se los puede ordenar de menor a mayor. Denotemos por al orden de los hijos de u. Para cada familia de órdenes en hijos de vértices interiores se puede definir, por ejemplo, los órdenes siguientes en el árbol Ar:

Preorden:

Cada padre precede a sus hermanos mayores y a los vértices del que es ancestro.

Entreorden:

En cada vértice interior se divide al conjunto de sus hijos en dos conjuntos y de manera que para cualquier pareja se cumpla . En el entreorden se tiene que cada padre precede a sus hermanos mayores y a sus últimos hijos, pero sucede a sus hijos primeros.

Postorden:

Cada padre sucede a sus hermanos menores y a los vértices del que es ancestro.

Cualquiera de estos órdenes es un orden de izquierda a derecha: es un orden de izquierda a derecha si cualesquiera dos vértices con subárboles ajenos son tales que todos los vértices en el subárbol de uno anteceden a cualquier vértice en el subárbol del otro, i. e. :


Todo orden de izquierda a derecha es total: cualesquiera dos vértices en el árbol son comparables. En un tal orden, la hoja mínima se dice ser la hoja siniestra (leftmost) y la máxima es la hoja diestra (rightmost).

Árboles y gramáticas

Sea G= (V,T,P,s0) una gramática libre de contexto. Un árbol gramatical en G es un árbol ordenado tal que

  • los vértices de están etiquetados con etiquetas en el alfabeto de la gramática o con la etiqueta vacía, , y
  • cada vértice interior corresponde a una producción en G, es decir, si A es la etiqueta del vértice interior v0 y es la palabra formada por las etiquetas de los hijos de v0 entonces es una producción en P.

Un árbol gramatical es de derivación si su raiz está etiquetada con el símbolo inicial s0 y todas sus hojas tienen etiquetas terminales o vacía. La leyenda de un árbol de derivación es la palabra obtenida al concatenar ordenadamente, con cualquier orden de izquierda a derecha, las etiquetas de sus hojas. Así pues, todo árbol de derivación tiene como leyenda una palabra en L(G). Recíprocamente, para cada palabra en L(G) existe un árbol de derivación cuya leyenda coincide con . Si y , donde es una producción en P y consiste únicamente de símbolos terminales, decimos que se sigue de por la aplicación diestra de una producción. Una derivación es diestra si todas las aplicaciones de producciones hechas son diestras. Las derivaciones siniestras se definen simétricamente. Ejemplo. Consideremos las siguientes producciones:


Sendas derivaciones siniestra y diestra de la palabra a(ba2)2=abaabaa son las siguientes:


En el lenguaje L(G) generado por esta gramática se encuentran incluidos los siguientes lenguajes:

  • . De hecho, .
  • . De hecho, , con y x como antes.
  • , donde y





Para concluir esta sección presentaremos las nociones de ambigüedad en gramáticas. Una gramática libre de contexto G=(V,T,P,s0) se dice ser ambigua si alguna palabra de su lenguaje, posee dos derivaciones diestras. Ejemplos. 1. La gramática G cuyas producciones son es ambigua pues la palabra (ab)2a posee dos derivaciones diestras:





2. Si para la gramática G=(V,T,P,s0) incluimos una copia V' del conjunto de variables no-iniciales más copias de las producciones de P con símbolos en S' entonces la nueva gramática es ambigua pues cada derivación diestra puede derivarse considerando símbolos en V o en su contraparte V'.

 

 

Autómata del Pushdown

De Wikipedia, la enciclopedia libre

Salto a: navegación, búsqueda

En teoría de los autómatas, un autómata del pushdown es un autómata finito que puede hacer uso un apilado que contiene datos. El término “pushdown” refiere a “empujar hacia abajo” la acción por la cual el autómata mecánico prototípico entraría en contacto con físicamente una tarjeta perforada para leer su información. El término “autómatas del pushdown” (PDA) refiere actualmente a los dispositivos que computan abstractos que reconocen idiomas context-free.

  •  

Operación

Los autómatas del Pushdown diferencian de los autómatas finito normales de dos maneras: (1) Pueden utilizar la tapa del apilado para calcular hacia fuera qué transición a la toma. (2) Pueden manipular el apilado como parte de realizar una transición.

Los autómatas del Pushdown eligen una transición poniendo en un índice una tabla por la señal de entrada, el estado actual, y la tapa del apilado. Los autómatas finito normales apenas miran por la señal de entrada y el estado actual que no tienen un apilado a trabajar con. Los autómatas del Pushdown agregan el apilado como parámetro para la opción. Dado una señal de entrada, un estado actual, y un símbolo dado en la tapa del apilado, se elige una trayectoria de la transición.

Los autómatas del Pushdown pueden también manipular el apilado, como parte de realizar una transición. Los autómatas finito normales eligen un nuevo estado, el resultado de seguir la transición. La manipulación puede ser empujar un símbolo particular a la tapa del apilado, la manipulación puede ser hacer estallar de la tapa del apilado. O, los autómatas pueden no hacer caso del apilado, y salen de él mientras que es. La opción de la manipulación (o de ninguna manipulación) es determinada por la tabla de la transición.

Juntado: Una señal de entrada dada, un estado actual, y un símbolo del apilado, pueden seguir una transición a otro estado, y una manipulación opcional del apilado.

El autómata finito (subyacente) es específicamente un autómata finito no determinista, dando qué se conoce técnico como “autómata no determinista del pushdown” (NPDA). Si se utiliza un autómata finito determinista, después el resultado es un “autómata determinista del pushdown” (DPDA), un dispositivo terminantemente más débil. Nondeterminism significa que puede haber más que apenas una transición disponible a seguir, dado una señal de entrada, un estado, y un símbolo del apilado.

Si permitimos un acceso finito del autómata a dos apilados en vez de apenas uno, obtenemos un dispositivo más de gran alcance - equivalente en energía a una máquina de Turing. Un autómata limitado linear es un dispositivo que es más de gran alcance que un autómata del pushdown solamente menos tan que una máquina de Turing.

Para cada gramática independiente del contexto, existe un autómata del pushdown tales que la lengua generada por la gramática es idéntica con la lengua generada por el autómata. Inversamente, porque cada autómata del pushdown existe una gramática independiente del contexto tales que la lengua generada por el autómata es idéntica con la lengua generada por la gramática.

 

Definición

UN NPDA W se puede definir como tuple 7:

W = (Q, Σ, Φ, σ, s, Ω, F) donde

  • Q es un sistema finito de estados
  • Σ es un sistema finito del alfabeto de la entrada
  • Φ es un sistema finito del alfabeto del apilado
  • el σ (o a veces δ) es una relación finita de la transición
  • s es un elemento de Q el estado del comienzo
  • Ω es el símbolo inicial del apilado
  • F es subconjunto de Q, consistiendo en los estados del final.

Hay dos criterios posibles de la aceptación: aceptación por el apilado vacío y aceptación por el estado final. Los dos se demuestran fácilmente para ser equivalentes: un estado final puede realizar un lazo del estallido para conseguir a un apilado vacío, y una máquina puede detectar un apilado vacío e incorporar un estado final detectando un símbolo único empujado por el estado inicial.

Algunos utilizan un tuple 6, cayendo el Ω para el símbolo inicial del apilado, en lugar agregando una primera transición que escriba un símbolo de inicio al apilado.

 

 

Ejemplo

La lengua context-free se puede reconocer con los autómatas siguientes del pushdown:

donde están las transiciones

δ (q1, a, ε) = {(q1, A)}

δ (q1, b, A) = {(q2, ε)}

δ (q2, b, A) = {(q2, ε)}

para cualquier otro (q, θ, ρ)


El significado de las transiciones puede ser explicado mirando la primera transición

Cuando q0 es el estado actual, a es la entrada y el ε se toma de la tapa del apilado entonces los cambios del estado a q1 y se escribe a la tapa del apilado.

Ver también

Acoplamientos externos

Referencias

 

Recuperado de “http://en.wikipedia.org/wiki/Pushdown_automaton

 

Eliminación de la Recursividad por la Izquierda

En esta práctica vamos a extender las fases de análisis léxico y sintáctico del compilador del lenguaje Tutu cuya gramática se definió en el ejercicio 9.5.1 con expresiones que incluyen diferencias y divisiones. Además construiremos una representación del árbol sintáctico concreto. Para ello consideremos el siguiente esquema de traducción recursivo por la izquierda (en concreto las reglas recursivas por la izquierda son las 10, 11, 13 y 14):

 

0

p ds ss

{ $p{t} = { n => 0, ds => $ds{t}, ss => $ss{t} } }

1

p ss

{ $p{t} = { n => 1, ss => $ss{t} } }

2

ds d ';' ds

{ $ds{t} = { n => 2, d => $d{t}, ; => ';', ds => $ds{t} } }

3

ds d ';'

{ $ds{t} = { n => 3, d => $d{t} ; => ';' } }

4

d INT il

{ $d{t} = { n => 4, INT => 'INT', il >$il{t} } }

5

d STRING il

{ $d{t} = { n => 5, STRING => 'STRING', il >$il{t} } }

6

ss s ';' ss

{ $ss{t} = { n => 6, s => $s{t}, ; => ';' ss => $ss{t} } }

7

ss s

{ $ss{t} = { n => 7, s => $s{t} } }

8

s ID '=' e

{ $s{t} = { n => 8, ID => $ID{v}, = => '=', e => $e{t} } }

9

s P e

{ $s{t} = { n => 9, P => 'P', e => $e{t} } }

10

e e1 '+' t

{ $e{t} = { n => 10, e => $e1{t}, + => '+', t => $t{t} } }

11

e e1 '-' t

{ $e{t} = { n => 11, e => $e1{t}, - => '-', t => $t{t} } }

12

e t

{ $e{t} = { n => 12, t => $t{t} } }

13

t t1 '*' f

{ $t{t} = { n => 13, t => $t1{t}, * => '*', f => $f{t} } }

14

t t '/' f

{ $t{t} = { n => 14, t => $t1{t}, / => '/', f => $f{t} } }

15

t f

{ $t{t} = { n => 15, f => $f{t} } }

16

f '(' e ')'

{ $f{t} = { n => 16, ( => '(', e => $e{t}, ) => ')' } }

17

f ID

{ $f{t} = { n => 17, ID => $ID{v} } }

18

f NUM

{ $f{t} = { n => 18, NUM => $NUM{v} } }

19

f STR

{ $f{t} = { n => 19, STR => $STR{v} } }

20

il ID ',' il

{ $il{t} = { n => 20, ID => $ID{v}, ',' => ',', il => $il{t} } }

21

il ID

{ $il{t} = { n => 21, ID => $ID{v} } }

22

s

{ $s{t} = { n => 22, s => '' }}

 

Por razones de espacio hemos abreviado los nombres de las variables. El atributo t (por tree) es una referencia a un hash. La entrada n contiene el número de la regla en juego. Hay una entrada por símbolo en la parte derecha. El atributo v de ID es la cadena asociada con el identificador. El atributo v de NUM es el valor numérico asociado con el terminal. Se trata de, siguiendo la metodología explicada en la sección anterior, construir un analizador descendente predictivo recursivo que sea equivalente al esquema anterior. Elimine la recursión por la izquierda. Traslade las acciones a los lugares convenientes en el nuevo esquema e introduzca los atributos heredados que sean necesarios. Genere pruebas siguiendo la metodología explicada en la sección 9.4.1. ¡Note que el árbol que debe producir es el de la gramática inicial, ¡No el de la gramática transformada!

 

 

 

Forma normal de Chomsky

Una gramática libre de contexto G=(V,T,P,S) se dice estar en forma normal de Chomsky si sus producciones son de cualquiera de las dos formas

  • con , o bien
  • con y .

Proposición 3.1   Toda gramática libre de contexto G=(V,T,P,S) que no genere a la palabra vacía se puede transformar en una gramática libre de contexto G'=(V',T,P',S') en forma normal de Chomsky.

En efecto, dada una gramática G, apliquemos el último procedimiento de la sección anterior para transformar a G en una gramática G'' sin variables inútiles ni producciones vacías ni producciones unitarias equivalente a G. A las producciones que quedasen de la forma con y las dejamos sin cambio alguno. A cada producción de la forma , con y , la transformamos en una sucesión de producciones de la forma siguiente: A cada símbolo terminal que aparezca en la palabra le asociamos una variable nueva Xa e incorporamos la producción . Así pues las producciones que no sean de la forma con X variable y a terminal, han de ser de la forma , con todos variables. Para cada una de estas últimas producciones introducimos k-2 nuevas variables e incorporamos la sucesión de producciones

 

Obtenemos así la forma normal equivalente a la gramática dada.

Forma normal de Greibach

Una gramática libre de contexto G=(V,T,P,S) se dice estar en forma normal de Greibach si sus producciones son de la forma


Veremos que la construcción de formas normales de Greibach equivalentes a gramáticas dadas es procedimental. Para cualquier gramática libre de contexto G, definamos, para cada variable , a los conjuntos siguientes:


Primeramente observemos que podemos ``componer producciones'' de manera que tengamos siempre una gramática equivalente a la gramática dada.

Lema 3.1 (Composición de producciones)   Si es una producción en G y las producciones en P(Y) pueden escribirse como entonces al sustituir por las producciones , obtenemos una gramática equivalente a G.

En efecto, en toda derivación terminal que aplique en un momento la producción , necesariamente se ha de aplicar una producción en P(Y) para suprimir el símbolo Y.

Lema 3.2 (Transformación de producciones ``reflexivas'')   Para cada variable enumeremos Q(X) y R(X) como


Sea Z una variable que no ocurra en V. Sea la gramática que se obtiene al sustituir el conjunto de producciones P(X) por las producciones


En efecto, toda derivación siniestra, en la gramática original, de una palabra en L(G) ha de determinar una derivación diestra de la misma palabra en la gramática transformada. La demostración de la afirmación anterior es directa. Como mera ilustración, consideremos tan solo un ejemplo: La gramática con producciones genera al lenguaje consistente de las palabras de la forma b(ab)*. De acuerdo con la construcción anterior, como y , obtenemos la gramática


Presentemos sendas derivaciones, siniestra en la gramática original y diestra en la transformada, para la palabra bababab:


Veamos ahora el resultado principal de esta sección:

Proposición 3.2   Toda gramática libre de contexto G=(V,T,P,S) que no genere a la palabra vacía se puede transformar en una gramática libre de contexto G*=(V*,T,P*,S*) en forma normal de Greibach.

Sea pues G=(V,T,P,S) una gramática libre de contexto que no genere a . La transformación a una forma normal de Greibach la hacemos gradualmente mediante los pasos siguientes:

1.

Sea G'=(V',T,P',S') la forma normal de Chomsky de G.

2.

Modificaremos a las producciones en P' para tenerlas tales que toda producción, cuyo consecuente se inicie con una variable, ha de ser de la forma con j>i, para un cierto orden en el conjunto de variables actuales, digamos . Para esto apliquemos el procedimiento cuyo seudocódigo se presenta en la figura 6.3.

  

Figure 6.3: Modificaciónde producciones de acuerdo con el orden de V'.


Por lo visto en el lema 6.3.2, la gramática G'' así obtenida es equivalente a G.

3.

LOS PROBLEMAS DE HILBERT

El 8 de Agosto de 1900, en París, un profesor de la

Universidad de Göttingen dio una

conferencia que capturaría la imaginación de los matemáticos

del siglo XX. El profesor era David Hilbert y su plática se

tituló simplemente “Problemas Matemáticos”.

Hilbert era uno de los matemáticos más prominentes

de su generación. Poco tiempo después de haberse

doctorado, se interesó en la teoría de invariantes algebraicos. (Por ejemplo, dada una

forma cuadrática, el determinante de la matriz correspondiente es invariante bajo

rotaciones). En 1888, a los 26 años, Hilbert demostró que, dada una forma algebraica,

existe un número finito de invariantes que generan a todos los demás. (Una especie de

base). Con este resultado y con su trabajo posterior, Hilbert prácticamente resolvió

todos los problemas interesantes que había sobre invariantes.

Habiendo agotado ese tema, se dedico a la Teoría de Números. Rápidamente

descubrió unas demostraciones de la trascendencia de ð y de e más simples y directas

que las demostraciones originales. Su principal contribución fue una generalización de la

Ley de Reciprocidad Cuadrática (publicada en 1898), que les permitió a él y a matemáticos

posteriores extender la Teoría de Números a campos más abstractos y generales.

Entonces, volvió a cambiar de tema. En 1899 publicó el libro “Fundamentos de la

Geometría”. Una exposición axiomática de la Geometría (Euclidiana y No Euclidiana)

que se sujeta a los requisitos más estrictos del rigor matemático que se estaban desarrollando

en el momento y que son la norma hoy en día. A partir de entonces, Hilbert estuvo muy

interesado en los Fundamentos de las Matemáticas. En particular, se preocupó por la

existencia de una colección de axiomas que fuera consistente y completa.

Para la solución de ciertas ecuaciones que aparecen en la Física, un método muy

común es encontrar una función que minimice cierta integral (El Principio de Dirichlet).

Roberto Murillo

Departamento Académico de Matemáticas, ITAM

rmurillo@itam.mx

David Hilbert

epístola de la ciencia

478352735098142689345637282964856758595973342092863453039485761232534775650393761234567890987654321342564399384756575751198096454685959

25

Como el problema proviene de una situación física, la gente simplemente asumía la

existencia de dicha función minimizadora. Pero a mediados del siglo XIX, Weierstrass dio

ejemplos donde no existía tal función. Sin embargo, el Principio de Dirichlet parece tan

simple y natural que Hilbert decidió tratar de rescatarlo. Y en Septiembre de 1899 publicó

un artículo donde demostró que, bajo ciertas condiciones, el Principio de Dirichlet es

válido. Dichas condiciones son satisfechas por los problemas que aparecen más

comúnmente en la Física, pero excluyen los ejemplos puramente matemáticos de

Weierstrass.

Es claro que Hilbert estaba interesado en varias áreas de las Matemáticas. Su

método de trabajo consistía en concentrarse en algún problema y tratar de simplificarlo,

de hacerlo más claro. Para él, el rigor matemático era una herramienta en este proceso. A

través del rigor, uno puede evitar las falsas suposiciones que pueden llevar al error y a la

confusión.

Con su prestigio en aumento, Hilbert recibió una invitación

para dar una conferencia plenaria en el Segundo Congreso

Internacional de Matemáticas en 1900. Esta fue la

conferencia “Problemas Matemáticos”. En ella habló de la

importancia de un buen problema para el impulso de las

Matemáticas y de su convicción filosófica de que dado

cualquier problema matemático, tarde ó temprano se le

encontrará una solución.

Fue así que propuso una lista de 23 problemas, no

como un reto, sino como un incentivo para los matemáticos

del nuevo siglo. Esta lista es conocida como “Los Problemas

de Hilbert” y consta de problemas importantes en Teoría de

Números, Álgebra, Geometría, Análisis, Teoría de Conjuntos

y Fundamentos Axiomáticos.

La lista incluye problemas tan famosos como la Hipótesis del Continuo. Al intentar

la solución de los problemas, el objetivo de Hilbert de estimular el crecimiento de las

Matemáticas se ha cumplido con creces. Aún hoy, el sueño de muchos matemáticos es

contribuir a la solución de alguno de ellos e ingresar así a la elite que se conoce no

oficialmente como “The Honors Class”.

laberintos e infinitos

478352735098142689345637282964856758595973342092863453039485761232534775650393761234567890987654321342564399384756575751198096454685959

26

En este momento, de los 23 problemas, 16 se consideran básicamente resueltos, 4

son más programas de trabajo que problemas concretos, y 3 permanecen sin resolver (a

esta categoría pertenece el problema #8; La Hipótesis de Riemann). En futuros artículos

iremos comentando con mayor detalle algunos de los problemas.

Las Matemáticas han cambiado mucho en un siglo. Con la tremenda expansión y

especialización que han sufrido las diferentes áreas, hoy es prácticamente imposible para

una sola persona tener la visión panorámica que tenía Hilbert. Aun así, en 1998, Stephen

Smale propuso una lista de problemas para el siglo XXI. (Su primer problema es,

nuevamente, La Hipótesis de Riemann). Otro intento de indicar los problemas importantes

para este siglo es el libro [1], que es un trabajo de 30 autores diferentes bajo la dirección

de 4 editores. Pero no parece que estos esfuerzos tengan el mismo atractivo global que

tienen los Problemas de Hilbert.

Bibliografía;

[1] Arnold, V.I. et. al. Mathematics: Frontiers and Perspectives. IMU and AMS (2000).

[2] Hilbert, David. “Mathematical Problems”. Bulletin AMS 8 (1902), 437-479.

[3] Reid, Constance. Hilbert. Springer-Verlag (1970).

[4] Smale, S. “Mathematical Problems for the Next Century”. Mathematical Intelligencer.

20:2 (1998), 7-15.

[5] Yandell, B. H. The Honors Class. A. K. Peters, Ltd. (2002).

 

Máquina de Turing

Como se ha dicho antes, actualmente, el autómata más general es una máquina de Turing y cualquier modelo de computación es equivalente a una MT. Como muchas cosas de gran utilidad práctica y profundidad conceptual, los elementos que forman una MT son simples; aparte de los elementos comunes a cualquier autómata se añaden los siguientes:

 

·        ·         Una cinta (quizá infinita) dividida en espacios rectangulares.

·        ·         Cabeza de lectura y escritura.

 

Las cadenas de símbolos están escritos en la cinta, uno y sólo uno en cada espacio rectangular; un símbolo es el espacio en blanco y los símbolos especiales, I y D, indican  movimiento a la izquierda y derecha, respectivamente, de la cabeza lectora sobre la cinta. En el caso que la cinta sea infinita, se extiende hacia la derecha y se asume que en el extremo izquierdo de la cinta se tiene un tope más allá del cual la cabeza lectora no puede moverse. La infinitud de la cinta quiere decir que se puede leer o escribir tanto como se quiera, lo cual corresponde, teóricamente, a una capacidad de memoria ilimitada.

 

La cabeza de lectura y escritura es la que se encarga de leer o escribir los símbolos en la cinta conforme a la función de transición (mecanismo de control). Puede leer un símbolo y cambiarlo por otro, ó borrarlo y dejar ese espacio en blanco; ó habiendo leído un espacio en blanco, escribir un símbolo distinto del blanco. Si los símbolos que lee son I o D, la cabeza lectora se mueve a la izquierda o derecha, respectivamente.

 

La memoria de un autómata de Turing es la propia cinta. En el caso del lenguaje {an bn cn : n Î N} la MT es la de la figura X y funciona conforme la función de transición descrita en la Tabla X: la cabeza lectora lee las cadenas de a’s y sin borrarlas avanza hacia la derecha hasta leer la última a;  conforme empieza a leer un símbolo b lo sustituye por un espacio en blanco, y cambia de dirección moviéndose hacia la izquierda hasta encontrar una a, la cual sustituye por una b; entonces se mueve de nuevo hacia la derecha tantas b’s como ha escrito, lee el espacio en blanco y lee la siguiente b (de la cadena original) si la hay, completando un ciclo. Sucesivamente repite el ciclo hasta encontrar un símbolo c distinto de b. Si el autómata lee y borra tantas b’s como a’s que sustituye, significa que hubo el mismo número de a’s y b’s en la cadena que se está leyendo. Entonces se opera el ciclo de la misma manera con las c’s y las b’s. Si son tantas c’s que lee y borra como b’s que sustituye, el autómata logra un estado final y reconoce a la cadena como parte del lenguaje. En caso contrario, no son iguales el número de ocurrencias de a, b y c, por lo que la cadena es rechazada por la MT y no forma parte del lenguaje.

 

Obsérvese como en el ejemplo la cinta funciona como memoria al mantener guardadas durante la operación, primero las a’s luego las b’es y luego las c’s.  Conforme necesita lo escrito en memoria (la cinta) para operar, lo saca (lo lee) y lo utiliza –a veces lo borra, otras lo sustituye, etc. Sin embargo, la cinta ofrece posibilidades de manejo de memoria mucho más poderosas que la pila. En el ejemplo, la MT empila (lee sin borrar de izquierda a derecha) las a’s y luego, desempila cada una y empila en su lugar una b (lee de derecha a izquierda una a, la borra y escribe en su lugar una b); el punto es que para desempilar las a’s la MT lee no solo en la cima de la pila, sino también puede leer las posiciones interiores de la pila (puede recorrer la cinta todas los cuadros a la izquierda hasta llegar al tope, el cual representaría el fondo de la pila). A diferencia, un AP solo puede leer de la cima de la pila.  Por este manejo limitado de memoria es que un AP no puede reconocer el lenguaje {an bn cn : n Î N} pese a poder reconocer al lenguaje {an bn : n Î N}.

 

En general puede decirse que un autómata de pila es una MT tal que la pila esta sobre la cinta y tiene la restricción de moverse hacia la izquierda solamente una posición. Es claro que en una MT los movimientos hacia derecha e izquierda de la cinta, así como la capacidad de leer y escribir cualesquiera símbolos y espacios blanco sobre la cinta, es lo que permite un manejo dinámico de la memoria, versatilidad de la cual carece un autómata de pila al no contar con una cinta ni una cabeza de lectura – escritura, ni la capacidad de ir hacia delante o atrás. 

 

Es posible que con el ejemplo anterior, el lector empiece a creer que pese a que una MT es un dispositivo simple, es capaz,  sin embargo,  de realizar cualquier procedimiento computable. Al fin y al cabo un proceso computable no requiere si no

 

Ø     Ø       Un almacén de datos (cinta tan larga como se requiera),

Ø     Ø       Un dispositivo para leer y/o escribir datos en el almacén (cabeza de lectura/escritura),  y

Ø     Ø       Capacidad para moverse a través de los datos en el almacén (movimientos de la cabeza a lo largo de la cinta, coordinados por el control de estados).

 

Como se ve, todos ellos son elementos que posee una MT. Una computadora no es sino una gran y compleja Máquina de Turing formada a partir de máquinas de Turing más simples. El disco duro corresponde a la cinta, la cabeza a los dispositivos de lectura y escritura del y sobre el disco, y el control de la cabeza (matemáticamente, la función de transición) a los comandos de los distintos programas que se ejecutan con la computadora[1][8]. Pasaremos ahora a la precisar lo que es un algoritmo o secuencias de instrucciones que una computadora ejecuta en tiempo finito.

 

Máquina de Turing

De Wikipedia

Saltar a navegación, búsqueda

La máquina de Turing es un modelo computacional introducido por Alan Turing en el trabajo “On computable numbers, with an application to the Entscheidungsproblem”, publicado por la Sociedad Matemática de Londres, en el cual se estudiaba la cuestión planteada por David Hilbert sobre si las matemáticas son decidibles, es decir, si hay un método definido que pueda aplicarse a cualquier sentencia matemática y que nos diga si esa sentencia es cierta o no. Turing construyó un modelo formal de computador, la máquina de Turing, y demostró que existían problemas que una máquina no podía resolver. La máquina de Turing es un modelo matemático abstracto que formaliza el concepto de algoritmo.

Diagrama artístico de una máquina de Turing.

  •  

Descripción

La máquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se pueden realizar en esta máquina se limitan a:

  • avanzar el cabezal lector/escritor para la derecha;
  • avanzar el cabezal lector/escritor para la izquierda.

El cómputo es determinado a partir de una tabla de estados de la forma:

(estado,valor) (\nuevo estado, \nuevo valor, dirección)

Esta tabla toma como parámetros el estado actual de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el nuevo estado de la máquina y el valor a ser escrito en la cinta.

Con este aparato extremadamente sencillo es posible realizar cualquier cómputo que un computador digital sea capaz de realizar.

Mediante este modelo teórico y el análisis de complejidad de algoritmos, fue posible la categorización de problemas computacionales de acuerdo a su comportamiento, apareciendo así, el conjunto de problemas denominados P y NP, cuyas soluciones en tiempo polinómico son encontradas según el determinismo y no determinismo respectivamente de la máquina de Turing.

De hecho, se puede probar matemáticamente que para cualquier programa de computadora es posible crear una máquina de Turing equivalente. Esta prueba resulta de la Tesis de Church-Turing, formulada por Alan Turing y Alonzo Church, de forma independiente a mediados del siglo XX.

La idea subyacente en el concepto de máquina de Turing es una persona ejecutando un procedimiento efectivo definido formalmente, donde el espacio de memoria de trabajo es ilimitado, pero en un momento determinado sólo una parte finita es accesible. La memoria se divide en espacios de trabajo denominados celdas, donde se pueden escribir y leer símbolos. Inicialmente todas las celdas contienen un símbolo especial denominado “blanco”. Las instrucciones que determinan el funcionamiento de la máquina tienen la forma, “si estamos en el estado x leyendo la posición y, donde hay escrito el símbolo z, entonces este símbolo debe ser reemplazado por este otro símbolo, y pasar a la leer la celda siguiente, bien a la izquierda o bien a la derecha. La máquina de Turing puede considerarse como un autómata capaz de reconocer lenguajes formales. En ese sentido es capaz de reconocer los lenguajes recursivamente enumerables, de acuerdo a la jerarquía de Chomsky. Su potencia es, por tanto, superior a otros tipos de autómatas, como el autómata finito, o el autómata con pila, o igual a otros modelos con la misma potencia computacional.

 

[editar]

Definición

Una máquina de Turing con una sola cinta puede ser definida como una 6-tupla M = (Q,Γ,s,b,F,δ), donde

  • Q es un conjunto finito de estados
  • Γ es un conjunto finito de símbolos de cinta, el alfabeto de cinta
  • es el estado inicial
  • es un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces
  • es el conjunto de estados finales de aceptación
  • es una función parcial denominada función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.


Existen en la literatura un abundante número de definiciones alternativas, pero todas ellas tienen el mismo poder computacional, por ejemplo se puede añadir el símbolo S como símbolo de "no movimiento" en un paso de cómputo.

Ejemplo

Definimos una máquina de Turing sobre el alfabeto {'0', '1'}, donde 0 representa el símbolo blanco. La máquina comenzará su proceso situada sobre un símbolo "1" de una serie. La máquina de Turing copiará el número de símbolos "1" que encuentre hasta el primer blanco detrás de dicho símbolo blanco. Es decir, situada sobre el 1 situado en el extremo izquierdo, doblará el número de símbolos 1, con un 0 en medio. Así, si tenemos la entrada "111" devolverá "1110111", con "1111" devolverá "111101111", y sucesivamente.

El conjunto de estados es {s1, s2, s3, s4, s5} y el estado inicial es s1. La tabla que describe la función de transición es la siguiente:

 Estado Símbolo Símbolo   Mov.  Estado           Estado Símbolo Símbolo   Mov.  Estado
       
                                    leido   escrito        
                                    sig.                   
                                    leido   escrito         sig.
 - - - - - - - - - - - - - - - - - - - -          
                                    - - - - - - - - - - - - - - - - - - - -
  s1     
                                    1   ->    0      R     
                                    s2              
                                    s4      1  
                                    ->   1      
                                    L     s4
  s2      1   ->    1      R      s2              
                                    s4      0  
                                    ->   0      
                                    L     s5
  s2      0   ->    0      R      s3              
                                    s5      1  
                                    ->   1      
                                    L     s5
  s3      0   ->    1      L      s4              
                                    s5      0  
                                    ->   1      
                                    R     s1
  s3      1  
                                    ->    1     
                                    R      s3

El funcionamiento de una computación de esta máquina se puede mostrar con el siguiente ejemplo (en negrita se resalta la posición de la cabeza lectora/escritora):

 Paso Estado  Cinta      Paso Estado   Cinta
 - - -
                                    - - - - - - - -   - - - - - - - - - - - -
    1  s1     11           9  s2       1001
    2  s2     01          10  s3       1001
    3  s2     010         11 
                                    s3       10010
    4  s3     0100        12  s4       10011
    5  s4     0101        13  s4       10011
    6  s5     0101        14  s5       10011
    7  s5     0101        15  s1       11011
    8  s1     1101          -- Parada --

La máquina realiza su proceso por medio de un bucle, en el estado inicial s1, reemplaza el primer 1 con un 0, y pasa al estado s2, con el que avanza hasta la derecha, saltando los símbolos 1 hasta un 0 (que debe existir), cuandolo encuentra pasa a ser s3, con este estado avanza saltando los 1 hasta encontrar otro 0 (la primera vez no habría ningún 1). Una vez en el extremo derecho, añade un 1. Después comienza elproceso de retorno; con s4 vuelve a la izquierda saltando los 1, cuand encuentra un 0 (en el medio de la secuencia), pasa a s5 que continúa a la izquierda saltando los 1 hasta el 0 que se escribió al principio. Se reemplaza de nuevo este 0 por 1, y pasa al símbolo siguiente, si es un 1, se pasa a otra iteración del bucle, pasando al estado s1 de nuevo. Si es un símbolo 0, será el símbolo central, con lo que la máquina se detiene al haber finalizado su cómputo.

Máquinas de Turing deterministas y no deterministas

La entrada de una máquina de Turing viene determinada por el estado actual y el símbolo leído, siendo el cambio de estado, la escritura de un nuevo símbolo y el movimiento las acciones a tomar en función de una entrada. En el caso de que para cada par estado y símbolo posible exista a lo sumo una posibilidad de ejecución, diremos que es una máquina de Turing determinista, mientras que en el caso de que exista al menos un par (estado, símbolo) con más de una posible combinación de actuaciones diremos que se trata de una máquina de Turing No Determinista.

La función de transición δ en el caso no determinista, queda definida como sigue:

La capacidad de cómputo de ambas versiones es equivalente; se puede demostrar que dada una máquina de Turing no determinista existe otra máquina de Turing determinista equivalente, en el sentido de que reconoce el mismo lenguaje, y viceversa. No obstante, la velocidad de ejecución de ambos formalismos no es la misma, pues si una máquina no determinista M reconoce una cierta palabra de tamaño n en un tiempo O(t(n)), la máquina determinista equivalente reconocerá la palabra en un tiempo O(2t(n)). Es decir, el no determinismo permitirá reducir la complejidad de la solución de los problemas, permitiendo resolver, por ejemplo, problemas de complejidad exponencial en un tiempo polinómico (Ver complejidad computacional).

Máquina Universal de Turing

Una máquina de Turing computa una determinada función parcial de carácter definido, y unívoca, definida sobre las secuencias de posibles cadenas de símbolos de su alfabeto. En este sentido se puede considerar como equivalente a un programa de ordenador, o lo que es lo mismo, a un algoritmo. Sin embargo es posible realizar una codificación de la tabla que representa a una máquina de Turing, a su vez, como una secuencia de símbolos en un determinado alfabeto; por ello, podemos construir una máquina de Turing que acepte como entrada la tabla que representa a otra máquina de Turing, y, de esta manera, simule su comportamiento.

En 1947, Turing indicó:

Se puede demostrar que es posible construir una máquina especial de este tipo que pueda realizar el trabajo de todas las demás. Esta máquina especial puede ser denominada máquina universal.

Esta fue, posiblemente, la idea germinal del concepto de Sistema Operativo, un programa que puede, a su vez, ejecutar en el sentido de controlar otros programas, demostrando su existencia, y abriendo camino para su construcción real.

Con esta codificación de tablas como cadenas, se abre la posiblidad de que unas máquinas de Turing se comporten como otras máquinas de Turing. Sin embargo, muchas de sus posibilidades son indecidibles, pues no admiten una solución algorítmica. Por ejemplo, un interesante problema es determinar si una máquina de Turing cualquiera se parará en un tiempo finito sobre una determinada entrada; problema conocido como Problema de la parada, y que Turing demostró que era indecidible. En general, se puede demostrar que cualquier cuestión no trivial sobre el comportamiento o la salida de una máquina de Turing es un problema indecidible.

Obtenido de "http://es.wikipedia.org/wiki/M%C3%A1quina_de_Turing"

 

MÁQUINAS DE TURING Y

LENGUAJES ACEPTADOS POR FRASES

MÁQUINAS DE TURING

 

- Son máquinas teóricas capaces de aceptar lenguajes generados por gramáticas

estructuradas por frases.

- Una máquina de Turing tiene una cabeza de lectura/escritura que avanza

bidireccionalmente por una cinta infinita por la derecha.

Entrada: contenido inicial de la cinta.

Salida: contenido final de la cinta.

- Símbolos de cinta:

Símbolos de entrada: Σ

Símbolos de cinta: Γ Σ

- Transiciones: ä(p,x) = (q,y) donde:

p,q: estados

x Σ : símbolo de entrada

y Γ {L,R} : símbolo de cinta o desplazamiento

- En una transición, la máquina de Turing lee un símbolo de la cinta, cambia de estado y

escribe un símbolo o efectúa un desplazamiento a izquierda o derecha.

- Ejemplo de diagrama de transiciones

- Proceso de reconocimiento de una cadena:

Se parte del estado inicial, y la cinta contiene símbolos de entrada.

Se efectúan las transiciones pertinentes según la función de transición.

Si la cabeza lectora rebasa el extremo izquierdo de la cinta, la cadena es

rechazada y el proceso termina (terminación anormal).

Si la máquina alcanza el estado de parada, la cadena es aceptada.

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -2-

- MT: M(S,Ó,Ã,ä,i,h)

S: conjunto finito de estados.

• Ó: alfabeto de entrada.

• Ã: alfabeto de símbolos de cinta.

• ä: función de transición (determinista): S x à → S x (Ã∪{L,R}).

i: estado inicial.

h: estado de aceptación o de parada.

- En general, las máquinas de Turing son deterministas.

TESIS DE TURING

El poder computacional de una máquina de Turing es tan grande como el de cualquier

sistema computacional posible.

COMBINACIÓN DE MÁQUINAS DE TURING

- Pasos:

1. Eliminar la característica de inicio de los estados iniciales de todas las máquinas,

excepto de la primera.

2. Eliminar la característica de parada de todas las máquinas, e incluir un nuevo estado

de parada.

3. Para cada estado de parada p y para cada x Γ:

a) Si la nueva máquina se debe detener al llegar a p con x, añadir un arco x/x de p al

nuevo estado de parada.

b) Si al llegar al estado p con el símbolo actual x la máquina compuesta debe

transferir el control a la máquina M(S,Ó,Ã,ä,i,h), dibujar un arco con etiqueta x/z

de p al estado q de M tal que ä(i,x) = (q,z).

CONSTRUCCIÓN MODULAR DE MÁQUINAS DE TURING

- Construcción de máquinas de Turing complejas a partir de bloques elementales.

- Transferencia de control entre máquinas: → →  M1 x M2

- Transferencia de control con varios símbolos:

→  →   → → M1 x, y, z w M2 w M3 }

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -3-

Bloques de construcción básicos

- Bloques más complejos

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -4-

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -5-

EVALUACIÓN DE CADENAS

- Aceptación de una cadena

Situación inicial:

Cabeza en el extremo izquierdo de la cinta.

La cadena de entrada empieza en la segunda posición de la cinta.

Situación final:

Máquina de Turing en estado de parada.

- Lenguaje aceptado por una máquina de Turing: conjunto de cadenas que acepta.

- Una máquina de Turing puede escribir un mensaje de aceptación si acepta una cadena.

Mensaje de aceptación: Y∆∆∆

- Símbolos especiales

#: extremo izquierdo de la cinta

*: extremo derecho de la porción alterada de la cinta

- Si la máquina es M, la máquina final es:

M0 es igual que M, salvo que:

Si M0 alcanza #, se desplazará una casilla a la izquierda (terminación

anormal)

Si M0 alcanza *, debe desplazarlo un lugar a la derecha ejecutando

R*L

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -6-

Máquinas de Turing de varias cintas

- Cada cinta tiene su propia cabeza de lectura/escritura.

- Una transición:

Depende de los símbolos acutales de todas las cintas.

Sólo afecta a una cinta (escribir o desplazar).

- Estado inicial:

Contenido de la primera cinta: w∆∆∆...

Las restantes cintas están en blanco, con la cabeza en su extremo izquierdo.

Teorema 3.1

Para cada máquina de Turing M de k cintas, existe una máquina de Turing M' con una

cinta tal que L(M)=L(M').

DEMOSTRACIÓN: Construcción de M'

- Previo:

Cada casilla en el conjunto de las k cintas se representa como una 2k-tupla:

* En la posición 2n-1 de la tupla se tiene el símbolo de la cinta n.

* En la posición 2n de la tupla hay 1 si la cabeza está en la casilla, si no.

Es posible asignar un símbolo de cinta nuevo a cada posible 2k-tupla.

* Así se puede almacenar en una sola cinta toda la información del conjunto

completo de cintas.

Cada estado de M' se representa como un estado compuesto formado por una k+1-

tupla cuyo primer elemento es el estado de la cinta, siendo los demás elementos los

símbolos actuales de todas las cintas.

- Primer paso: traducir el contenido de la cinta de M' a un formato que represente todas

las cintas de M.

Desplazar el contenido de la cinta a la derecha un lugar: RSRL(la cabeza queda

en la segunda posición de la cinta).

Mover la cabeza un lugar a la izauierda, escribir # y mover un lugar a la derecha.

Repetir los dos pasos siguientes hasta que el símbolo sustituido en b) sea un blanco:

a) Mover la cabeza un lugar a la derecha.

b) Sustituir el símbolo actual x por la tupla (x,,,...,).

Ejecutar L, lo que pondría la cabeza en la segunda casilla de la cinta, y escribir en

ella la tupla (,1,,1,...,,1).

- Simulación de M:

Cada transición de M supone una secuencia de pasos en M'.

Estado inicial: (i,,,...,).

Una transición (ô) sólo afecta a una cinta (jô).

Secuencia corresponciente a la transición ô:

* Mover la cabeza a la derecha hasta que el componente 2j de la 2k-tupla sea 1.

* Si la transición es uan esceitura, modificar el componente 2jô-1 de la tupla.

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -7-

* Si la transición produce un movimiento a la derecha:

�� Reemplazar el componente 2jô-1 por un .

�� Mover la cabeza a la derecha.

�� Si encuentra un , sustituirlo por la 2k-tupla (,,...,).

�� Reemplazar el componente 2jô-1 por un 1.

* Si la transición produce un movimiento a la izquierda:

�� Reemplazar el componente 2jô-1 por un .

�� Mover la cabeza a la izquierda.

�� Si encuentra un #, mover a la izquierda (terminación anormal).

�� Reemplazar el componente 2jô-1 por un 1.

* Colocar la cabeza en la segunda posición de la cinta (después de buscar a la

izquierda el símbolo #), y pasar al nuevo estado compuesto de M'.

- La máquina M' así construida simula M, y acepta el mismo lenguaje que ella.

Máquinas de Turing no deterministas

- El no determinismo puede consistir en que:

La máquina no se encuentre totalmente definida.

Se ofrezcan alternativas en algunos pares estado-símbolo.

- M(S,Ó,Ã,ð,i,h) donde ð es un subconjunto de ((S-{h})xÃ)x(Sx(Ã∪{L,R})).

- Una máquina de Turing no determinista acepta una cadena w cuando es posible que

llegue al estado de parada después de iniciar sus cálculos con la entrada w.

Teorema 3.2

Para toda máquina de Turing M no determinista existe una máquina determinista D que

acepta el mismo lenguaje que M.

DEMOSTRACIÓN

- Para toda máquina de Turing M no determinista existe una máquina determinista M'

con tres cintas que acepta el mismo lenguaje.

1ª cinta: contiene la cadena de entrada.

2ª cinta: cinta de trabajo. En ella se copia la cinta 1 (desplazada un lugar a la

derecha), marcando el principio de la cinta con # y marcando el final de la

entrada con *. En este cinta se simulan secuencias de transiciones.

3ª cinta: control de las transiciones efectuadas.

- Simulación de M:

1. Copiar la cadena de entrada de 1 a 2 (con los marcadores de inicio y fin).

2. Generar la siguiente secuencia de transiciones en la cinta 3.

3. Simular la secuencia con la cinta 2.

4. Si se llega al estado de parada de M, detenerse. Si no, borrar la cinta 2 y volver

al paso 1.

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -8-

LENGUAJES ACEPTADOS POR MÁQUINAS DE TURING

- Gramáticas estructuradas por frases:

Parte izquierda de las reglas: combinación de símbolos terminales y no

terminales, con al menos un no terminal.

Parte derecha de las reglas: combinación de símbolos terminales y no terminales

de cualquier longitud (incluso 0).

- Las máquinas de Turing aceptan lenguajes estructurados por frases.

- Configuración de una máquina de Turing:

Contenido de la cinta: entre corchetes.

A la izquierda del símbolo actual se incluye el estado.

- Aceptación: secuencia de configuraciones de la máquina que empieza con [iw] y

termina con [hY].

Teorema 3.3

Todo lenguaje aceptado por una máquina de Turing es un lenguaje estructurado por

frases.

DEMOSTRACIÓN

La gramática será (V,Ó,S,R) donde

V = {S,[,],,Y} ∪ Ã

• Ó = alfabeto de M.

S: axioma.

R:

S [hY]

] → ∆∆]

ä(p.x) = (q,y) produce la regla qy px

ä(p,x) = (q,R) produce la regla xq px

ä(p,x) = (q,L) produce las reglas qyx ypx y∈Ã

[i∆ → ë

∆∆] → ∆]

] → ë

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -9-

Teorema 3.4

Todo lenguaje estructurado por frases es aceptado por una máquina de Turing.

DEMOSTRACIÓN

Para cada gramática G existe una máquina de Turing no determinista M de 2 cintas que

aceptas el lenguaje generado por G.

Construcción de la máquina:

1. Se copia la cadena de entrada en la primera cinta.

2. Se escribe S (símbolo inicial) en la cinta 2.

3. Se aplican las reglas de reescritura de forma no determinista a la cadena de la

cinta 2.

4. Si la cinta 2 contiene sólo símbolos terminales, se compara con la cadena de la

cinta 1. Si son iguales, el proceso ha terminado. Si no, provocar una terminación

anormal.

Teorema 3.5

Dado un alfabeto Ó existe al menos un lenguaje L definido sobre Ó que no es un

lenguaje estructurado por frases.

Sistemas de codificación de máquinas de Turing

- Cada estado se representa como una cadena de ceros.

i = 0

h = 00

Los demás: a partir de 000 en adelante.

- Cada símbolo de Ó, así como L y R, se representan como cadenas de ceros.

L = 0

R = 00

Símbolos de Ó: a partir de 000 en adelante.

Espacio en blanco: cadena vacía.

- Cada transición se puede representar como un conjunto de cadenas de ceros separadas

cada una por un único 1.

- El conjunto de transiciones de la máquina se representa como la secuencia de cadenas

de ceros y unos de todas sus transiciones, poniendo un 1 al principio del todo y un 1 al

final, y un solo 1 para separar dos transiciones consecutivas.

Teoría de Autómatas I

Máquinas de Turing y lenguajes estructurados por frases -10-

Máquinas de Turing universales

- Son máquinas de Turing programables que pueden simular a cualquier otra máquina

de Turing.

Programa: máquina de Turing simulada codificada + cinta de entrada (con un 1

al principio y un 1 al final).

- Constan de 3 cintas:

1ª cinta: programa + cadena de entrada.

* Contendrá la salida de la máquina.

2ª cinta: área de trabajo (manipulación de datos).

3ª cinta: estado actual de la máquina simulada.

- La máquina universal:

Copia la cadena de entrada de la cinta 1 a la cinta 2.

Graba el código del estado inicial en la cinta 3.

Busca una transición aplicable en la máquina codificada de la cinta 1. Cuando la

encuentra:

* Realiza la transición en la cinta 2.

* Escribe el nuevo estado en la cinta 3.

La máquina universal continúa con este proceso hasta que llega al estado de

parada de la máquina simulada. Entonces copia la cinta 2 en la cinta 1, coloca la

cabeza de la cinta 1 donde se encontraba la de la cinta 2 y se detiene.

Lenguajes aceptables y decidibles

- Lenguaje decidible: es aquel lenguaje L para el cual existe una máquina de Turing que

puede aceptar cualquier cadena wL y rechazar cualquier cadena wL.

- Lenguaje aceptable: es aquel lenguaje L para el cual no existe ninguna máquina de

Turing que puede aceptar cualquier cadena wL y rechazar cualquier cadena wL.

- Lenguajes recursivamente enumerables: lenguajes estructurados por frases.

- Lenguajes recursivos: lenguajes decidibles por una máquina de Turing.

El problema de la parada

- Máquina autoterminante: máquina con un alfabeto {0,1,} que se detiene cuando se le

mete como entrada una cadena que es ella misma codificada.

- Existen máquinas de Turing para las que no es posible decidir si son autoterminantes o

no: es decir, no puede saberse con certeza si se detienen no puede saberse con certeza

si una máquina de Turing se va a detener ante una cadena de entrada EL

PROBLEMA DE PARADA NO ES DECIDIBLE.

 

Propiedades de cerradura de funciones computables

En la sección anterior introdujimos a las funciones computables como aquellas que son calculables por programas-while . En esta sección presentaremos algunas propiedades de cerradura de las funciones computables, vale decir, presentaremos algunos esquemas de composición de funciones tales que actuando sobre funciones computables dan, también, funciones computables. Veremos también que, aunque la clase de funciones computables es muy grande, es numerable. Esto, con un simple argumento de cardinalidad de conjuntos, implica que hay una gran cantidad de funciones de los naturales en los naturales que no son computables.


Si A y B son dos conjuntos, escribiremos


para denotar a las funciones con dominio en A y contradominio en B.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Programas y funciones computables

Como ya comentamos en el cap´ıtulo anterior, para abordar cuestiones acerca de la computabilidad

necesitamos elegir un modelo de computacion, que nos permita precisar lo

que entendemos por procedimiento efectivo o algoritmo. De esta forma, los algoritmos

estar´an bien definidos y, por tanto, ser´an susceptibles de ser estudiados en Matem´aticas

como cualquier otra teor´ıa. En general, la expresi´on formal de un algoritmo en un modelo

concreto se denomina programa, si el modelo est´a basado en un lenguaje de programaci´on,

o m´aquina, si el modelo es una representaci´on formal orientada a un tipo especial de

procedimiento mec´anico, en el que se hace referencia expl´ıcita a la gesti´on de la memoria

de trabajo donde se almacenan datos.

2.1. El lenguaje de programaci´on GOTO

En esta secci´on introducimos el lenguaje GOTO, que proporciona el modelo de computaci

´on con el que trabajaremos durante el curso. Est´a dise˜nado para manejar n´umeros

naturales. En una primera aproximaci´on podemos decir que este lenguaje consta de:

1. Variables:

(a) Variables de entrada: X ´ X1;X2; :::;Xn; :::

(b) Variables locales: Z ´ Z1;Z2; :::;Zn; :::

(c) Una variable de salida: Y

2. Etiquetas: A ´ A1;B ´ B1;C ´ C1;D ´ D1;E ´ E1;A2;B2;C2;D2;E2; :::

3. Instrucciones: (Con o sin etiquetar)

(a) Incremento: V Ã V + 1

15

I A C C

Dpto. Ccia. Universidad de Sevilla

Cap´ıtulo 2 L´ogica y Computabilidad. 2003–04

(b) Decremento: V Ã V ¡ 1

(c) Condicional: IF V 6= 0 GOTO L

(d) V Ã V

Un programa de GOTO es una sucesi´on finita de instrucciones con o sin etiquetas. Cada

instrucci´on se interpretar´a como una cierta operaci´on b´asica del siguiente modo:

Las instrucciones de un programa se interpretan secuencialmente salvo que

alguna instrucci´on condicional cambie esto. Precisando:

Cada variable usada por el programa almacena un n´umero natural (inicialmente

0, salvo para las variables de entrada).

Las instrucciones act´uan como sigue:

² V Ã V + 1: incrementa en 1 el valor de V .

² V Ã V ¡ 1: resta 1 al valor de V si es distinto de 0, y deja dicho

valor igual si es 0.

² IF V 6= 0 GOTO L: Si V 6= 0 se ejecuta la primera instrucci´on

etiquetada por L (si no existe tal instrucci´on, el programa para); si

V 6= 0, se ejecuta la siguiente instrucci´on.

² V Ã V : No tiene ning´un efecto.

Un programa permite calcular una funci´on dando a las variables de entrada, X1; :::;Xk

unos valores iniciales n1; :::; nk y ejecutando el programa. Si se para (porque no hay pr´oxima

instrucci´on o una instrucci´on condicional nos env´ıa a una etiqueta que no aparece en

el programa etiquetando una instrucci´on) el valor de la funci´on es el valor de la variable

de salida Y .

2.2. Ejemplos

Veamos unos ejemplos de programas en este lenguaje, junto a las funciones que calculan:

Ejemplo 1: Sea P el programa

[A] X Ã X ¡ 1

Y Ã Y + 1

IF X 6= 0 GOTO A

Dpto. Ccia. Universidad de Sevilla 16

L´ogica y Computabilidad. 2003–04 Cap´ıtulo 2

Entonces P(n) = 8<:

1 si n = 0,

n si n 6= 0

; es decir, este programa copia el valor de X en Y , si el

valor no es 0.

Ejemplo 2: Veamos ahora un programa que calcula la funci´on identidad sobre N, es decir

P(n) = n

IF X 6= 0 GOTO B

Z Ã Z + 1

IF Z 6= 0 GOTO E

[B] X Ã X ¡ 1

Y Ã Y + 1

IF X 6= 0 GOTO B

En este programa se ha utilizado un bloque de instrucciones del tipo

Z Ã Z + 1

IF Z 6= 0 GOTO L

cuya ejecuci´on es equivalente a ir incondicionalmente a la etiqueta L; para simplificar

la escritura de los programas, este bloque lo abreviaremos como GOTO L. Pero debe

resaltarse que no hemos a˜nadido ninguna instrucci´on nueva al lenguaje, sino que es una

simple abreviatura de un par de l´ıneas a las que sustituye, es lo que llamamos una macro.

M´as adelante comentaremos c´omo se pueden introducir estas macros en los programas, por

ahora todo lo que necesitamos para poder sustituir una macro por su valor real es utilizar

en ella variables de trabajo que no ocurran en ninguna otra instrucci´on del programa en el

que se encuentre. As´ı, si en un programa ya se utilizara la variable Z, bastar´ıa considerar

un bloque GOTO L del tipo:

Zk à Zk + 1

IF Zk 6= 0 GOTO L

donde la variable Zk no se est´a utilizando.

Ejemplo 3: Damos a continuaci´on un conjunto de l´ıneas en el lenguaje GOTO que nos

permite asignar a una variable el valor nulo. Si V es la variable que queremos anular,

entonces

[A] V Ã V ¡ 1

IF V 6= 0 GOTO A

17 Dpto. Ccia. Universidad de Sevilla

Cap´ıtulo 2 L´ogica y Computabilidad. 2003–04

es un bloque que, insertado convenientemente en un programa (es decir, sustituyendo V

por la variable que queremos anular, y A por una etiqueta que no se est´e utilizando en

dicho programa), produce el efecto de anular la variable. Este bloque de instrucciones lo

abreviaremos por

V Ã 0

Ejemplo 4: El programa dado en el ejemplo 2, en principio, podr´ıa ser interpretado por

una asignaci´on de una variable en otra. Sin embargo, este programa destruye el valor de

la variable X, y por tanto su acci´on no ser´ıa la deseada de asignar solamente el valor de

X al de Y . Para obtener un programa que realice la asignaci´on, seguiremos dos pasos,

uno primero en que el valor de X se copia en dos variables, Y y Z, y se pierde el de X, y

un segundo paso en el que se copia el valor de Z en X, perdi´endose el de Z; el resultado

final es que X mantiene su valor, e Y (la variable de salida) toma el valor de X.

[A] IF X 6= 0 GOTO B

GOTO C

[B] X Ã X ¡ 1

Y Ã Y + 1

Z Ã Z + 1

GOTO A

[C] IF Z 6= 0 GOTO D

GOTO E

[D] Z Ã Z ¡ 1

X Ã X + 1

GOTO C

De esta forma, podemos hablar de la asignaci´on: V Ã V 0, cuyo bloque correspondiente

ser´ıa el programa anterior sustituyendo X por V 0, Y por V y teniendo cuidado con las

variables auxiliares y las etiquetas para que no aparezcan en el programa en que usamos

la macro.

Dpto. Ccia. Universidad de Sevilla 18

L´ogica y Computabilidad. 2003–04 Cap´ıtulo 2

Ejemplo 5: La funci´on suma:

Y Ã X1

Z Ã X2

[B] IF Z 6= 0 GOTO A

GOTO E

[A] Z Ã Z ¡ 1

Y Ã Y + 1

GOTO B

Consider´andola como macro, la notaremos como

V Ã V1 + V2

Ejercicio 6: A partir de la funci´on anterior es f´acil definir la funci´on producto como:

Z2 Ã X2

[B] IF Z2 6= 0 GOTO A

GOTO E

[A] Z2 Ã Z2 ¡ 1

Z1 Ã X1 + Y

Y Ã Z1

GOTO B

Al programa anterior, consider´andolo como macro, lo notaremos:

V Ã V1 ¢ V2

Como ejemplo, veamos como quedar´ıa este programa si no hubi´eramos usado la abreviatura

(macro) de la suma. Obs´ervese c´omo ha habido que renombrar las variables y las

etiquetas para que no coincidan con las que ya existen en las restantes l´ıneas del programa:

19 Dpto. Ccia. Universidad de Sevilla

Cap´ıtulo 2 L´ogica y Computabilidad. 2003–04

Z2 Ã X2

[B] IF Z2 6= 0 GOTO A

GOTO E

[A] Z2 Ã Z2 ¡ 1

Z1 Ã X1

Z3 Ã Y

[B2] IF Z3 6= 0 GOTO A2

GOTO E2

[A2] Z3 Ã Z3 ¡ 1

Z1 Ã Z1 + 1

GOTO B2

[E2] Y Ã Z1

GOTO B

Evidentemente, el programa anterior se podr´ıa seguir expandiendo, sustituyendo las asignaciones

por bloques que realicen esa operaci´on (que ya hemos visto), y las ramificaciones

incondicionales por el bloque correspondiente (teniendo cuidado siempre con las variables

y etiquetas que se usen en la expansi´on).

2.3. Sintaxis de GOTO

Demos ahora la definici´on formal del lenguaje GOTO.

Definici´on: El lenguaje GOTO consta de:

1. Un s´ımbolo que denominaremos variable de salida, y que denotaremos por Y , y dos

conjuntos numerables de s´ımbolos:

fX1; :::;Xn; :::g; fZ1; :::;Zn; :::g

que denominaremos, respectivamente, variables de entrada y variables de trabajo o

auxiliares.

2. Un conjunto de s´ımbolos, tambi´en numerable, distinto de los anteriores, y que denominaremos

etiquetas:

fA1;B1;C1;D1;E1;A2; :::;E2; :::g

Dpto. Ccia. Universidad de Sevilla 20

L´ogica y Computabilidad. 2003–04 Cap´ıtulo 2

3. Para cada variable de GOTO, V , las siguientes expresiones son instrucciones:

V Ã V + 1

V Ã V ¡ 1

V Ã V

Si K y L son etiquetas, las siguientes expresiones son instrucciones:

IF V 6= 0 GOTO L

[K] V Ã V + 1

[K] V Ã V ¡ 1

[K] V Ã V

[K] IF V 6= 0 GOTO L

Definici´on: Un programa de GOTO es una sucesi´on finita de instrucciones con o sin

etiquetas. Es decir, un programa, P, es una sucesi´on I1; :::; Ik, donde Ij 2 Ins. A k se le

denomina longitud de P.

Nota:

Como ´unica salvedad, prohibiremos que la ´ultima instrucci´on de P sea la instrucci´on

Y Ã Y , por motivos que veremos en temas posteriores. De hecho, debido a su

interpretaci´on (no tiene efecto), una instrucci´on de este tipo al final de un programa

puede ser eliminada sin alterar el comportamiento de ´este.

Un caso l´ımite de programa es el programa vac´ıo, es decir, el programa sin instrucciones,

que se considera de longitud 0.

Definici´on: Para cada instrucci´on, I, de un programa, P, definimos var(I) como:

var(I) = V si I 2 fV Ã V; V Ã V + 1; V Ã V ¡ 1; IF V 6= 0 GOTO Lg

El conjunto de variables del programa P = I1; :::; Ik es:

var(P) = fvar(Ij) : j = 1; :::; kg

Definici´on: Dado un programa, P, de GOTO, un estado de P es un conjunto finito, ¾,

de pares ordenados, ¾ µ V ar £N, tal que para cada variable V 2 var(P) existe un ´unico

par (V;m) 2 ¾.

21 Dpto. Ccia. Universidad de Sevilla

Cap´ıtulo 2 L´ogica y Computabilidad. 2003–04

Esencialmente, ¾ se puede ver como una funci´on ¾ : V ar ¡ ¡! N, con var(P) µ dom(¾).

Como es habitual cuando tratamos con funciones, denotaremos por ¾(V ) al ´unico n´umero

natural tal que (V; ¾(V )) 2 ¾, y diremos que es el valor de V en ¾.

Una forma de representar habitualmente los estados de un programa es como un conjunto

finito de ecuaciones de la forma V = m.

Ejemplo: Si P es el programa del ejemplo 2, entonces fX = 5; Y = 7; Z = 3g es un

estado de P (aunque nunca se llegue a alcanzar), fX = 5; Y = 3; Z = 3g es otro estado;

sin embargo, fX = 5; Z = 3g y fX = 5; X = 3; Z = 2; Y = 0g no son estados de P.

Definici´on: Dado un programa, P, de longitud n, una descripci´on instant´anea de P es

un par (i; ¾), donde ¾ es un estado de P, y 1 · i · n + 1.

Si i = n + 1 diremos que (i; ¾) es terminal.

Si V 2 var(P), el valor de V en la descripci´on instant´anea s = (i; ¾) es ¾(V ), y se denota

por s(V ).

Definici´on: Sea P = I1; :::; In un programa en GOTO. Dada un descripci´on instant´anea

no terminal, s = (i; ¾), definimos el sucesor de s como la descripci´on instant´anea (j; ¿ )

dada como:

Caso 1: Si Ii es V Ã V , entonces j = i + 1, y ¿ = ¾.

Caso 2: Si Ii es V Ã V + 1 entonces j = i + 1 y ¿ (W) = 8<:

¾(V ) + 1 si W = V

¾(W) si W 6= V

Caso 3: Si Ii es V Ã V ¡1, entonces j = i+1 y ¿ (W) = 8>><>>:

¾(W) si W 6= V

0 si ¾(V ) = 0

¾(V ) ¡ 1 si ¾(V ) 6= 0

.

Caso 4: Si Ii es IF V 6= 0 GOTO L, entonces ¿ = ¾ y

² Si ¾(V ) = 0 entonces j = i + 1.

² Si ¾(V ) 6= 0 y existe una instrucci´on de P con la etiqueta L, entonces

j = m´ınfi : Ii tiene L como etiquetag

² En otro caso j = n + 1.

Para instrucciones etiquetadas la definici´on es la misma.

Dpto. Ccia. Universidad de Sevilla 22

L´ogica y Computabilidad. 2003–04 Cap´ıtulo 2

Definici´on: Una computaci´on de un programa P es una sucesi´on finita s1; :::; sk de descripciones

instant´aneas tal que:

1. Para cada i = 1; :::; k ¡ 1, si+1 es el sucesor de si.

2. sk es una descripci´on instant´anea terminal

3. s1 = (1; ¾), donde ¾ es un estado de P.

Ejemplo: Para el ejemplo 2 visto anteriormente, si tomamos s1 = (1; fX = 3; Y =

0; Z = 0g), la computaci´on que se obtiene es:

IF X 6= 0 GOTO B

Z Ã Z + 1

IF Z 6= 0 GOTO E

[B] X Ã X ¡ 1

Y Ã Y + 1

IF X 6= 0 GOTO B

s1 = (1; fX = 3; Y = 0; Z = 0g)

s2 = (4; fX = 3; Y = 0; Z = 0g)

s3 = (5; fX = 2; Y = 0; Z = 0g)

s4 = (6; fX = 2; Y = 1; Z = 0g)

s5 = (7; fX = 2; Y = 1; Z = 0g)

s6 = (4; fX = 2; Y = 1; Z = 0g)

s7 = (5; fX = 1; Y = 1; Z = 0g)

s8 = (6; fX = 1; Y = 2; Z = 0g)

s9 = (7; fX = 1; Y = 2; Z = 0g)

s10 = (4; fX = 1; Y = 2; Z = 0g)

s11 = (5; fX = 0; Y = 2; Z = 0g)

s12 = (6; fX = 0; Y = 3; Z = 0g)

s13 = (7; fX = 0; Y = 3; Z = 0g)

s14 = (8; fX = 0; Y = 3; Z = 0g)

Definici´on: Dado un programa P, y k ¸ 1, P define una funci´on Ã(k)

P : Nk¡ ¡! N como

sigue:

Dado (n1; :::; nk) 2 Nk, sea ¾ el estado de P definido por:

¾(Xi) = ni; 1 · i · k.

¾(Y ) = 0.

¾(V ) = 0; 8 V 2 var(P); V 6= Xi (i = 1; :::; k).

Sea s1 = (1; ¾). Distinguimos dos casos:

Caso 1: Si existe una computaci´on s1; :::; sr de P, entonces Ã(k)

P (n1; :::; nk) #

y Ã(k)

P (n1; :::; nk) = sr(Y ).

23 Dpto. Ccia. Universidad de Sevilla

Cap´ıtulo 2 L´ogica y Computabilidad. 2003–04

Caso 2: No existe una computaci´on de P cuya descripci´on instant´anea

inicial sea si. Entonces Ã(k)

P (n1; :::; nk) ".

Ã(k)

P es la funci´on k-aria calculada por el programa P.

Definici´on: Diremos que una funci´on f : Nk¡ ¡! N es GOTO-computable si existe un

programa P de GOTO tal que Ã(k)

P = f, es decir, 8~x 2 Nk; f(~x) ' Ã(k)

P (~x)

2.4. Macros

Sea P un programa de GOTO que calcula una funci´on f : Nk¡ ¡! N. Podemos

suponer que var(P) = fY;X1; :::;Xn;Z1; :::;Zkg y que todas las etiquetas que aparecen

en P son E;A1; :::;Ar. Cumpli´endose adem´as que para cada instrucci´on de la forma

IF V 6= 0 GOTO Ai existe otra instrucci´on en P etiquetada por Ai. (En caso de que

P no verificase estas instrucciones podemos conseguir otro programa P0 a partir de ´el

sustituyendo convenientemente las etiquetas que aparecen en P y trabajar´ıamos con este

nuevo programa P0, que calcula la misma funci´on).

Escribiremos este programa como P = P(Y ;X1; :::;Xn;Z1; :::;Zk;E;A1; :::;Ar), para cada

m sea

Qm = P(Zm;Zm+1; :::;Zm+n;Zm+n+1; :::;Zm+n+k;Em;Am+1; :::;Am+r)

el programa obtenido sustituyendo convenientemente variables y etiquetas.

Ahora podemos definir el siguiente procedimiento para la expansi´on de la macro:

W Ã f(V1; :::; Vn)

(donde W; V1; :::; Vn son variables distintas entre s´ı).

Cuando aparece la macro anterior en un programa, deber´a sustituirse por:

Zm à 0

Zm+1 Ã V1

...

Zm+n à Vn

Zm+n+1 Ã 0

...

Zm+n+k à 0

Qm

[Em] W Ã Zm

Dpto. Ccia. Universidad de Sevilla 24

L´ogica y Computabilidad. 2003–04 Cap´ıtulo 2

Siendo m 2 N tal que no existe j ¸ m tal que Xj o Zj est´e entre las variables del programa

en que estamos realizando la expansi´on de la macro, ni Aj entre las etiquetas.

Notas:

La expansi´on anterior evidentemente no es v´alida para el caso en que la macro sea

la de asignaci´on, en cuyo caso habr´a que usar la vista en el ejemplo 4, teniendo

presente las observaciones hechas con respecto al uso de las etiquetas y variables

auxiliares.

La expansi´on de macros debe llevarse a cabo de modo que cada vez s´olo se realice

sobre una macro.

Las variables de la macro W Ã f(V1; :::; Vn) son distintas entre s´ı. Es peligroso

identificar variables.

Por ejemplo, el siguiente programa, que usa la macro de asignaci´on, calcula la funci´on

f(x) = 2x + 1, junto a ´el, damos su expansi´on:

Z Ã X

Y Ã Y + 1

[A1] IF Z 6= 0 GOTO A2

GOTO E

[A2] Y Ã Y + 1

Y Ã Y + 1

Z Ã Z ¡ 1

GOTO A1

[A3] IF X 6= 0 GOTO B1

GOTO C1

[B1] X Ã X ¡ 1

Z Ã Z + 1

Z2 Ã Z2 + 1

GOTO A3

[C1] IF Z2 6= 0 GOTO D1

GOTO E2

[D1] Z2 Ã Z2 ¡ 1

X Ã X + 1

GOTO C1

[E2] Y Ã Y + 1

[A1] IF Z 6= 0 GOTO A2

GOTO E

[A2] Y Ã Y + 1

Y Ã Y + 1

Z Ã Z ¡ 1

GOTO A1

25 Dpto. Ccia. Universidad de Sevilla

Cap´ıtulo 2 L´ogica y Computabilidad. 2003–04

Nota: Si p(x1; :::; xn) es un predicado GOTO-computable podemos considerar la macro:

IF p(V1; :::; Vn) GOTO L como

W Ã p(V1; :::; Vn)

IF W 6= 0 GOTO L

Dpto. Ccia. Universidad de Sevilla 26

 

VARIANTES DE UNA DE MÁQUINAS DE TURING

Presentaremos algunas variantes de las máquinas de Turing y veremos que son equivalentes. Mostraremos las equivalencias entre las diversas modificaciones de las máquinas de Turing de manera más bien coloquial. Anque se puede presentar demostraciones rigurosas en base a descripciones instantáneas, aquí las omitiremos con la certeza de que el lector podrá construirlas a partir de las indicaciones que presentamos. denotará a la clase de máquinas de Turing tal como las hemos definido. Diremos que dos clases de máquinas y son equivalentes si toda máquina en una clase es simulada por una máquina en la otra, es decir,

  • y

donde c y d son funciones apropiadas de conversión de palabras de un alfabeto a otro, considerando los alfabetos de ambas máquinas, que cumplen además . Máquinas con cintas semi-infinitas, : Estas son máquinas de Turing donde las casillas de la cinta se ponen en correspondencia con mas no con , es decir, la cinta de cada máquina de esta clase tiene una casilla inicial a la izquierda, digamos c0, y se prolonga indefinidamente a la derecha.

Proposición 6.1   y son equivalentes.

En efecto, por un lado, tenemos que toda máquina es en sí del tipo . Recíprocamente, enumeremos las casillas de la cinta semi-infinita C como Dada una máquina M del tipo enumeremos a las casillas de la cinta de M como Pongamos un símbolo especial S en c0 e identifiquemos al sector ``negativo'' de la cinta de M con las casillas impares de C y al ``no-negativo'' de M con las casillas pares de C:


Observamos que el movimiento hacia una casilla contigua en la cinta de M se traduce a dos movimientos contiguos en C. Cada vez que se ``atraviesa'' S en C se cambia de sentido: Un movimiento a la derecha en M corresponde a dos hacia la izquierda en C y viceversa. Hechas estas observaciones, de manera directa se puede simular a M usando C. Máquinas con cintas de varias pistas, : Estas son máquinas de Turing cuyas cintas tienen varias ``pistas''. Pueden verse también como máquinas de varias cintas con movimientos ``sincronizados'': Movimiento que se hace en una cinta, se hace en todas.

Proposición 6.2   y son equivalentes.

En efecto, por un lado, tenemos que toda máquina es en sí del tipo . Recíprocamente, dada una máquina Mk del tipo con k pistas, la podemos simular con una máquina M del tipo de cualquiera de las dos maneras alternativas:

1.

Si A es el alfabeto de Mk, entonces en cada momento el funcionamiento de Mk depende de la lista de k símbolos que aparece en la casilla actual, consistente de k casillas, una por cada pista. Esto define a una máquina del del tipo sobre el alfabeto Ak que es una potencia cartesiana del original.

2.

Consideremos una cinta de una sola pista en donde sus casillas se agrupan en bloques de k casillas. La posición j-ésima de la i-ésima pista en la cinta de Mk corresponde a la posición -ésima de la nueva cinta. En esta nueva, casillas contiguas en lamisma pista de Mk distanciarán de k casillas. El mecanismo de funcionamiento se modifica para que cada movimiento de Mk obligue a revisar un bloque de k casillas y haga la modificación correspondiente, trabajando siempre en bloques.

Máquinas con cintas de varias cintas, : Estas son máquinas de Turing con varias cintas con movimientos ``independientes''.

Proposición 6.3   y son equivalentes.

Demostraremos que y son equivalentes. En efecto, por un lado, tenemos que toda máquina es en sí del tipo . Recíprocamente, dada una máquina del tipo con k pistas, la podemos simular con una máquina del tipo , con 2k pistas como sigue: Cada cinta Cj da origen a dos pistas Pj0,Pj1. La pista Pj1 tiene el mismo contenido que la cinta Cj. La pista Pj0 está en blanco salvo en la posición donde se encuentra la j-ésima cabeza lectora de , en la cual hay una marca `` '' para marcar que ésa es la casilla escudriñada en la j-ésima cinta. Con esto, la máquina se construye de manera inmediata. Máquinas con dos símbolos, : Estas son máquinas de Turing sobre el alfabeto (0+1).

Proposición 6.4   y son equivalentes.

En efecto, por un lado, tenemos que toda máquina es en sí del tipo . Recíprocamente, dada una máquina M del tipo sobre un alfabeto con m símbolos, sea . Cada símbolo en el alfabeto puede codificarse mediante una cadena de k bits. Por tanto M puede verse como una m''aquina de k pistas. De acuerdo con la segunda construcción de la máquina del tipo simuladora de una máquina del tipo , obtenemos una máquina del tipo que simula a M.



 

GREGORIO DAVID DOMINGUEZ JASSO
ING SISTEMAS COMPUTACIONALES
404 B
TEORIA DE LA COMPUTACION
UNIDADES 3-4-5

Enter supporting content here