Você está na página 1de 114

LENGUAJES Y AUTOMATAS

DR. RAMON ZATARAIN CABADA

INDICE
1.
2.
3.
4.
5.
6.

INTRODUCCION
GRAMATICAS
AUTOMATAS FINITOS
MAQUINAS DE TURING
GRAMATICAS Y AUTOMATAS
APLICACIONES A LENGUAJES

1. INTRODUCCION
1.1 CONJUNTOS FINITOS E INFINITOS
Los conjuntos
X={1,2,3}
Y={a,b,c,d}
se definen de una manera explcita. Los conjuntos que
contienen un nmero finto muy largo de miembros o un
nmero infinto de miembros se definen de manera implcita.
Ejemplo: El conjunto de todos los cuadrados perfectos es
definido como:
{n | n=m2 para algn nmero natural m}

El conjunto vaco se representa por 0, y es


el conjunto que no tiene miembros, o sea
que
0={}

Una cadena de un conjunto X es una secuencia finta de


elementos de X. Las cadenas son objetos fundamentales
usados en la definicin de lenguajes. El conjunto de elementos
de donde las cadenas son producidas son llamados alfabetos
de el lenguaje. Un alfabeto consiste de un conjunto finto de
objetos no divisibles. El alfabeto de un lenguaje se representa
por
El alfabeto de un lenguaje natural como el espaol consiste
de las palabras de el lenguaje.
Ejemplo: Sea ={a,b,c}. Las siguientes son cadenas de ese
alfabeto: abc, ccb, cab,aaaabbbccc

Comnmente los elementos de un alfabeto se representan


por caracteres nicos como letras (a,b,c) o dgitos (1,2,3).
La cadena que contiene cero elementos es llamada cadena
nula o vaca y se representa por
La concatenacin de dos cadenas u y v, escrita uv, es pegar
las dos cadenas para formar una nueva.
Ejemplo: Sea u=ab , v=ca y w=bb. Entonces
uv=abca
vw=cabb
(uv)w=abcabb
u(vw)=abcabb
El resultado de la concatenacin de u,v y w es independiente
de el orden en que las operaciones son ejecutadas. Matematicamente esta propiedad es conocida como asociatividad.

La longitud o tamao de una cadena w es el nmero de


elementos que contiene la cadena.
Ejemplo: La cadena abcdef tiene una longitud de 6.
Una subcadena u de la cadena v existe si existen las
cadenas x y y de tal forma que v = xuy. Esto quiere decir
Que u ocurre dentro de v.
Un prefijo de v es una subcadena u en donde x es la
cadena vaca en la descomposicin de v. Eso quiere decir
que v=uy. Similarmente, u es un sufijo de v si v=xu.
Ejemplo: ab es un prefijo de la cadena abcdef y ef es un
sufijo de la misma cadena.

1.2 Representacin finta del lenguaje


Un lenguaje consiste de un grupo de cadenas de un alfabeto.
Usualmente ciertas restricciones se aplican a las cadenas de
el lenguaje. Por ejemplo el lenguaje Espaol consiste de
todas las cadenas de palabras que nosotros llamamos oraciones.
No todas las combinaciones de palabras forman oraciones. De
alli que un lenguaje consiste de un subconjunto de el conjunto
de todas las posibles cadenas que se pueden formar de el
alfabeto.
Ejemplo: El lenguaje L de cadenas de el alfabeto {a,b} en
donde cada cadena comienza con una a y tiene longitud par.
Las cadenas aa, ab, aaaa, abbb, abab, abbbaaba forman parte
de ese lenguaje.

El lenguaje anterior se puede definir recursivamente como:


i) Base: aa, ab son miembros de L.
ii) Paso recursivo: Si u es miembro de L, Entonces
uaa, uab, uba, ubb son miembros de L.
iii) Cierre (Closure): Una cadena u es miembro de L solo si puede
ser obtenida de los elementos base por un nmero finto
de aplicaciones del paso recursivo.

Ejemplo: El lenguaje L consiste de cadenas del alfabeto {a,b}


en donde cada ocurrencia de b es inmediatamente precedida
por una a. Por ejemplo, a, abaab estan en L y bb, bab, abb
no estan en L.
i) Base: es miembro de L.
ii) Paso recursivo: Si u es miembro de L, Entonces
ua, uab son miembros de L.
iii) Cierre (Closure): Una cadena u es miembro de L solo si puede
ser obtenida de los elementos base por un nmero finto
de aplicaciones del paso recursivo.
Definiciones recursivas como la anterior son una herramienta
para definir las cadenas de un lenguaje. Sin embargo esta tcnica
no es suficiente para definir lenguajes complejos como los
Lenguajes de Programacin.

Otra tcnica para construr lenguajes es usar operaciones de


conjuntos (sets) para construr, desde conjuntos mas simples
conjuntos complejos de cadenas.
Por ejemplo La concatenacin de los lenguajes X y Y, denotada
XY, es el lenguaje
XY = {uv | u es miembro de X y v es miembro de Y}
La concatenacin de X consigo mismo n veces es denotada
como Xn. X0 es definida como {

Ejemplo: Sea X = {a,b,c} y Y = {abb, ba}. Entonces


XY = {aabb,babb,cabb,aba,bba,cba}
X0 = {
X1 = X = {a,b,c}
X2 = XX = {aa,ab,ac,ba,bb,bc,ca,cb,cc}
X3 = X2X = {aaa,aab,aac,aba,abb,abc,aca,acb,acc,
baa,bab,bac,bba,bbb,bbc,bca,bcb,bcc,
caa,cab,cac,cba,cbb,cbc,cca,ccb,ccc}
Una operacin importante es el Kleene Star, denotada para
un conjunto X como X*, que no es otra cosa que la concateNacin de del mismo lenguaje.

Lo anterior tambin es representado como

X* = U Xi
i=0
Contien todos loas cadenas construdas desde X incluyendo la
cadena nula.
Si no se incluye la cadena vaca entonces tenemos a

X+ = U Xi
i=1
El conjunto de cadenas no nulas construdas desde X.

Ejemplo: El lenguaje L = {a,b}*{bb}{a,b}* consiste de las


cadenas del alfabeto {a,b} que contiene la subcadena bb. La
concatenacin de el conjunto {bb} asegura la presencia de
bb en cualquier cadena en L. Los conjuntos {a,b}* permiten
cualquier nmero de as y bs, en cualquier orden, y que
preceden y siguen la ocurrencia de bb.
Las cadenas bb, abba, ababbbabab, bbaaaa, aaaabb son
ejemplos de cadenas de el lenguaje L.

Ejercicios.
Sea X = {aa,bb} y Y = {b,ab}
Lista las cadenas en el conjunto XY.
Lista las cadenas de el conjunto Y* de longitud tres o menos.
Cuntos cadenas de longitud 6 existen en X* ?
Dar un lenguaje L sobre el alfabeto {a,b} que contenga
todas las cadenas que comienzan con aa y terminan con bb.
Sea L1= {aaa}*, L2= {a,b}{a,b}{a,b}{a,b} y L3= L2*.
Describe las cadenas que estan en los lenguajes L2, L3 y
L1 L3

2. GRAMATICAS
1.1 Introduccin a las Gramticas
Una gramtica es una herramienta o notacin que nos
permite definir un lenguaje por medio de una serie de reglas
que nos dicen como construr cadenas validas (oraciones)
para el lenguaje.
Chomski formaliz el concepto de una gramatica, al hacer
observaciones importantes en la complejidad de una
gramtica que a su vez establece la complejidad de el lenguaje
Como se estableci antes, un lenguaje es un conjunto finto
de cadenas desde un alfabeto. Una gramtica es una forma de
describir al lenguaje.

2.2 Estructuras de las gramticas


Una gramtica G consiste de:
Un alfabeto de smbolos terminales
Un conjunto finto de variables (smbolos no-terminales) V
Un conjunto de reglas de substitucin o producciones P
Un smbolo inicial S
G = (V, P, S)
Una regla de substitucin o produccin est formada por
una parte izquierda y una parte derecha :
Su significado es reemplazar con

La parte izquierda son cadenas desde V , que contienen al


menos una variable desde V: es un miembro de
(V * V (V *
Mientras que el lado derecho son cadenas desde V es
un miembro de
(V *
La gramtica produce cadenas de * al aplicar las producciones e
iniciando con el smbolo inicial hasta que no existan variables.
Cada vez que una produccin o regla es aplicada, una forma de
sentencia (cadenas de variables de V y terminales de es
producida.

El lenguaje generado por la gramtica, L(G), es el conjunto de


cadenas que pueden generarse aplicando las reglas anteriormente
descritas.
Ejemplo: Consideremos la siguiente gramtica
G = (V, P, S)
V= {S, A}
a, m, o, t}
P={ (1) S toAto, (2) A ma, (3) A maA }
Que genera el lenguaje
L(G)= {tomato, tomamato, tomamamato,...}
Usando las siguientes reglas para la cadena tomamato
S(1) toAto(3) tomaAto(2)tomamato

Ejercicios:
Construr una gramtica con alfabeto {a,b,c} para los
Siguientes lenguajes:
{anb2ncm | n,m > 0}
{anbmc 2n+m | n,m>0}
Construr una gramtica con alfabeto {a,b} cuyo lenguaje contiene
Precisamente cadenas con el mismo numero de as y bs.

2.3 Clasificacin de las Gramticas


N. Chomsky en 1959 en su famoso artculo On certain formal
properties of grammars defini cuatro familias de gramticas
(y lenguajes) que forman lo que se llama la jerarqua de
Chomsky. Estas son: gramticas sin restricciones, de contexto
sensitivo, de contexto libre y regulares (tipo 0, 1, 2 y 3).
La restricciones puestas en cada regla aumentan con el nmero
de la gramtica.
Gramticas sin Restriciones.
Son el tipo de gramtica mas generales. Una produccin uv
indica que una ocurrencia de una subcadena u en una cadena
puede ser reemplazada con la cadena v. La nica reestriccin
en una produccin es que el lado izquierdo no sea cadena nula.

Una definicin formal de una gramtica sin restricciones es


la siguiente:
Un cuadruplo (V, P, S) donde V es un conjunto finto de
variables, el alfabeto) es un conjunto de smbolos terminales
(del alfabeto), P es un conjunto de producciones y S es el
smbolo inicial de V. Una produccin de esta clase de gramtica
tiene la forma uv, donde u es miembro de (V + y v es
miembro de (V .
Ejemplo: La gramtica sin restricciones
V= {S, A, C}
a,b,c}
S aAbc |
aAbC |
Cb bC
Cc cc
Con smbolo inicial S genera el lenguaje {ai bi ci | i>=0}.

Gramticas de Contexto Sensitivo


Estas gramticas representan un paso intermedio entre las
gramticas de contexto libre y las gramticas sin restricciones.
Para estas gramticas no existe restriccin alguna en la parte
izquierda de la produccin, pero la longitud de la parte derecha
debe ser al menos la longitud de la parte izquierda.
Una definicin formal de una gramtica de conexto sensitivo es
la siguiente:
Un cuadruplo G= (V, , P, S) donde cada produccin tiene la
forma u v, donde u es un miembro de (V + , v es miembro
de (V + y longitud(u) >= longitud (v). Un lenguaje generado
por una gramtica de contexto sensitivo es llamado lenguaje
de contexto sensitivo (en gramticas sin restricciones el lenguaje
tambin es llamado sin restricciones).

Si eliminamos las producciones de cadena vaca de la anterior


gramtica sin restricciones, tenemos una gramtica de contexto
sensitvo.
S aAbc | abc
A aAbC | abC
que produce un lenguaje similar al ejemplo anterior.
Gramticas de Contexto Libre
La flexibilidad proporcionada por las gramticas de contexto
libre es tal que es la mas usada para definir la sintaxis de los
lenguajes de programacin.
Una definicin formal de una gramtica de conexto sensitivo es
la siguiente:

Es un cuadruplo G= (V, , P, S) donde V es un conjunto finto


de variables, es un conjunto finto de smbolos terminales,
P es un conjunto finto de reglas y S es el smbolo inicial.
Cada produccin tiene la forma uv, donde u es una variable
del conjunto V, y v es un miembro de (V . Esto quiere decir
En la parte izquierda dela produccin viene siempre una variable
(smbolo no terminal) y en la parte derecha pueden venir
cualquier nmero de smbolos terminales y no terminales
incluyendo la cadena nula.
Una gramtica de contexto libre produce un lenguaje tambin de
contexto libre: G L(G).

Ejemplo: La siguiente gramtica genera el lenguaje que consiste


de cadenas con un nmero par positivo de as.
G= (V, , P, S)
V={S,A}
a,b
P: S AA
A AAA | bA | Ab | a
Una derivacin por la izquierda es la siguiente:
SAAbAAbaAbaa
Una derivacin por la derecha
SAAAbAAbaaba

Un rbol de parsing o rbol de derivacin es una representacin


grfica de la derivacin.
Ejemplo: La siguiente figura representa el rbol de parsing
para las cadenas del ejemplo anterior.
S
S

b A

Ejercicios: Construr gramticas de Contexto Libre (GCL)


para los siguientes lenguajes:
1. L(G)= {anbman | n>0, m>0}
2. L(G)= {anbmcmd2n | n>=0, m>0}
La solucin tambin es una gramtica de contexto sensitivo?
Si no, que modificaras de la GCL para hacerla GCS?
3. Sea G una GCL
S abSc | A
A cAd | cd
Escribe una derivacin por la izquierda de ababccddcc
Construye un rbol de parsing para la misma cadena
Usa notacin de conjuntos para definir L(G)

Gramticas Regulares
Estas gramticas constituyen una importante subclase de
las gramticas de contexto libre. Son tambin tiles en la
definicin de lenguajes de programacin.
Una gramtica es regular (GR) si cada regla o produccin
cumple con las siguientes formas:
1. A a
2. A aB
3. A
Donde A, B son miembros de V y a es miembro de
Una GR G genera un lenguaje regular L(G).

Ejemplo
La siguiente es una GCL ( U (ab)+a* )
G: S abSA |
a
una correspondiente gramtica regular sera:
S aB |
B bS | bA
A aA |

Expresiones Regulares
Sea un alfabeto. Una expresin regular para se define
recursivamente como:
i) Base: 0 (el conjunto vaco), y a para cada a que es
miembro de son expresiones regularespara
ii) Paso recursivo: Sea u y v expresiones regulares para
Las expresiones
(u U v)
(uv)
(u*)
son expresiones regulares para
iii) Cierre: u es una expresin regular para solo si puede
ser obtenido de los elementos base por medio de un
nmero infinto de aplicaciones de el paso recursivo.

Debido a que la unin y concatenacin son asociativas,


los parntesis pueden ser omitdos de las expresiones que
consisten de una secuencia de una de esas operaciones. Se
Asigna tambin un orden de precedencia a los operadores.
La operacin Kleene Star tiene el mayor grado de precedencia,
seguido de la concatenacin y la unin.
Por ltimo, podemos decir que las expresiones regulares, al
igual que las gramticas, son una notacin usada para especificar
o definir un lenguaje
Ejemplo: Sea = {a,b}
1. La expresin regular (a|b) denota el lenguaje {a, b}
2. La ER (a|b)(a|b) denota el lenguaje {aa,ab,ba,bb}
3. La ER a* denota el lenguaje {a, aa, aaa,...}
4. La ER (a|b)* denota el lenguaje de todos loas cadenas que
contienen cero o mas instancias de una a o b, esto es,
el conjunto de todas las cadenas de as y bs.

5. La ER a | a*b denota el lenguaje que contiene la cadena a


y las cadenas que consisten de cero o mas as seguido de
una b.
6. La ER (a|b)*bb(a|b)* denota el lenguaje que contiene las
cadenas de as y bs con al menos una subcadena bb.
Ejercicios: sea = {a,b}
Escribir una ER para un lenguaje con cadenas que inician y
terminan con a y contienen al menos una b.
Lo mismo pero par el lenguaje de cadenas que contienen
la subcadena aa y y la subcadena bb.
Lo mismo pero para el lenguaje de cadenas que contienen
la subcadena aa mnimo dos veces (cuidaddo con aaa).
Lo mismo pero para el lenguaje de cadenas que no inician
con la la subcadena aaa.

2.4 Representacin de Gramticas


En las secciones anteriores, se usaron pequeas gramticas
para generar lenguajes tambin pequeos. Esos ejemplos
sirvieron para ilustrar el uso de gramticas para definir lenguajes.
Por otra parte, en el diseo de lenguajes de programacin se
maneja sintxis y alfabetos mas complejas y mas grandes. Esto
Por supuesto, incrementa la complejidad de las reglas para
generar el lenguaje.
Notacin de BNF.
John Backus y Peter Naur inventaron un sistema de reglas para
definir el lenguaje de programacin ALGOL 60. Este sistema
recibi el nombre de Backus-Naur Form o BNF. La sintxis del
Pascal tambin fue definido con este sistema o tcnica, y hoy en
da se usa para definir la gran mayora de los lenguajes de
programacin.

Una especificacin BNF es un conjunto de reglas de produccin,


escritas como:
<Smbolo de V> ::= <expression with symbols de V y S >
Ejemplo: Constantes Numricas en Pascal
<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<entero sin signo> ::= <digito> <entero sin signo> | <digito>
<real sin signo> ::= <entero sin signo> . <entero sin signo> |
<entero sin signo> . <entero sin signo> E <factor de escala>
<entero sin signo> E <factor de escala>
<factor de escala> ::= <entero sin signo> | <signo> <entero sin signo>
<signo> ::= + | <numero sin signo> ::= <entero sin signo> | <real sin signo>
<constante sin signo> ::= <numero sin signo>
<constante> ::= <numero sin signo> | <signo> <numero sin signo>

Diagramas Sintcticos
Es tambin un tipo de notacin para especificar la sintxis de
Un lenguaje. La diferencia con la notacin BNF es que en
esta
se usan lneas y figuras en lugar de nombres.
Diagrama sintctico de un
Smbolo no terminal
Smbolo no terminal
Smbolo terminal

Ejemplo: Diagramas sintcticos para expresiones


aritmticas como a + b - 8
expresin

trmino
trmino

trmino

+
-

factor
factor

*
/

factor
identificador

factor

nmero
(

expresin

3. AUTOMATAS FINITOS
En este captulo estudiaremos un tipo de mquinas abstractas
de computacin en donde la entrada consiste de una cadena de un
determinado alfabeto, y la salida o resultado de la computacin
es la aceptacin o no de la cadena de entrada. El conjunto de
cadenas aceptadas por la mquina es el lenguaje reconocido por
la mquina. De esta forma, asociamos lenguajes y mquinas, los
dos tpicos principales de esta materia.

3.1 Autmatas Fintos Determinsticos (AFD)


Un AFD es un quintuple M = (Q, q0, F), donde Q es
una mquina de estados finta, es el alfabeto, q0 es el
estado inicial, F es el estado(s) final(es) y es una
funcin de Q x a Q llamada la funcin de transicin.
Ejemplo: El siguiente AFD acepta el conjunto de cadenas
que contienen la subcadena bb y donde ={a,b}. Esto
quiere decir que L(M) = (a|b)*bb(a|b)* .
M: Q = {q0, q1, q2 }
a, b}
F = {q2}

(Continuacin)
M: Q = {q0, q1, q2 }
a, b}
F = {q2}
La funcin de transicin es dada en forma tabular y
llamada tabla de transicin.

q0

q0

q1

q1

q0

q2

q2

q2

q2

Para las cadenas abba y abab tenemos las siguientes


operaciones (computaciones) en la tabla:
[q0, abba]
-[q0, bba]
-[q1, ba]
-[q2, a]
-[q2, -[q1,
acepta

[q0, abab]
-[q0, bab]
-[q1, ab]
-[q0, b]
rechazado

La cadena abba es aceptada ya que la computacin se


para (halts) en estado q2.
Una cadena de entrada es aceptada si existe una
computacin que procesa toda la cadena de entrada y
para en un estado final o aceptador.

Diagramas de Estado
El diagrama de estado de un AFD es un grafo dirigido-etiquetado
en el cual los nodos representan los estados de la mquina y los
arcos son obtenidos de la funcin de transicin.
Otra definicin es la siguiente:
El diagrama de estado de un AFD M = (Q, q0, F) es un
grafo etiquetado G definido por las sig. condiciones:
i) Los nodos de G son los elementos de Q.
ii) Las etiquetas sobre los arcos de G son elementos de
iii) q0 es el nodo inicial, representado con >
iv) F es el conjunto de nodos aceptadores; cada nodo acaptador
se representa con

v) Existe un arco desde nodo qi a qj etiquetado a si (qi,a)=qj.


vi) Por cada nodo qi y smbolo a es miembro de existe
exactamente un arco etiquetado a que sale de qi.
Ejemplo: El diagrama de estados para el DFA del
ejemplo anterior:
a,b

a
q0

q1

q2

Ejemplo: El DFA siguiente acepta el lenguaje que no


contiene la subcadena aa y donde ={a,b}.

a,b

b
q0

q1

q2

Ejercicios:
1. Sea M un AFD
M: Q = {q0, q1, q2 }
a, b}
F = {q2}

q0

q0

q1

q1

q2

q1

q2

q2

q0

a) Realizar el diagrama de estados de M.


b) Hacer las computaciones de M que procesan las cadenas
abaa
bbbabb
Bababa
c) Cul de las cadenas anteriores son aceptados por M?
d) Escribir la expresin regular para L(M)

Ejercicios:
2. Construye AFD en forma de diagrama de estados que
acepte el lenguaje descrito:
El conjunto de cadenas para alfabeto {a,b} en
donde la subcadena aa ocurra al menos dos veces.
El conjunto de cadenas para alfabeto {a,b,c} que
comienzan con a, contienen exactamente dos bs y
terminan con cc.
(ab)*ba
(ab)*(ba)*

3.2 Autmatas Fintos No determinsticos (AFN)


La diferencia es el no determinismo de esta clase de
autmatas. Esto se manifiesta en la funcin de transicin
que en los AFD significa moverse de un estado a otro bajo
un smbolo de entrada. En un AFN la funcin de transicin
tambin contempla lo anterior, pero adems contempla
otras dos transiciones: moverse de un estado a varios
estados bajo una sola entrada o smbolo; y moverse de un
estado a otro bajo no entrada o smbolo. Estas tres
transiciones se dan como:
qi

a
qn

qi

qn

a
a

qj

qn

La relacin entre AFD y AFN se sumariza con la siguiente


frase: Cada AFD es AFN. La funcin de transicin de un
AFD especifca exactamente que con una entrada solo se
puede ir a un estado. Mientras en un AFN con una entrada
se puede ir a cero, uno o mas estados. Esto quiere decir que
la familia de AFDs es un subconjunto de los AFN.
Una cadena de entrada para un AFN puede generar
distintas computaciones. En unos casos el automata para
(halt) sin aceptar la cadena, en otros la rechaza o las acepta.

Ejemplo: El AFN M para la cadena ababb con tres


diferentes computaciones.
M: Q = {q0, q1, q2 }
a, b}
F = {q2}

[q0 ,ababb]
-[q0 ,babb]
-[q0 ,abb]
-[q0 ,bb]
-[q0 ,b]
-[q0 , ]

[q0 ,ababb]
-[q0 ,babb]
-[q1 ,abb]

q0

q0

{q0, q1}

q1

q2

q2

[q0 , ababb]
-[q0 , babb]
-[q0 , abb]
-[q0 , bb]
-[q1 , b]
-[q2 , ]

La primera computacin procesa toda la entrada y para


en un estado de rechazar. La segunda computacin,
para (halt) despus de ejecutar tres instrucciones ya
que no existe accin cuando la mquina esta en estado
q1 y leyendo una a. Por ltimo, la tercera computacin
acepta la entrada.
Una cadena de entrada es aceptada si existe una
computacin que procesa toda la cadena de entrada y
para en un estado final o aceptador. Una cadena de
entrada est en el lenguaje de un AFN si existe una
computacin que lo acepte. El lenguaje de un AFN M,
denotado L(M), es el conjunto de cadenas aceptadas
por M.

El diagrama de estados para el AFN del ejemplo anterior es


el siguiente:

a,b

q0

q1

q2

El diagrama aceptado por este ltimo AFN es (a | b)*bb


Es AFN porqu existen dos transiciones de q0 a q0 y de q0 a
q1 ante una misma entrada: b

El siguiente diagrama de estados para un AFN acepta el


lenguaje expresado por (ab)* | a*

q0
a

q1

q2

q3
a

Es AFN porqu existen dos transiciones de q0 a q1 y de q0 a


q3 ante una misma entrada: a

Transiciones Lambda
Las transiciones de estado a estado en AFD y AFN se llevan a
cabo al procesar o leer un smbolo de entrada. Podemos
tambin redefinir a un AFN de tal manera que admita
transiciones de estado a estado sin leer un smbolo de
entrada.
Una transicin de esta forma es llamada transicin lambda.
A este tipo de mquinas se les llama AFN-
Por medio de movimientos lambda se puede construr
mquinas complejas a partir de mquinas mas simples.
La definicin de halting (cuando parar) se extiende para
incluir la posibilidad que una computacin puede continuar
usando transiciones lambda despus de que toda la cadena de
entrada ha sido leda. Tambin se pide, al igual que en los
anteriores autmatas, que termine en un estado final, esto para
finalizar el AFN- con xito.

Ejemplo: Sea M1 y M2 las siguientes mquinas que


aceptan los lenguajes descritos por (a | b)*bb (a | b)*
y (b | ab)* (a | l).
M1

a,b

q1,0

Q1,1

a,b

b
Q1,2

Q2,0

M2
a
b

Q2,1

Podemos construr mquinas compuestas combinando los


doagramas de estado M1 y M2.

a,b

a,b
b

q1,0

Q1,1

b
Q1,2

Q2,0

a
b

Q2,1

El lenguaje del AFN-M es L(M1) U L(M2)


Una computacin en la mquina M comienza siguiendo un
arco lambda a un estado inicial de M1 o M2.

Ejemplo: Un AFN- M que acepta L(M1) L(M2), la


concatenacin de dos lenguajes se construye juntando las
dos mquinas con un arco lambda.
M1

a,b

q1,0

Q1,1

a,b
b
Q1,2

Q2,0

M2
a
b

Q2,1

Una cadena de entrada es aceptada solo si consiste de


una cadena de L(M1) seguido de una cadena de L(M2) .

3.3 Equivalencia de AFN y AFD


Tres clases de autmatas finitos se han estudiado. En esta
seccin demostraremos que los tres tipos de autmatas
aceptan el mismo tipo de lenguajes; mejor dicho, el lenguaje
aceptado por un AFN- es aceptado por un equivalente
AFN y tambin por un equivalente AFD. Demostraremos
como a un AFN- y aun AFN le podemos quitar su no
determinismo mediante la construccin de un AFD
equivalente.


q2

Q3

a
q1

Q4,

Q5

Q6

En la figura anterior las transiciones de el estado q1 ante


entrada a son el conjunto {q2, q3, q5, q6}. Esto debido a
que podemos alcanzar o llegar a esos estados desde el
estado q1 y solo leyendo a. Al estado q4 llegamos
leyendo solo .

La funcin de transicin t de un NFA- es una funcin un


poco diferente a la funcin de transicin de un AFD o un
AFN. En la funcin t, las transiciones ante son vlidas
para moverse de un estado a otro y juntndola con una
entrada del alfabeto.
Ejemplo: Las tablas de transicin siguientes ejemplifican
las funciones de transicin y t para el siguiente AFNdiagrama de estado M. El lenguaje de M es a+c*b*.

b
a

q0

q1

q0

{q0, q1, q2}

q1

{q1}

q2

{q2}

q2
c

q0

{q0, q1, q2}

q1

{q1}

q2

{q1}

{ q1, q2}

{q1}

La funcin de transicin t es usada para construir un


autmata finito determinstico equivalente. El
procedimiento usa el diagrama de estados de el AFNpara construir el diagrama de estados de el equivalente
AFD.
Ejemplo: Construir un AFD equivalente para el siguiente
AFN- .
a
b
a

q0

q1

q2
c

b
a

q0
a

q1

q2
c
Se crean tres nuevos estados
a los cuales se les aplica el
mismo procedimiento para
obtener hacia que estados se
mover. Este procedimiento
termina hasta que no hay no
se genere un nuevo estado

Su correspondiente diagrama de
estados:
t

q0

{q0, q1, q2}

q1

{q1}

q2

{q1}

{ q1, q2}

{q1}

{q1}

{ q1, q2}

{q1}

{ q1, q2}

{q0, q1, q2}

{q0, q1, q2}

{q1}

{ q1, q2}

A partir del diagrama de estados se puede construir el AFD


equivalente.
a

q0

{q0, q1, q2}

q1

{q1}

q2

0
{q1}

{q0}

{q1}

{ q1, q2}

{q1}

{ q1, q2}

{q0, q1, q2}

{q0, q1, q2}

{q1}

{ q1, q2}

{q0, q1, q2}


c
b

b,c

{ q1, q2}

{q1}

c
{q1, q2}
b

a,c
b

a,b,c

{q1}
a

El AFN M acepta el lenguaje a+ b+. Procedemos a


convertirlo a un equivalente AFD.
M:

q0

q1

q2

a
a

M:

{q0}

{q0, q1}

{q1, q2}

a, b

Las mquinas M1 and M2 aceptan a(ba)* and a*


respectivamente.

a
M1:

q1

a
b

q2

M2:

q3

Usando arcos lambda para conectar un nuevo estado inicial a


los estados iniciales de las mquinas originales creamos un
NFA- M que acepta a(ba)* | a*.
q1

M:

q0

a
b
a

q3

q2

La funcin de transicin para M es


t

q0

{q2, q3}

q1

{q2}

q2

{q1}

q3

{q3}

El equivalente AFD obtenido es


a
a

{q0, q1, q3}

{q2, q3}
b

b
{q1}

b
a,b

a
{q2}
b

{q3}

3.4 Propiedades de los Lenguajes aceptados por un


Autmata Finito.
Cada autmata finito con alfabeto acepta un lenguaje
para Podemos probar que la familia de lenguajes
aceptados por un autmata finito consiste precisamente
de los conjuntos o lenguajes regulares para .
Primero demostramos que cada conjunto o lenguaje
regular es aceptado por algn AFN- La demostracin
va de acuerdo a una definicin recursiva. Los lenguajes
o conjuntos regulares se construyen a partir de los
elementos bsicos 0 (conjunto o estado vaco), (cadena
vaca) y conjuntos individuales que contienen elementos
del alfabeto.

Los diagramas de estado para las mquinas que aceptan


dichos conjuntos son:

q1

q0
q0
q0

q1
q1

Conjuntos regulares se construyen de los elementos bsicos


usando unin, concatenacin y operacin Kleene Star. Al
igual que los conjuntos regulares, autmatas fintos mas
complejos se pueden construir a partir de los diagramas
anteriores y que acepten la unin, concatenacin y
operacin Kleene Star de lenguajes regulares.
Ejemplo: El lenguaje L(M1) U L(M2) es aceptado por la
mquina siguiente:
SM1

M1

FM1

SM2

M2

FM2

La concatenacin de dos lenguajes L(M1) L(M2) regulares


puede ser aceptado por la mquina siguiente:

SM1

M1

FM1

SM2

M2

FM2

Una mquina que acepta L(M1)* es la siguiente:

SM1

M1

FM1

CONCLUSION
Usando los autmatas finitos anteriores podemos construir
una mquina para cualquier expresin regular que
describa a un lenguaje o conjunto regular. Por lo tanto, la
conclusin es de que la familia de lenguajes aceptados por
una mquina o autmata finito son del tipo regular.
Ejercicio: Construir un AFN- que acepte el lenguaje
denotado por (a|b)*ba.
a

ba
b

(a|b)
a

(a|b)*

(a|b)*ba
a

3.5 Autmatas Finitos y Expresiones Regulares.


Los lenguajes regulares son definidos por medio de expresiones
regulares y aceptados por medio de autmatas finitos. Podemos
establecer que un lenguaje es regular si
Es una expresin regular bajo un
Es aceptado por un AFD, AFN o AFN-
Es generado por una gramtica regular.
En cuanto a las expresiones regulares y autmatas, hemos ya
comprobado en la seccin anterior que podemos construir un
autmata finito para cualquier expresin regular dada. Por otra
parte existen mtodos para producir una expresin regular a
partir de un autmata finito.

3.6 Determinacin de lenguajes regulares y no regulares.


Dado el lenguaje {aibi | i<=n} podemos construir un AFD
que acepte dicho lenguaje?
El siguiente AFD acepta dicho lenguaje pero est
incompleto.
a

a
b

b
b

El AFD anterior est incompleto puesto que es imposible


construir un AFD para un lenguaje que no es regular. De
hecho dicho lenguaje es del tipo contexto libre, o es un
lenguaje no regular.
Se puede demostrar que un lenguaje es regular al construir
un autmata finito que lo acepte. Pero para demostrar que no
es regular necesitamos usar otras tcnicas (e.g. Pumping
lemma) que veremos en otro captulo.

4. AUTOMATAS DE PUSH-DOWN
Los lenguajes regulares se caracterizan por ser lenguajes
generados por gramticas regulares y aceptados por
autmatas finitos. En este captulo estudiaremos un tipo
de mquina usada para aceptar lenguajes de contexto
libre. Esta mquina recibe el nombre de autmata de
push-down (APD).

4.1 Definicin.
Un Autmata de Push-Down (APD) es una mquina de estado
finto aumentada o extendida con una pila de memoria externa.
La adicin de la pila al autmata le proporciona a este un medio
de almacenamiento de memoria LIFO (last-in, first-out). Esta
combinacin de pila con estados le da la posibilidad a un APD
de aceptar lenguajes como {aibi | i>=0}.
Un APD es un sextuple (Q, q0, F), donde Q es el
conjunto finito de estados, es un conjunto finito de el alfabeto
de entrada, es un conjunto finito llamado el alfabeto de la pila,
q0 es el estado inicial, F (un subconjunto de Q) es el conjunto de
estados finales y es la funcin de transicin de Q x (U {x
( U {}) a subconjuntos Q x ( U {}) .

Un APD consulta el estado actual, el smbolo de entrada y el el


smbolo en el tope de la pila para determinar la transicin en la
mquina. La funcin de transicin lista todas las posibles
transiciones dada una determinada combinacin de estado,
smbolo y tope de la pila. El valor de la funcin de transicin
(qi,a,A) = {[qj,B], [qk,C]}
Indica que dos transiciones son posibles cuando el autmata esta
en estado qi y leyendo una a con A en el tope de la pila. Si
tomamos la primera opcin [qj,B],esto causar que la mquina
cambie de estado qi a estado qj
procese el smbolo a (leer el siguiente smbolo)
Remover A del tope de la pila
Meter B dentro de la pila
Un APD tambin puede representarse por medio de un diagrama
de estados (nuestros ejemplos los utilizaran).

La transicin (qi,a,A) = {[qj,B]} es representada por

qi

a A/B

qj

El smbolo / representa reemplazo (reemplazar A en el


tope de la pila por B).
El dominio de la funcin de transicin permite transiciones
lambda en el smbolo de entrada y en el tope de la pila.

Ejemplo:
A/

(qi, ,A) = [qi, ]

*Pop una A

qi

(qi, , ) = [qi, A]

*Push una A

qi
a

(qi,a, = [qj, ]

qi

qj
*Lee una a

4.2 Lenguajes aceptados por un Autmata de Push-Down


La adicin o extensin al autmata finto al manejar una pila
(APD) le permite a este ser un aceptador no solo de lenguajes
regulares sino tambin de lenguajes de contexto libre. Esto
nos permite establecer que existe una correspondencia entre
un APD y una gramtica de contexto libre.
Lo anterior es demostrable y la forma de hacerlo es por medio
de ir construyendo un APD a partir de cada produccin de
una gramtica de contexto libre. Para cada regla existe una
transicin dentro del APD.
Por otra parte un APD podra implementarse con puras
transiciones de leer los smbolos de entrada pero sin
movimientos en la pila (). Esto nos dara una mquina
similar a un autmata finito la cual obviamente va a aceptar
cualquier gramtica regular.

4.3 APD determinstico.


Un APD es determinstico si existe no mas de una
transicin que es aplicable por cada combinacin de
estado, smbolo de entrada y tope de la pila. A
continuacin construimos un APD M determinstico
para aceptar el lenguaje {aibi | i>=0}.
M: Q = {q0,q1}
a,b}
= {A}
F = {q0,q1}
(q0,a, ) = {[q0, A]}
(q0,b, A) = {[q1,]}
(q1,b, A) = {[q1, ]}

a /A
q0

b A/
b

q1

Ejercicios:
Construir un APD que acepte el lenguaje {wcwR | w es un
miembro de {a,b}*}.
Construir un APD que acepte el lenguaje {aicjbi | i,j>=0}.
Construir un APD que acepte el lenguaje {aibjck | i+k=j}.

4.4 APD y Gramticas de Contexto Libre


Podemos probar que cada lenguaje libre de contexto es
aceptado por un APD. Para llevar a cabo esto, las reglas de la
gramtica se usan para generar las transiciones de un APD
equivalente. Sea L un lenguaje libre de contextos y G una
gramtica para ese lenguaje en forma normal de Greibach. En
esta forma de Greibach todas las producciones de una
gramtica tienen una de las siguientes formas:
A aA1A2.An

A a

A
La gramtica G en forma de Greibach que acepta {aibi | i>=0}
es usada para ilustrar la construccin de un APD equivalente.

G:

S aAB | aB
A aAB | aB
Bb
El APD tiene dos estados: un estado inicial q0 y un estado
aceptador o final q1. Una regla S de la forma S aA1A2An
genera una transicin que procesa el smbolo terminal a, mete
(push) las variables A1A2An a la pila y se mueve al estado q1.
El resto de las operaciones usan el smbolo de entrada y el tope
de la pila para determinar la transicin apropiada. La funcin de
transicin de el APD es definido directamente de las reglas de
G.
(q0,a, ) = {[q1,AB], [q1,B]}
(q1,a,A) = {[q1,AB], [q1,B]}
(q1,a,B) = {[q1, ]}
Por otra parte es tambin posible construr una gramtica de
contexto libre a partir de un APD.

5. MAQUINAS DE TURING
La mquina de Turing nos proporciona muchas de las
caractersticas comnmente asociadas con una computadora
moderna. De hecho, la mquina de Turing fue el modelo
utilizado para disear y construir la primer computadora de
programa almacenado. Esta mquina utiliza una secuencia
de operaciones elementales para acceder y alterar una
posicin de memoria. A diferencia de una computadora,
una mquina de Turing no tiene un lmite de memoria o de
tiempo para realizar un clculo. Por ltimo, la mquina de
Turing representa lo mximo dentro de los dispositivos de
computacin abstractos.

5.1 Definicin de Mquina de Turing.


Una mquina de Turing es una mquina de estado finto en
donde en una transicin se escribe un smbolo en la cinta
(tape). La cabeza de la cinta puede moverse en cualquier
direccin, permitiendo que la mquina lea y manipule la
entrada tantas veces como se desee.
Mas formalmente, una mquina de Turing es un quintuple
M = (Q, , q0) donde Q es un conjunto finito de
estados, es un conjunto finito llamado el alfabeto de la
cinta y contiene un smbolo especial B que representa un
blanco, es un subconjunto de llamado el alfabeto
de entrada, es una funcin parcial de Q x a Q x x
{L,R} llamado la funcin de transicin y q0 (miembro de Q)
es un estado distinguido llamado estado inicial.

5.2 funcionamiento de la mquina de Turing.


La cinta de una mquina de Turing se extiende
indefinidamente en una direccin. Las posiciones de la cinta
estn numeradas por los nmeros naturales siendo la
posicin mas a la izquierda la nmero cero.
0 1 2 3 4 5 6
.
q0

Una computacin comienza con la mquina en estado q0 y


la cabeza de la cinta leyendo la posicin mas a la izquierda.
La entrada, una cadena de se escribe en la cinta
comenzando en posicin uno. Posicin cero y el resto de la
cinta es asumido que estn iniciadas con blancos.

El alfabeto de la cinta proporciona smbolos adicionales que


pueden ser usados durante la computacin.
Una transicin consiste de tres acciones: cambiar el estado,
escribir un smbolo en el cuadro ledo por la cabeza de la
cinta y mover la cabeza de la cinta. La direccin del
movimiento de la cabeza de la cinta puede ser a la izquierda
(L) o a la derecha (R). La configuracin de la mquina
x

q1

y transicin qi,x) = [qj,y,L] se combinan para producir la


nueva configuracin

y
qj

La transicin cambi el estado de qi a qj, reemplaz el


smbolo x con y y movi la cabeza de la cinta un cuadro a la
izquierda.
Una mquina de Turing halts (termina) cuando encuentra
un estado (par de smbolos) para los cuales no existe
definida una transicin. Esto es una terminacin normal.
Una transicin de la posicin cero en la cinta puede
especificar un movimiento a la izquierda de los lmites de la
cinta. Cuando esto ocurre, la computacin se dice termina
anormalmente.

Mquina de Turing Standard


Son diseadas para ejecutar computaciones en cadenas del
alfabeto de entrada. Una computacin comienza con la cabeza
de la cinta leyendo el cuadro mas a la izquierda y la cadena de
entrada posicin uno. Todos los cuadros a la derecha de la
cadena de entrada es asumido estn en blanco.
Ejemplo: La funcin de transicin de una mquina de Turing
standard con alfabeto de entrad {a,b} es mostrada a
continuacin. La transicin del estado q0 mueve la cabeza de
la cinta a posicin uno para leer la entrada. Las transiciones en
estado q1 leen la cadena de entrada e intercambian los
smbolos a y b. Las transiciones en q2 retornan la mquina a
la posicin inicial.

B
q0 q1,B,R

q1 q2,B,L

q1,b,R q1,a,R

q2

q2,a,L

q2,b,L

Una mquina de Turing puede representarse grficamente por


un diagrama de estados.
Ejemplo (tabla anterior): Intercambia as y bs en la cadena de
entrada.
a/b R
b/a R

q0

B/B R

q1

a/a L
b/b L
B/B L

q2

Ejemplo: La siguiente Mquina de Turing con alfabeto de


entrada {a,b} produce una copia de la cadena de entrada. Esto
quiere decir que una computacin que comienza con la cinta
teniendo la forma BuB termina con la cinta BuBuB.
a/a R
b/b R

a/X R
COPY:

q0

B/B R

q1
b/Y R

B/B L
X/a L
Y/b L

q2

a/a R
b/b R
q6

q7

B/B R

B/B R

a/a R
b/b R
q3

B/a L

b/b R
a/a R

q5

X/X R
Y/Y R

a/a L
q4

B/b L

b/b L
B/B L

Ejercicios:
Construir una mquina de Turing para mover la entrada
un espacio a la derecha. La configuracin de entrada
q0BuB resulta en qfBBuB.
Construir una mquina de Turing para concatenar una
copia de la cadena de entrada en reversa. La
configuracin de entrada q0BuB resulta en qfBuuRB.

5.3 Lenguajes aceptados por la mquina de Turing


Una mquina de Turing puede ser usada para calcular
funciones y para aceptar lenguajes. En el primer caso el
resultado de una computacin se define in trminos del estado
en donde termina la computacin o la configuracin de la
cinta. En el segundo caso, una computacin acepta o rechaza
la cadena de entrada. A diferencia de un autmata finto o de
Push Down, la mquina de Turing no necesita leer toda la
cadena de entrada para aceptar la cadena. Una mquina de
Turing aumentada con estados finales es un sextuple (Q, , ,
, q0, F) donde F es un subconjunto de Q y contiene los
estados finales.

Un lenguaje aceptado por una mquina de Turing es llamado


lenguaje recursivamente enumerable. La hablidad de una
mquina de Turing para moverse en ambas direcciones y
procesar blancos introduce la posibilidad de no parar (halt)
ante ciertas entradas. Un lenguaje que es aceptado por una
mquina de Turing y que termina (halt) ante todas las
cadenas de entrada es llamado lenguaje recursivo. Existen
muchas mquinas de Turing que aceptan un lenguaje en
particular; algunas pueden parar (halt) para todas las entradas
mientras otras no. La existencia de una mquina de Turing
que para (halt) con todas las entradas es suficiente para
demostrar que el lenguaje es recursivo.

Ejemplo: La mquina de Turing


b/b R

q0

B/B R

q1

a/a R

q2

a/a R

q3

b/b R

acepta el lenguaje (a U b)*aa(a U b)*. La computacin para


la cadena aabb examina solo la mitad de la entrada antes de
aceptar la cadena completa. El lenguaje (a U b)*aa(a U b)*
es recursivo; las computaciones en la mquina terminan
(halt) para cada cadena de entrada. Una computacin exitosa
termina cuando una subcadena aa es encontrada.

5.4 Ejemplo de mayor fuerza de la Mquina de Turing

5.5 Extensiones de la Mquina de Turing


Existen variaciones al modelo de la mquina de Turing
standard. Cada variacin o extensin parece incrementar la
capacidad de la mquina, pero la realidad es que los lenguajes
aceptados por esas mquinas de Turing extendidas son tambin
aceptados por mquinas de Turing Standard.
Mquinas de Turing de Multipistas
En este tipo de mquinas la cinta es dividida en varias pistas.
Una posicin en la multipista-cinta contiene n smbolos del
alfabeto de la cinta.
PISTA 1
PISTA 2

qj

Una posicin en la cinta en una mquina de 2 pistas es


representada por un par ordenado [x,y] donde x es el smbolo
en pista 1 y y en pista 2. Una transicin lee y escribe la
posicin completa de la cinta y se escribe como:
(qi,[x,y]) = [qj,[z,w],d] donde d es {L,R}
La entrada es puesta en la pista 1. Todas las posiciones en la
pista 2 estn en blanco. Aceptacin en este tipo de mquinas
de Turing es por medio de estado final.
Este tipo de mquinas de Turing, al ser equivalentes a la
mquina de Turing standard, acepta lenguajes recursivamente
enumerables.

Mquinas de Turing de dos direcciones (two-way)


Este tipo de mquinas es identico a una mquina de Turing
standard excepto que la cinta se extiende indefinidamente en
ambas direcciones (izquierda y derecha). En este tipo de
mquinas la cadena de entrad puede ser puesta en cualquier
lugar de la cinta. Todas las dems posiciones de la cinta se
asume que estn en blanco.
.

.
q0

Se puede colocar un smbolo especial (#) en una posicin para


que sea el lmite de la izquierda (como en una mquina
standard). Este tipo de mquinas es tambin equivalente al de
la mquina standard (aceptan Lenguajes Rec. Enumerables).

Mquinas de Mltiple Cintas


Consiste de k cintas y k cabezas de cintas independientes. Los
estados y alfabetos son los mismos que en la mquina
standard. La mquina lee las cintas simultneamente pero solo
tiene un estado.
CINTA 1
CINTA 2
CINTA 3
qi

Una transicin es determinada por el estado y el smbolo


ledo por cada cabeza de cinta. Una transicin puede
cambiar el estado
escribir un smbolo en cada cinta
independientemente reposicionar cada cabeza de cinta.
El reposicionamiento consiste de mover la cabeza de la
cinta un cuadro a la izquierda o la derecha o incluso dejar la
cabeza en su posicin actual. La entrada a la mquina es
puesta en la cinta 1. Todas las dems cintas estarn en
blanco.
Al igual que en las mquinas anteriores este tipo de
mquinas acepta lenguajes Rec. Enumerables.

5.6 Mquinas de Turing No Determinsticas


Estas mquinas pueden especificar cualquier nmero finito de
transiciones para una configuracin dada. Los componentes de
una mquina no determinstica, con excepcin de la funcin
de transicin, son idnticos a los de una mquina de Turing
standard. Las transiciones en una mquina no determinstica
son definidas por una funcin de Q x a los subconjuntos Q x
x {L,R}.
Cundo una transicin indica que mas de una accin es
posible, una computacin arbitrariamente escoge una de las
transiciones. Una cadena de entrada es aceptada por una
mquina no determinstica si existe una computacin que
termina en un estado aceptador.

5.7 El problema de Halting para las Mquinas de Turing


Un problema de decisin consiste de un conjunto de preguntas
cuyas respuestas son si o no. Una solucin a un problema de
decisin es un procedimiento efectivo que determine la respuesta
para cada una de las preguntas. Una mquina de turing es un
sistema matemtico ideal para solucionar problemas de decisin.
La teora de Church-Turing dice que se puede disear siempre
una mquina de Turing para resolver cualquier problema de
decisin que tenga solucin por un procedimiento efectivo.
Entonces, para establecer que un problema no tiene solucin es
suficiente con mostrar que no existe solucin en una mquina de
Turing (Undecidability).
El mas famoso de los problemas sin solucin (undecidable
problem) es el problema de Halting.

El problema de Halting se formula de la forma siguiente:


Dada una mquina de Turing arbitraria M con alfabeto de
entrada y una cadena w que pertenece a , Parara la
computacin de M con la entrada w ?
Es importante entender la declaracin del problema. Debemos
ser capaces de determinar si una mquina de Turing en
particular parar (halt) con una cadena determinada. Por
ejemplo la ltima mquina de Turing revisada para (halt) con
todas las cadenas conteniendo la subcadena aa. Sin embargo,
una solucin del problema halting requiere un algoritmo
general que responda la pregunta de halting que para cada
combinacin posible de mquina de Turing y cadena de
entrada la mquina va a parar.

Ejemplo: Tenemos una mquina de Turing H que resuelve el


problema de parada Halting.
R(M)w

M hace parada con entrada w


acepta
rechaza
M no hace parada con entrada w

La entrada consiste de la representacin de la mquina de


Turing M seguido de cadena w. La computacin de M con
entrada w hace parada.
La mquina H es modificada para construir H. Las
computaciones de H son las mismas que H excepto que H se
cicla indefinidamente cuando H termina en un estado aceptador.
Las transiciones de H son construidas agregandole a H que
causan que H se mueva indefinidamente a la derecha cuando H
entre a un estado aceptador.

H es combinado con una mquina de Turing que copia otra


mquina de Turing para formar una nueva mquina D.
D
M para con entrada R(M)
R(M)

copy

R(M)R(M)

ciclo

para
M no para con entrada R(M)

La entrada a la mquina D puede representarse por cualquier


mquina Turing. Considera una computacin de D con entrada
R(D). Entonces tendriamos lo siguiente:
D
D para con entrada R(D)

R(D)

copy

R(D)R(D)

ciclo

para
D no para con entrada R(D)

En esta ltima mquina D, vemos que D hace parada con


entrada R(D), si y solo si, D no hace parada con entrada
R(D). Esto es una contradiccin. Sin embargo, mquina D
puede construirse desde mquina H que resuelve el
problema de parada. La premisa que el problema de parada
tiene solucin nos lleva a la contradiccin. Podemos
concluir que el problema de parada no tiene solucin.

Você também pode gostar