Anda di halaman 1dari 6

Mas all de los lenguajes estructurados por frases.

Teorema: Existencia de lenguajes que no son estructurados por frases.


Para cada alfabeto existe al menos un lenguaje sobre que no es un lenguaje estructurado por frases. Demostracin: Sea L un lenguaje estructurado por frases del alfabeto . Entonteces existe una maquina de Turing M tal que L(M)=L. Comenzamos nuestra demostracin sealando que existe una M cuyos smbolos de cinta se eligen del conjunto {}. Si M es la maquina de Turing tal que L(M)=L y los smbolos de cinta M incluyen mas que {}, podremos construir otra maquina de Turing M' con smbolos de cinta {}, de modo que L(M') = L(M) = L, de la siguiente manera: Sea x cualquier smbolo (distinto del espacio en blanco), disponga en una lista los smbolos distintos de espacios en blanco de M y represente cada entrada de la lista con una cadena de x de longitud igual a la posicin del smbolo en la lista ( el 1 smbolo se representa con x, el segundo con xx) As, cada uno de los smbolos de la cinta de M que no sea un espacio en blanco, y por consiguiente tambin cada smbolo del alfabeto M', se representa con una cadena de x nica. De esta manera, siempre es posible representar el contenido de la cinta de M por medio de cortas cadenas de x separadas por espacios en blanco ( un espacio en blanco de la cinta M se codificada como 2 espacios en blanco consecutivos). Ahora construya M' para que opere de la siguiente forma: 1. Traduzca su entrada a esta forma codificada. 2. Simule las acciones de M. 3. Se detenga nicamente si M se detiene. As, M' aceptara exactamente las mismas cadenas que acepta M, sin emplear mas que los smbolos de cinta {}. Ahora podemos generar de manera sistemtica una lista de todas las maquinas de Turing con smbolos de cinta {}, generando primero aquellas maquinas con solo dos estados, seguido por las que tienen 3 estados, etc. Por lo tanto existe una cantidad contable de tales maquinas de Turing. Por otra parte, existe una cantidad infinita de cadenas en * y, debido a ello, es incontable el numero de lenguajes que se pueden formar a partir de . Por consiguiente, existen mas lenguajes basados en que maquinas de Turing con smbolos de cinta en {}. As mismo, deben existir lenguajes basados en que no son lenguajes estructurados por frases.

Sistema de codificacin de maquinas de Turing.


Para identificar un lenguaje que no es aceptado por maquinas de Turing (y por lo tanto no es estructurado por frases) necesitaremos un sistema de codificacin con el cual podamos representar las maquinas de Turing con alfabeto y smbolos de cinta {} como cadenas que nicamente contienen ceros y unos.

Dada una maquina M por representar, nuestro sistema de codificacin necesita que acomodemos los estados de M en una lista cuyo primer elemento corresponda al estado inicial y el 2 al estado de parada. Con base en el orden de la lista, podemos hablar del primer estado de M, del segundo estado de M y en general del estado j de M. Estableceremos que el estado j de M se representara con una cadena de ceros de longitud j+2. As , el estado inicial estar representado por 0, el estado de parada por 00 y el siguiente (si existe) por 000. Luego, representaremos los smbolos R y L, as como los smbolos en (los smbolos de cinta de M distintos del espacio en blanco) como cadenas de ceros. Esto se hace acomodando en una lista los smbolos de y representando L con 0, R con 00, el primer smbolo de la lista con 000, el segundo smbolo con 0000 y en general el smbolo j con una cadena de ceros de longitud j+2. Si ahora establecemos que el smbolo en blanco se representara con la cadena vaca, obtenemos un sistema en el cual podemos representar los smbolos L y R, los estados de M y los smbolos de la cinta de M por medio de cadenas de ceros. De esta manera, es posible representar toda la transicin como cuatro cadenas de cero separados por unos. Ejemplos: (, x) = (h, R) 01000100100 Donde x es el smbolo representado por 000 y h es el estado de parada. (, ) = (h, ) 011001 Donde h es el estado de parada. Recordamos que un espacio es la cadena vaca. Observe que una lista de todas las transiciones posibles para una maquina de Truing con smbolos de cinta {} constituye una descripcin completa de la maquina. Por lo tanto, cualquier maquina de este tipo se puede representar como una lista de transiciones codificada. Adoptaremos la regla convencional de aadir un 1 para separar las transiciones de la lista. Ejemplo:

/x
x/R

(, ) = (h, x) y (, x) = (h, R)

011001000 y 01000100100

10110010001010001001001

Un lenguaje no estructurado por frases.


Ahora sabemos que a cada maquina de Turing, con alfabeto y smbolos de cinta {}, la podemos representar como una cadena de ceros y unos, la cual puede interpretarse como un entero no negativo escrito en binario. Es mas, si contramos en binario llegaramos en algn momento al patrn que representa una maquina de Turing especifica cualquiera con smbolos de cinta {}. Por supuesto, las representaciones binarias de muchos enteros no negativos no corresponden a representaciones de maquinas validas. Para cada uno de estos enteros lo asociaremos con la siguiente maquina de Turing:

As, tenemos una funcin sobreyectiva de N a las maquinas de Turing con alfabeto y smbolos de cinta {}. Empleamos la notacin Mi para representar la maquina que esta funcin relaciona con el entero i. Con base en esta funcin podemos construir otra, esta vez de * sobre la coleccin de maquinas de Turing con alfabeto y smbolos de cinta {}. Basta con asociar una cadena w de * con la maquina M|w|, donde |w| representa la longitud de w. A fin de hacer mas sencilla esta notacin, utilizaremos Mw para representar la maquina asociada a w por medio de esta funcin. Observe que los smbolos de w tambin se encuentran en el alfabeto de Mw, por lo que tiene sentido aplicar Mw a la cadena de entrada w. Definimos el lenguaje L0 ={w / Mw no acepta w} de *; una cadena de w de * se halla en L0 si y solo si esta no es aceptada por su maquina Mw correspondiente. Ahora nuestra tarea es mostrar que L0 no es aceptado por maquinas de Turing. Para esto, mostramos que se llega a una contradiccin si se supone lo contrario: Si L0 fuera aceptado por alguna maquina de Turing podemos suponer que su alfabeto es y su conjunto de cinta es {}. As mismo, L0 debe ser aceptado por Mw0 para alguna cadena w0 *. Por lo tanto L0 = L(Mw0) Ahora nos preguntamos si la cadena w0 existe o no en L(Mw0) (tiene que estar o no estar). Con base en la definicin de L0, sabemos que w0 L(Mw0) w0 L0 w0 L(Mw0) w0 L0 Sin embargo como L0 = L(Mw0), ambos enunciados son contradictorios. ABSURDO

Maquina de Turing Universal.


Estas maquinas no son mas que una maquina de Turing programable que dependiendo de su programa puede simular cualquier otra maquina de Turing. Un programa para una maquina de Turing universal no es mas que una versin codificada de una maquina de Turing que lleva a cabo la tarea que se desea que ejecute la maquina universal. Suponga que queremos programar una maquina de Turing universal: 1. Diseamos una maquina de Turing tradicional que realizara la tarea, luego codificamos como cadenas de ceros y unos. Esta cadena sera el programa. 2. Codificamos los datos que se usaran como entrada para los clculos deseados. Para esto recordamos que a cada smbolo distinto del espacio en blanco, se le asignara un cdigo de dos o mas ceros. En esta secuencia separamos con un 1 los cdigos adyacentes y encerramos con un 1 en cada extremo. Obsrvese que la cadena vaca estara representada por 11, una secuencia vaca de cdigos. 3. Colocamos estos cdigos en la cinta de entrada de la maquina de la siguiente manera: i. La celda del extremo izquierdo permanece en blanco. ii. La versin codificada de la maquina que se simular. iii. La cadena de entrada codificada. 4. Una vez que esta informacin se ha colocado en la cinta de la maquina universal, ubicamos la cabeza de la maquina sobre la celda del extremo izquierdo de la cinta y ponemos en marcha la maquina a partir de su estado inicial. Partiendo de esta configuracin, la maquina de Turing universal extrae y simula las transiciones que encuentra en la primera porcin de la cinta conforme manipula la cadena existente en la segunda porcin de la cinta. Para ser mas precisos, podramos visualizar una maquina de Turing universal como una maquina de 3 cintas: 1. Para almacenar el programa de entrada y los datos, as como para contener cualquier salida. 2. Area de trabajo, en la cual se manipulan los datos. 3. Para contener una representacin del estado actual de la maquina simulada. Esta representacin de una maquina de Turing universal se ha hecho en el contexto de una maquina de tres cintas, pero como sabemos que es posible simular cualquier maquina de Turing de 3 cintas con una maquina de Turing que solo tenga una cinta. Consideramos que una maquina de Turing universal es una maquina de una cinta denotada por Tw. Las principales funciones de esta maquina compuesta son: 1. i. Encuentra el inicio de la cadena de la entrada codificada. ii. Copia esta cadena en la cinta 2. iii. Coloca en la cinta 3 el cdigo del estado inicial. 2. i. Prosigue con la bsqueda de transiciones hasta que encuentra una aplicable. ii. La simula en la cinta 2. iii. Actualiza el cdigo de estado en la cinta 3, para reflejar el nuevo estado. 3. Si en el paso 2.iii. el estado es el de parada: i. Borra la cinta 1. ii. Copia el contenido de la cinta 2 en la 1. iii. Coloca la cabeza de la cinta 1 en el lugar donde se encontraba la cabeza de la cinta 2 al llegar al estado de parada y se detiene.

Comparacin entre lenguajes aceptables y decidibles.


Nuestro siguiente objetivo es mostrar que el complemento de L0, el conjunto L1={w/ Mw acepta w}, es aceptado por maquinas de Turing. Para esto comenzaremos por construir una maquina de Turing Mpre que procese una cadena de entrada w * de la siguiente manera: 1. Genera una cadena de ceros y unos que representa a la maquina Mw (se trata de un proceso bastante directo, ya que la representacin deseada para Mw es el cdigo de la maquina para los nmeros binarios que no representan a ninguna maquina de Turing o simplemente la representacin binaria de la longitud de w). 2. Coloca la cadena obtenida en la cinta de la maquina, seguida por la versin codificada de w. Ahora si construimos una maquina que simula las acciones de Mpre y luego la de Tu, tendremos una maquina de Turing que dada una cadena de entrada w aplicar Mw a w y se detendra si y solo si se Mw acepta w. As, esta maquina aceptara precisamente el lenguaje L1, el cual es el complemento de L0. Hemos confirmado entonces que no es obligatorio que el complemento de un lenguaje aceptado por maquinas de Turing sea tambin aceptado por maquinas de Turing: L1 lo es, no as su complemento L0. Esta falta de simetra no es un simple hecho curioso, sino que tiene repercusiones considerables. En nuestro caso, quiere decir que la capacidad de aceptar un lenguaje no es simtrica con la capacidad de rechazar su complemento. En otras palabras, existen casos donde se puede construir una maquina de Turing que identifique las cadenas de un lenguaje, pero no se puede construir una maquina de Turing que identifique las cadenas que no estn en el lenguaje (ya que para rechazarlos debe identificarlas). Los lenguajes decidibles por las maquinas de Turing son aquellos para los cuales se pueden construir una maquina de Turing que respondan afirmativamente para todas las cadenas que estn en L y negativamente para todas las dems (empleando trminos menos formales, decimos que la maquina de Turing decide el lenguaje en vez de nicamente aceptarlo). Si solo podemos construir una maquina de Turing que acepte el lenguaje diremos que es lenguajes es aceptable por las maquinas de Turing. Para obtener ejemplos de lenguajes decidibles solo tenemos que volver a los lenguajes independientes del contexto, los cuales son todos decidibles. Por supuesto, existen tambin lenguajes decidibles que no son independientes del contexto, un ejemplo es el lenguaje { xnynzn / n N}.

Anda mungkin juga menyukai