Está en la página 1de 242

INSTITUTO TECNOLÓGICO

de Celaya.

“TEORÍA DE LA COMPUTACIÓN”

LIBRO DE TEXTO

QUE PARA OBTENER EL TITULO DE:


INGENIERO EN SISTEMAS COMPUTACIONALES

PRESENTA:
ADRIANA ACEVEDO JUÁREZ

Celaya, Gto. Junio 2006.


DEDICATORIAS

A DIOS

Nuestro creador, por permitirme ver la luz de cada nuevo día, por ser la base de
mi fe, por ser mi amigo incondicional en toda ocasión de alegría o tristeza y el pilar de
mi existencia.

A MI MADRE

Quien me sustento, cuido, alentó y motivo en todo momento. Gracias mamá, por
el gran cariño con el que me formaste, todos los principios que me inculcaste y sobre
todo el AMOR con el que me cubriste en todo instante de mi vida.

A MI PADRE

Por haberme hecho fuerte, por alentarme y empujarme a enfrentar la vida


apoyándome moral y espiritualmente.

A MIS HERMANAS Y MI CUÑADO

A mis hermanas, por ser mis compañeras de juegos y mis cómplices de


travesuras, por que su compañía es uno de los mejores regalos que me ha brindado la
vida.
A mi cuñado, por la amistad y el apoyo que me ha brindado en el transcurso y
culminación de mis estudios.

A JAIME

Por el cariño brindado, por esas largas horas de compañía, por su apoyo en todo
el transcurso de mi carrera. Gracias por todo tu AMOR.
A MIS AMIGOS

Por su apoyo y compañerismo, por esos momentos de alegrías y esos momentos


de trabajo. Por los logros obtenidos en el grupo, por mostrarme que la vida también
requiere de tiempo para uno mismo, y no solo de trabajo.

A MIS MAESTROS

Por ser parte de mi formación profesional y humana. En especial a mi asesora


M. C. Maria de Jesús Hernández Morales por el apoyo brindado en la realización de
este trabajo.
CUANDO LAS COSAS DE LA VIDA PARECEN DEMASIADO Y LAS 24 HORAS DEL
DÍA NO SON SUFICIENTE, SIEMPRE HAY ESPACIO PARA UNA TAZA DE CAFÉ.

Un profesor, delante de su clase de filosofía, sin decir palabra, tomo un frasco


grande y vació de mayonesa y procedió llenarlo con pelotas de golf.

Luego, le pregunto a sus estudiantes si el frasco estaba lleno los estudiantes estuvieron
de acuerdo en decir que si. Así que el maestro tomo una caja llena de canicas y la vació
dentro del frasco de mayonesa .las canicas llenaron los espacios vacíos entre las
pelotas de golf el profesor volvió a preguntarles a los estudiantes si el frasco estaba
lleno y ellos volvieron a decir que si.

Luego el maestro tomo una caja de arena y la vació dentro del frasco, por supuesto, la
arena lleno todos los espacios vacíos y el profesor cuestiono nuevamente si el frasco
estaba lleno. En esta ocasión los estudiantes respondieron con un si unánime.

El profesor enseguida agrego dos tazas de aromático café diluido en agua al contenido
del frasco, con lo que efectivamente, el líquido llenaría todos los espacios vacíos entre
la arena.

Los estudiantes reían en esta ocasión. Cuando la risa se apagaba, el maestro comento:

"Quiero que se den cuenta que este frasco representa la vida, las pelotas de golf son las
cosas importantes, como dios, la familia, los hijos, la salud, los amigos, las cosas que te
apasionan. Son cosas que incluso si todo lo demás lo perdiéramos y solo estas
quedaran, nuestras vidas aun estarían llenas.
Las canicas son las otras cosas que importan, como el trabajo, la casa, el carro, etc.
la arena es todo lo demás, las pequeñas cosas...si ponemos la arena en el frasco
primero, no habría espacio para las canicas ni para las pelotas de golf.
Lo mismo ocurre con la vida. Si gastamos todo nuestro tiempo y energía en las cosas
pequeñas, nunca tendremos lugar para las que realmente son importantes...
así que presta atención a las cosas que son cruciales para tu felicidad. Juega con tus
hijos, tomate tiempo para asistir al doctor, ve con tu pareja a cenar, practica tu deporte
favorito o afición favorita. Siempre habrá tiempo para limpiar la casa y reparar la
llave del agua... ocúpate de las pelotas de golf primero, es decir de las cosas que real
mente importan... establece tus prioridades, el resto es sola arena".

Uno de los estudiantes levanto la mano y pregunto que representaba el café.


El profesor sonrió y dijo: que bueno que lo preguntas.

Solo es para demostrarles que no importa cuan ocupada tu vida pueda parecer,
siempre hay lugar para un par de tazas de café con un buen amigo!
DEDICATORIAS

A DIOS

Nuestro creador, por permitirme ver la luz de cada nuevo día, por ser la base de
mi fe, por ser mi amigo incondicional en toda ocasión de alegría o tristeza y el pilar de
mi existencia.

A MI MADRE

Quien me sustento, cuido, alentó y motivo en todo momento. Gracias mamá, por
el gran cariño con el que me formaste, todos los principios que me inculcaste y sobre
todo el AMOR con el que me cubriste en todo instante de mi vida.

A MI PADRE

Por haberme hecho fuerte, por alentarme y empujarme a enfrentar la vida


apoyándome moral y espiritualmente.

A MIS HERMANAS Y MI CUÑADO

A mis hermanas, por ser mis compañeras de juegos y mis cómplices de


travesuras, por que su compañía es uno de los mejores regalos que me ha brindado la
vida.
A mi cuñado, por la amistad y el apoyo que me ha brindado en el transcurso y
culminación de mis estudios.

A JAIME

Por el cariño brindado, por esas largas horas de compañía, por su apoyo en todo
el transcurso de mi carrera. Gracias por todo tu AMOR.
A MIS AMIGOS

Por su apoyo y compañerismo, por esos momentos de alegrías y esos momentos


de trabajo. Por los logros obtenidos en el grupo, por mostrarme que la vida también
requiere de tiempo para uno mismo, y no solo de trabajo.

A MIS MAESTROS

Por ser parte de mi formación profesional y humana. En especial a mi asesora


M. C. Maria de Jesús Hernández Morales por el apoyo brindado en la realización de
este trabajo.
CUANDO LAS COSAS DE LA VIDA PARECEN DEMASIADO Y LAS 24 HORAS DEL
DÍA NO SON SUFICIENTE, SIEMPRE HAY ESPACIO PARA UNA TAZA DE CAFÉ.

Un profesor, delante de su clase de filosofía, sin decir palabra, tomo un frasco


grande y vació de mayonesa y procedió llenarlo con pelotas de golf.

Luego, le pregunto a sus estudiantes si el frasco estaba lleno los estudiantes estuvieron
de acuerdo en decir que si. Así que el maestro tomo una caja llena de canicas y la vació
dentro del frasco de mayonesa .las canicas llenaron los espacios vacíos entre las
pelotas de golf el profesor volvió a preguntarles a los estudiantes si el frasco estaba
lleno y ellos volvieron a decir que si.

Luego el maestro tomo una caja de arena y la vació dentro del frasco, por supuesto, la
arena lleno todos los espacios vacíos y el profesor cuestiono nuevamente si el frasco
estaba lleno. En esta ocasión los estudiantes respondieron con un si unánime.

El profesor enseguida agrego dos tazas de aromático café diluido en agua al contenido
del frasco, con lo que efectivamente, el líquido llenaría todos los espacios vacíos entre
la arena.

Los estudiantes reían en esta ocasión. Cuando la risa se apagaba, el maestro comento:

"Quiero que se den cuenta que este frasco representa la vida, las pelotas de golf son las
cosas importantes, como dios, la familia, los hijos, la salud, los amigos, las cosas que te
apasionan. Son cosas que incluso si todo lo demás lo perdiéramos y solo estas
quedaran, nuestras vidas aun estarían llenas.
Las canicas son las otras cosas que importan, como el trabajo, la casa, el carro, etc.
la arena es todo lo demás, las pequeñas cosas...si ponemos la arena en el frasco
primero, no habría espacio para las canicas ni para las pelotas de golf.
Lo mismo ocurre con la vida. Si gastamos todo nuestro tiempo y energía en las cosas
pequeñas, nunca tendremos lugar para las que realmente son importantes...
así que presta atención a las cosas que son cruciales para tu felicidad. Juega con tus
hijos, tomate tiempo para asistir al doctor, ve con tu pareja a cenar, practica tu deporte
favorito o afición favorita. Siempre habrá tiempo para limpiar la casa y reparar la
llave del agua... ocúpate de las pelotas de golf primero, es decir de las cosas que real
mente importan... establece tus prioridades, el resto es sola arena".

Uno de los estudiantes levanto la mano y pregunto que representaba el café.


El profesor sonrió y dijo: que bueno que lo preguntas.

Solo es para demostrarles que no importa cuan ocupada tu vida pueda parecer,
siempre hay lugar para un par de tazas de café con un buen amigo!
Instituto Tecnológico de Celaya

ANTECEDENTES

Cada ser humano pasa por varios periodos o etapas en su vida, cada una de ellas con
un grado de prioridad y de importancia; una de éstas es la etapa estudiantil y en algunos
casos, ésta se termina al culminar sus estudios universitarios y obtener un título de acuerdo
a la carrera que se haya elegido.

En el transcurso estudiantil el alumno se enfrenta a varias adversidades; como la


falta de material didáctico que le ayude a investigar y reafirmar los conocimientos
obtenidos en cada materia. Uno de estos casos es el de la materia “Teoría de la
Computación”; cuya falta de textos didácticos completos, que guíen al alumno en su
transcurso por ésta, pueden afectar su rendimiento. Tal situación, es una de las causas por
las cuales se desea desarrollar un texto didáctico que oriente al estudiante en el desarrollo
de esta materia.

Por otra parte, otro propósito por lo cual se desea llevar a cabo este proyecto es el de
concluir con los estudios académicos para obtener el grado de Ingeniero en Sistemas
Computacionales.

Teoría de la Computación I
Instituto Tecnológico de Celaya

OBJETIVO GENERAL

Desarrollar un texto didáctico de tipo teórico-práctico que ayude al estudiante a


comprender la base para la construcción de sistemas formales que se imparten en la materia
“Teoría de la Computación”.

OBJETIVOS ESPECÍFICOS

♦ Fortalecer el aprendizaje del alumno al contar con un texto didáctico de apoyo,


enfocado totalmente a la materia que se cursa.

♦ Integrar el mejor material de texto que exista actualmente en las diferentes fuentes
bibliográficas de la materia, en un material accesible para el estudiante.

♦ Desarrollar un texto didáctico de fácil comprensión para el estudiante.

♦ Desarrollar un texto didáctico cuya índole llame la atención del estudiante


aumentando su interés por la materia.

♦ Desarrollar ejercicios prácticos que ayuden al estudiante a fortalecer la teoría


plateada en esta materia.

Teoría de la Computación II
Instituto Tecnológico de Celaya

JUSTIFICACIÓN

La falta de material didácticos que guíen al alumno de manera completa en los


temas que abarca la materia “Teoría de la Computación”, es un problema que afecta
directamente a los alumnos del Instituto Tecnológico de Celaya, ya que el alumno suele
tener perdidas de tiempo en la búsqueda de material que pueda ayudarle en el estudio de
esta materia; material que muchas veces no es encontrado; tal situación ha llevado a pensar
en desarrollar un libro de texto que ayude al alumno en el curso de esta materia mejorando
su rendimiento y por consecuencia moldeando mejores Ingenieros en Sistemas
Computacionales.

Teoría de la Computación III


Instituto Tecnológico de Celaya

ÍNDICE

Antecedentes I
Objetivo General II
Objetivos Específicos II
Justificación III
Introducción general VIII

UNIDAD 1. INTRODUCCIÓN

Objetivo 1
Diagrama temático de la unidad 2
1. Introducción 3
1.1 Introducción 3
1.2 Nociones matemáticas. 4
1.2.1 Conjuntos 4
1.2.2 Funciones y relaciones 11
1.2.3 Cadenas y lenguajes 18
1.3 Inducción matemática. 25
1.4 Autómatas, Computabilidad y Complejidad 27
Resumen 28
Glosario 32
Ejercicios 36
Problemas 37
Lectura complementaría 39
Bibliografía 41
Retroalimentación 42

UNIDAD 2. LENGUAJES REGULARES

Objetivo 44
Diagrama temático de la unidad 45
2. LENGUAJES REGULARES 46
2.1 Introducción 46

Teoría de la Computación IV
Instituto Tecnológico de Celaya

2.2 Autómatas finitos 47


2.2.1 Jerarquía de Chomsky 48
2.2.2 Autómatas finitos determinísticos. 53
2.2.3 Autómatas finitos no determinísticos. 56
2.3 Expresiones regulares. 62
2.4 Lenguajes no regulares. 64
Resumen 66
Glosario 71
Ejercicios 74
Problemas 75
Lectura complementaría 77
Bibliografía 80
Retroalimentación 81

UNIDAD 3. LENGUAJES INDEPENDIENTES DEL CONTEXTO

Objetivo 84
Diagrama temático de la unidad 85
3. LENGUAJES LIBRES DE CONTEXTO. 86
3.1 Introducción. 86
3.2 Gramáticas libres de contexto. 87
3.2.1 Construcción de gramáticas 87
3.3 Árboles de derivación. 90
3.4 Formas normales de Chomsky, 93
3.4.1 Algoritmos de eliminación de producciones inútiles. 94
3.4.2 Algoritmos de eliminación de producciones anulables 97
3.4.3 Algoritmos de eliminación de producciones unitarias 100
3.5 Formas normales de Greibach. 104
3.6 Eliminación de Factores Comunes izquierdos. 106
3.7 Eliminación de recursividad izquierda. 108
3.8 Eliminación de la ambigüedad. 111
3.9 Autómatas Push-Down. 111
3.9.1 AP y gramáticas independientes del contexto. 114

Teoría de la Computación V
Instituto Tecnológico de Celaya

Resumen 118
Glosario 124
Ejercicios 125
Problemas 126
Lectura complementaría 128
Bibliografía 130
Retroalimentación 131

UNIDAD 4. MÁQUINAS DE TURING

Objetivo 134
Diagrama temático de la unidad 135
4. MÁQUINA DE TURING. 136
4.1 Introducción. 136
4.2 Conceptos básicos 137
4.2.1 Definición formal de una máquina de Turing 138
4.3 Construcción modular de una máquina de Turing. 140
4.3.1 Bloques básicos 141
4.4 Lenguajes aceptados por la MT. 144
4.5 Variantes de una máquina de Turing. 145
4.5.1 Permanencia 145
4.5.2 Subceldas 146
4.5.3 Cinta finita 146
4.5.4 Multicitas 147
4.5.5 MT no determinística 148
4.6 Problemas de Hilbert 149
Resumen 151
Glosario 155
Ejercicios 156
Problemas 157
Lectura complementaría 158
Bibliografía 166
Retroalimentación 167

Teoría de la Computación VI
Instituto Tecnológico de Celaya

UNIDAD 5. DECIDIBILIDAD

Objetivo 172
Diagrama temático de la unidad 173
5. DECIBILIDAD 174
5.1 Introducción. 174
5.2 Lenguajes decidibles 175
5.3 El problema de Halting. 177
5.4 Decidibilidad de teorías lógicas. 179
Resumen 181
Glosario 183
Ejercicios 184
Lectura complementaría 185
Bibliografía 191
Retroalimentación 192

UNIDAD 6. REDUCIBILIDAD

Objetivo 193
Diagrama temático de la unidad 194
6. REDUCIBILIDAD. 195
6.1 Introducción 195
6.2 Problemas insolubles para la teoría de lenguajes. 196
6.3 Un problema simple insoluble. 197
6.4 Funciones computables. 199
6.5 Reducibilidad de Turing. 201
Resumen 202
Glosario 204
Ejercicios 205
Lectura complementaría 206
Bibliografía 207
Retroalimentación 208

Anexos
Conclusiones

Teoría de la Computación VII


Instituto Tecnológico de Celaya

INTRODUCCIÓN GENERAL

El presente libro de texto pretende ser un instrumento de apoyo para todo alumno o
docente que desea adentrarse en el mundo de la computación así como en los principios
científicos que han llevado al hombre a uno de sus más grandes triunfos, la invención de la
computadora.

El lector encontrará en la primera unidad de este libro, algunos de los principios


matemáticos básicos para el estudio teórico de la computación, iniciando con las teorías de
conjuntos, relaciones, funciones, complementos, etc. Además de presentar una introducción
a la computabilidad, que es definida como la factibilidad de resolver un problema por
medio de algoritmos, y al análisis de la complejidad que a su vez se define como el estudio
de la cantidad de recursos que se consumen en la ejecución de un sistema.

En la segunda unidad, el lector se introduce al análisis de los lenguajes formales,


llamados así, debido a que las reglas por los cuales son regidos han sido creadas antes de
construir dichos lenguajes; el lenguaje natural que usa el hombre para comunicarse carece
de esta condición, lo que lo hace muy extenso y complicado. Los lenguajes formales suelen
dividirse en cuatro grupos: los lenguajes regulares, los independientes del contexto, los
dependientes del contexto y los de frase estructurada o también llamados recursivamente
enumerables. Cada uno cumple con diferentes características sobre las reglas gramaticales
que los construyen, dichas reglas han sido establecidas por varios estudiosos de la materia
de los cuales resalta el lingüista Noam Chomsky.

Noam, menciona que cada uno de estos lenguajes es un subconjunto de otro, de los
cuales el más pequeño es el conjunto de los lenguajes regulares. Ésta clase de lenguajes son
reconocidos únicamente por un tipo único de máquina abstracta, o dicho de otra manera,
por un algoritmo computacional. Los autómatas finitos son máquinas abstractas
constituidas por un número finito de estados, un conjunto de transiciones, un alfabeto, entre

Teoría de la Computación VIII


Instituto Tecnológico de Celaya

otros; que permiten reconocer cada una de las cadenas por las que esta formado un lenguaje
regular; y las cuales se habla en la segunda unidad.

La tercera unidad es dedicada a los lenguajes independientes del contexto, así como a
las reglas gramaticales de las que proceden. Para finalmente hablar de las máquinas
abstractas que los reconocen y que son conocidas como autómatas de pila, cuyo poder de
reconocimiento rebasa el de los autómatas finitos; permitiéndole reconocer un conjunto
más amplio de lenguajes. Sin embargo, aún existe una máquina más poderosa denominada
máquina de Turing; la cual es estudiada a fondo en la cuarta unidad.

Las máquinas de Turing, fueron construidas con base en la generación de un


problema planteado por el matemático David Hilbert, el cual propuso la siguiente pregunta:
“¿Podrá ser creado algún algoritmo que pueda resolver todos los problemas matemáticos?”
tal cuestión dejo un hueco de duda entre los matemáticos colegas de Hilbert, los cuales no
pudieron darle una contestación a ésta interrogante; sin embargo años más tarde Alan
Turing tomo este problema llevándole a desarrollar lo que hoy se conoce como uno de los
sistemas de reconocimiento más poderosos, las ya mencionadas máquinas de Turing.

Finalmente las unidades cinco y seis, involucran al lector en el análisis de los


problemas decidibles, es decir en aquellos problemas para los cuales siempre habrá una
solución, ya sea a favor o en contra; y en el estudio de las inferencias lógicas con la
reducibilidad, que es dedicada a comprobar el estado de un problema en base al estado
actual de otro.

Teoría de la Computación IX
C
A INTRODUCCIÓN
P
I OBJETIVO

T
Reafirmar los conocimientos matemáticos
U básicos obtenidos por el estudiante, como
son la teoría de conjuntos, las relaciones,
L funciones, entre otros; que son
indispensables para el estudio de la Teoría
O de la Computación.

I
Instituto Tecnológico de Celaya Introducción

Inducción
matemática.

Teoría de la
Incluyen
computabilidad
Estudia

Requiere
Introducción a la Conceptos
Teoría de la matemáticos básicos
Computación

Estudia Incluyen
Teoría de la
complejidad
Teoría de
conjuntos

Figura 1.1 Diagrama temático de la unidad I

Teoría de la Computación 2
Instituto Tecnológico de Celaya Introducción

1. INTRODUCCIÓN

1.1 INTRODUCCIÓN

La presente unidad muestra un resumen sobre algunos conceptos matemáticos como


son: la teoría de conjuntos, las relaciones y funciones, el principio de inducción matemática
y los principios básicos de la teoría de la computación. Cada uno de estos puntos permitirá
al alumno a comprender con mayor facilidad el estudio de los lenguajes formales, así como
de las máquinas formales que permiten su reconocimiento.

El primer punto a tratar es la teoría de conjuntos, en la cual se muestran las


características de los conjuntos, así como las distintas operaciones que pueden realizarse
con ellos, como son: la unión, la intersección, el producto cartesiano, etc.

El segundo punto que se presenta son las relaciones y funciones, cuyo origen se da en
el producto cartesiano de dos conjuntos, y cuya diferencia es marcada por las características
particulares con las que cuentan.

El tercer punto es la inducción matemática que nos muestra la prueba de inducción


para comprobar algunas de las proposiciones matemáticas.

Y por último se presenta una breve introducción a la computabilidad, a la teoría de la


complejidad y a los autómatas como reconocedores de lenguajes.

Teoría de la Computación 3
Instituto Tecnológico de Celaya Introducción

1.2 NOCIONES MATEMÁTICAS

Así como todo niño necesita conocer las letras para poder leer, todo estudio científico
requiere del conocimiento previo de reglas, teorías y herramientas que ayuden al estudiante
en la comprensión de éste. Por ello para el estudio de la ciencia computacional es
conveniente el conocer herramientas matemáticas básicas para lograr una completa
compresión de esta ciencia; algunas de las herramientas que serán revisadas en esta unidad
son: la teoría de conjuntos, los conceptos de funciones y relaciones, y los conceptos de
cadenas y lenguajes.

Se comenzará por recordar algunos conceptos de la teórica de conjuntos.

1.2.1 Conjuntos

El término conjunto puede ser definido como una colección de objetos (Kelley, 1995,
Pág. 2], por ejemplo: el conjunto mujeres, el conjunto monedas, el conjunto canicas o bien
el conjunto personas. A cada objeto que forma estos conjuntos es llamado elemento o
miembro del conjunto (Kelley, 1995, Pág. 2). Si un grupo de mujeres es un conjunto y
Laura es un elemento de este conjunto, se dice, que Laura pertenece al conjunto Mujeres, y
la notación a usar para la representación de esta sentencia es Laura ∈ Mujeres, de la
misma manera se dice que una centavo pertenece al conjunto monedas, tal aseveración
podría ser representada, de manera resumida como c Є M donde el símbolo Є, mostrado
también en la sentencia anterior, se lee como “pertenece a” En caso de que Laura no fuera
un elemento del conjunto Mujeres se escribiría Laura ∉ Mujeres, donde el símbolo ∉
niega la existencia del elemento Laura en el conjunto Mujeres y se lee como “no pertenece”.
(Kelley, 1995, Pág. 6).

Ahora si un conjunto N contiene varios elementos (a, e, i, o, u), se puede representar


haciendo uso de corchetes, de la siguiente manera N = { a, e, i, o, u }(Kelley, 1995, Pág.6);

Teoría de la Computación 4
Instituto Tecnológico de Celaya Introducción

donde los corchetes forman parte esencial de esta notación encerrando en ellos los
elementos que pertenecen a el conjunto N; éste conjunto también puede ser representando
de la siguiente manera N = {v:v es una vocal}, donde N equivale al conjunto de toda v tal
que v es una vocal, es decir, si v es una vocal, el conjunto de todas las vocales es igual a N;
o bien, N = {v│v es una vocal} donde la notación v│ se leería como “el conjunto de todas
las v tales que” v es una vocal (Kelley, 1995, Pág. 2). Otro ejemplo de esta notación podría
ser el conjunto de enteros entre 0 y 9.

B = {1, 2, 3, 4, 5, 6, 7, 8}
B = {x│x Є C y x > 0, x < 9} ó B = {x Є C │x > 0 y x < 9}

Dentro de los conjuntos existe el denominado conjunto vacío o conjunto nulo siendo
éste el conjunto ausente de elemento el cual es representado por los corchetes vacíos {}, o
bien por el símbolo Ø (Kelley, 1995, Pág. 2).

Los conjuntos se clasifican en función de su cardinalidad en dos tipos; los conjuntos


finitos y los infinitos; los primeros están caracterizados por el cumplimiento de dos reglas;
la primera menciona que sí A es un conjunto, debe de ser igual al conjunto vacío Ø, en
cuyo caso su cardinalidad es 0, llamamos cardinalidad a el número de elementos que
conforman un conjunto y es denotado por dos líneas verticales paralelas que encierran al
conjunto ││A││. La segunda regla dice que A debe de tener una cardinalidad conocida X;
por lo tanto, para que un conjunto se pueda decir finito debe de estar constituido por un
número determinado de elemento de 0 a X. Un conjunto infinito es aquel cuya cardinalidad
no es conocida. (Kelley, 1995, Pág. 23)

Hasta ahora se ha hablado de conjuntos pequeños en los cuales su representación ha


sido sencilla, pero existen conjuntos en los que no se pueden listar todos sus elementos,
para estos últimos se acostumbra listar los primeros elementos del conjunto seguidos de
puntos suspensivos, por ejemplo, N = {0, 1, 2, 3…...} donde se representaría el conjunto de
todos los valores enteros positivos. En un conjunto, el orden en que aparecen sus elementos

Teoría de la Computación 5
Instituto Tecnológico de Celaya Introducción

no es de gran interés, es decir el orden de los factores no altera el producto, como lo indica
la ley conmutativa de la multiplicación; por lo tanto un conjunto solo se caracteriza por sus
elementos y no por el orden en que se encuentren enlistados. Así pues el conjunto A ={a, b,
c, d, e} es igual al conjunto B ={c, e, b, a, d} (Figura 1.2), o el conjunto C ={0,1,2,3} es
igual al conjunto D ={3,1,0,2}.

a b c e
c d b a
e d

Conjunto A = Conjunto B

Figura 1.2. Conjuntos.

Ya que se ha definido el concepto conjunto se debe tener cuidado en su manejo, ya


que la visualización a simple vista de ellos puede ser engañosa, por ejemplo, el conjunto
{{a, b}} es completamente diferente del conjunto {a, b}, ya que el conjunto {{a, b}}
contiene solo un elemento {a, b}; y el conjunto {a, b} tiene dos elementos, a y b. Por lo
tanto, estos dos conjunto no son iguales {{a, b}} ≠ {a, b}. (Kelley, 1995, Pág. 7)

Ahora, consideré los conjuntos A y B los cuales están formados por los elementos A
= {1,2,3} y B = {0,1,2,3,4,5,6}, puede darse cuenta que los elementos del conjunto A
también son elementos que se muestran en el conjunto B, por lo que se dice que A es un
subconjunto de B, cuya notación es A ⊆ B como se muestra en la figura 1.3, sin embargo
B no es un subconjunto de A ya que los valores 0,4,5,6 no se encuentran en A.

Teoría de la Computación 6
Instituto Tecnológico de Celaya Introducción

Entre los elementos del conjunto A se encuentra el conjunto vacío, ya que éste forma
parte de todos los conjuntos (Kelley, 1995, Pág. 7); por lo tanto, el conjunto vacío es un
subconjunto del conjunto A, Ø ⊆ A; y por ende también es un subconjunto de B, Ø ⊆ B.

0 4
1 2 Conjunto B
Conjunto A
3
5 6

Figura 1.3. Subconjuntos.

1.2.1.1 Operaciones con Conjuntos

Dentro de la teoría de conjuntos es posible realizar una serie de operaciones de la


misma manera que las realizadas con valores numéricos, estas operaciones se concentran en
tres: la unión, la intersección y el complemento. Las cuales serán analizadas en las
siguientes líneas.

Unión ∪ . La unión concentra los elementos de dos o más conjuntos, en un único


conjunto. Si A = {a, b, c} y B = {e, f, g} entonces A ∪ B = {a, b, c, e, f, g}; otra
manera de representar ésta operación es A ∪ B = {x │x Є A o x Є B} que se lee la
unión de A con B es igual a todo el conjunto de todas las x, tal que x pertenece a A o
a B. (Brena, 2003, Pág. 5) (Figura 1.4).

Intersección ∩ . La intersección de dos o más conjuntos, ésta dada por la existencia


de elementos comunes entre conjuntos, es decir, el conjunto A esta formado por los
elementos {a, b, c, d, e, f} y el conjunto B por los elementos {e, f, g, h, i, j, k}, los

Teoría de la Computación 7
Instituto Tecnológico de Celaya Introducción

a e f

c b g

Conjunto A Conjunto B
a e
c f
b g

Conjunto A ∪ B

Figura 1.4. Unión

elementos {e, f} aparecen en ambos conjuntos siendo estos los elementos de


intersección de estos conjuntos A ∩ B = {e, f}; otra manera de representar esta
operación de conjuntos es A ∩ B = {x │x Є A y x Є B} que se lee la intersección de
A con B es igual a todo el conjunto de todas las x, tal que x pertenece a A y a B.
(Brena, 2003, Pág. 6) (Figura 1.5).

a b c e f g
h i
d e f i j k
a b f g
h i
Conjunto A c d e j k Conjunto B
e

Conjunto A ∩ B

Figura 1.5. Intersección

Teoría de la Computación 8
Instituto Tecnológico de Celaya Introducción

Complemento. El complemento de un conjunto con respeto de otro, ésta


representado por el símbolo de resta “-“, y se encuentra denotado por todos los
miembros que pertenecen a un conjunto, pero que no forman parte de otro. Por
ejemplo, el conjunto A esta compuesto por los elementos {a, b, c, d, e, f} y el
conjunto B por los elementos {e, f, g, h, i, j, k}, el complemento de A con respecto de
B estaría representado por B – A y ésta dado por todos los miembros de B que no se
encuentran en A, B - A = {g, h, i, j, k}; otra manera de representar ésta operación de
conjuntos es B – A = {x │x Є A y x ∉ B}.(Brena, 2003, Pág. 6) (Figura 1.6).

a b c e f g
h i
d e f i j k
g h
i
Conjunto A Conjunto B
j k

Conjunto B - A

Figura 1.6. Complemento

Todos los conjuntos existentes en el mundo alfanumérico, se engloban dentro de un


conjunto universal, es decir, todos los conjuntos son subconjuntos de éste, dicho conjunto
es denominado conjunto universal (U). Los complementos realizados con el conjunto
universal son denotados por una tilde x , es decir el complemento de U-A estaría dado por
todos los elementos que no se encuentran en A, lo cual puede ser también representado por
A ; de tal manera, que si A esta compuesto por todas las vocales, entonces el complemento
de el conjunto universal con respecto de A, estaría dado por todas las consonantes del
alfabeto español; podríamos decir que negamos el conjunto, “todo lo que no forme parte de

Teoría de la Computación 9
Instituto Tecnológico de Celaya Introducción

A”. Sin embargo se debe hacer notar que el conjunto nulo o vacío no forma parte de este
conjunto universal, por lo cual 0 = U. (Kelley, 1995, Pág. 9)

Ya se ha hablado de las operaciones básicas de la teoría de conjuntos, sin embargo


existen algunas otras que vale la pena mencionar, como el producto cartesiano de conjuntos
y el conjunto potencia, los cuales serán citados a continuación.

Producto Cartesiano *. El producto cartesiano de dos conjuntos esta dado por el


conjunto de todos los pares ordenados de los elementos de cada conjunto. Si el
conjunto A esta formado por los elementos {a, b, c} y el conjunto B por los elementos
{e, f}, el producto cartesiano de A * B es {(a, e),(b, e),(c, e),(a, f),(b, f),(c, f)}, note el
orden en que aparecen los pares de elementos, primero son listados todos los
elementos del conjunto A, seguidos de los elementos del conjunto B; como puede
observarse el orden de los elementos es de gran importancia ya que el producto
cartesiano de A * B no es igual al producto cartesiano de B* A. (Brena, 2003, Pág. 6)
El total de elementos en un producto cartesiano ésta determinado por el total de
elementos de A por el total de elementos de B.

Conjunto potencia 2v. Este conjunto esta constituido por todas las posibles
combinaciones de los elemento de él conjunto en cuestión, para ser más claros,
supóngase que A es un conjunto formado por los elementos {a, b, c}, donde el
conjunto potencia de A estaría dado por {Ø, {a}, {b}, {c}, {a, b},{a, c},{b, c},{a, b,
c}}, note que el elemento vacío o nulo también forma parte de este conjunto potencia.
Podrá decirse que el conjunto potencia es igual a todos los subconjuntos del conjunto
en cuestión. El total de elementos del conjunto potencia es igual 2n donde n es la
cantidad de elementos que componen el conjunto original. (Brena; 2003, Pág. 6)

Teoría de la Computación 10
Instituto Tecnológico de Celaya Introducción

1.2.2 Relaciones y Funciones

De acuerdo al diccionario español, una relación se define como una acción y efecto
de referir o referirse a algo, o bien una conexión de un objeto o cosa con otra. De tal
manera que se puede decir que dos elementos de diferente conjunto pueden estar
relacionados entre sí bajo una relación particular.

Una relación esta dada por un subconjunto del producto cartesiano obtenido del ó los
conjuntos en cuestión. (Kelley; 1995, Pág.12) Para una mayor explicación se retomará uno
de los ejemplos utilizados anteriormente; el conjunto A esta formado por los elementos {a,
b, c} y el conjunto B por los elementos {e, f} el producto cartesiano de A * B es {(a, e),(b,
e),(c, e),(a, f),(b, f),(c, f)} por lo tanto una de las relaciones de estos dos conjuntos podría
estar dada por R = {(a, e),(b, e),(c, e)}. Cada par ordenado (x, y) que forman esta relación
determina dos conjuntos, el conjunto dominio y el conjunto condominio o imagen de R, el
dominio esta determinado por todos los elementos x de la relación, mientras que el
condominio o imagen estaría determinado por todos los elementos y de la relación, (Kelley;
1995, Pág.12) es decir:

Dom(R) = {x│ x Є A y (x, y) Є R para alguna y Є B}


Im(R) = {y│ y Є B y (x, y) Є R para algún x Є A}

(Kelley; 1995, Pág.12)

Por lo tanto, el dominio y la imagen de la relación anterior estarían dados por:

Dom (R) = {a, b, c}


Im(R) = {e}

(Kelley; 1995, Pág.12)

Teoría de la Computación 11
Instituto Tecnológico de Celaya Introducción

Estas relaciones también pueden ser obtenidas del producto cartesiano de un solo y
único conjunto, por ejemplo el conjunto A = {a, b, c}, cuyo producto cartesiano estaría
determinado por A*A, y cuyos subconjuntos formaría una relación; a éste tipo de relación
se le llama relación sobre A. (Kelley, 1995, Pág. 12)

Las relaciones cuentan con cuatro propiedades que las caracterizan como un tipo
particular de relación, estas propiedades son mencionadas a continuación.

La primera de ellas es la propiedad reflexiva la que señala, que una relación R es


reflexiva si para todo (x, x) Є R, x Є X, (Brena, 2003, Pág. 8) por ejemplo, si X es el
conjunto formado por:

x = {1, 2, 3, 4}

y la relación R sobre X es igual

R = {(1,1), (1,2), (2,2), (1,3), (3,3), (4 ,4), (2,3)}

Donde cada (x, x) Є R por lo tanto si es una relación reflexiva

Ahora que si la relación presentara la siguiente estructura

R = {(1,1), (1,2), (1,3), (3,3), (4 ,4), (2,3)}

No seria una relación reflexiva, ya que 2 Є X pero (2,2) ∉ R,

Observe esta propiedad en el grafo o digráfica de la figura 1.7, donde para cada
elemento del conjunto existe una arista circular que regresa al mismo vértice.

Teoría de la Computación 12
Instituto Tecnológico de Celaya Introducción

1 2

3 4

Figura 1.7. Grafo de relación reflexiva

La segunda propiedad es la simetría, la cual indica que una relación R es simétrica sí


para todo (x, y) Є R existe un (y, x) Є R (Brena, 2003, Pág. 9) por ejemplo retomando el
conjunto anterior, y la relación:

R = {(1,1), (1,2), (2,2), (2,1), (1,3), (3,1), (3,3), (4 ,4), (2,4), (4,2)}

donde para cada (x, y) existe un par (y, x), por lo que esta relación se dice simétrica ya que
existe una adecuada proporción de las partes que forman los pares de elementos.

Ahora que si la relación presenta la siguiente estructura

R = {(1,1), (1,2), (1,3), (3,1), (3,3), (4 ,4), (1,4)}

No seria una relación simétrica, ya que los pares (2,1) y (4,1) ∉ R

Obsérvese el grafo de la figura 1.8, donde existen las aristas que van de x a y y de y a
x lo que indica la simetría de la relación.

Teoría de la Computación 13
Instituto Tecnológico de Celaya Introducción

1 2

3 4

Figura 1.8. Grafo de relación simétrica

Una relación puede nombrarse antisimétrica si para cada (x, y) Є R donde x ≠ y


existe un (y, x) ∉ R, por ejemplo retomando el conjunto anterior se tiene la relación:

R = {(1,1), (1,2), (1,3), (3,3), (4 ,4), (1,4)}

Donde esta relación cumple con la condición de antisimetría.

El grafo de la figura 1.9 muestra esta propiedad donde para cada nodo solo existe una
arista dirigida en un solo sentido.

1 2

3 4

Figura 1.9. Grafo de relación reflexiva

El cuarto tipo de relaciones que se resaltarán son las relaciones transitivas donde se
menciona que para cada (x, y), (y, z) Є R debe existir un par (x, z) Є R (Kelley, 1995, Pág.
14), por ejemplo:

Teoría de la Computación 14
Instituto Tecnológico de Celaya Introducción

R = {(1,1), (1,2), (1,4), (2,2), (2,1), (2,4), (3,1), (3, 4), (3, 2)}

Donde la relación es una relación transitiva, esta propiedad podría distinguirse como la
transferencia de un elemento de un grupo de elementos a otro. Observe el grafo de la figura
1.10, que muestra la transitividad de la relación anterior.

1 2

3 4
Figura 1.10. Grafo de relación transitiva

Cuando una relación es transitiva, reflexiva y simétrica se dice que la relación es una
relación de equivalencia o de orden parcial. (Brena, 1995, Pág. 14)
Finalmente y antes de hablar de las funciones se menciona la inversa de una relación
representada por R-1, la cual no es otra cosa que el cambio de orden en el que aparecen los
elementos de una relación, por ejemplo:

R = {(1,2), (1,3), (1,4), (3,3), (4 ,4)}


R-1 = {(2,1), (3,1), (4,1), (3,3), (4 ,4)}

Y de donde se puede decir que R-1= {(x, y) │ (y, x) Є R} (Brena; 2003, Pág.8)

Así como se define a una relación desde su fundamento matemático, una función
puede definirse matemáticamente como una cantidad cuyo valor depende de otra variable,
en las ciencias computacionales una función f se define como una relación R ⊆ A x B,

Teoría de la Computación 15
Instituto Tecnológico de Celaya Introducción

(Kelley, 1995, Pág. 15) donde la dependencia se muestra entre los elementos de los
conjuntos relacionados (A y B), ya que un elemento del conjunto A solo puede relacionarse
con un elemento del conjunto B. Es decir, cada x Є A puede relacionarse con un elemento y
Є B, (x, y) donde ambos pertenecen a la relación que se denomina como función. Las
funciones se representan con la notación f: A → B estableciendo una relación f que va de A
a B; mientras que los elementos relacionados se representan por f(x) = y. (Kelley, 1995,
Pág. 15) (Figura 1.11).

f: A → B

a d e
b f
c g h

Conjunto A Conjunto B

Figura 1.11. Funciones.

Nótese que todo el dominio de la función es igual al conjunto A, es decir todos los
elementos que forman el conjunto están presentes en la relación, mientras que solo unos
cuantos elementos del conjunto B se encuentran presentes en la función, a estos últimos se
les denomina contradominio, rango o bien intervalo de la función. Las funciones pueden ser
de tres tipos: sobreyectivas, inyectivas y biyectivas.

Las funciones sobreyectivas son aquellas cuyo contradominio es igual al conjunto del
que procede (Johnsonbaugh, 2005, Pág.94), es decir, si el conjunto A esta formado por {a,
b, c} y el conjunto B por {e, f}, y la función de A a B esta determinada por f = {(a, e), (b, f),
(c, f)}, tenemos que el contradominio de esta función contiene todos los elementos que
pertenecen al conjunto B; como se muestra en la figura 1.12.

Teoría de la Computación 16
Instituto Tecnológico de Celaya Introducción

f: A → B

a e
Dominio b Contradominio
c f

Conjunto A Conjunto B

Figura 1.12. Función Sobreyectiva

Las funciones inyectivas o uno a uno, son aquellas en las que cada x Є A se relaciona
con un único y Є B (Brena, 2003, Pág. 10), por ejemplo la función f = {(a, e), (c, f)} es una
función inyectiva ya que a cada elemento del dominio le corresponde un único elemento del
contradominio. (Figura 1.13).

f: A → B

a e

c f

Conjunto A Conjunto B

Figura 1.13. Función Inyectiva

Sí una función cumple con las dos características mencionadas anteriormente, a esta
función se le denomina como una función biyectiva (Brena, 1995, Pág. 16), por ejemplo,
considere que tenemos los conjuntos C = {0, 1, 2,3} y D = {I, II, III, IV} de los cuales se
deriva la función f = {(0, I), (1, II), (2, IV), (3, III)}que cumple con las dos características
antes mencionadas, por lo tanto la función se dice biyectiva. (Figura 1.14).

Teoría de la Computación 17
Instituto Tecnológico de Celaya Introducción

f: C → D

0 1 I II

2 3 III IV

Conjunto C Conjunto D

Figura 1.14. Función Biyectiva

1.2.3 Cadenas y Lenguajes

Al escuchar la palabra cadena, suele venir a la cabeza un instrumento formado por


eslabones cuyo fin es el aprisionar; sin embargo el concepto cadena dentro del estudio de la
teoría computacional es definido como una secuencia finita de símbolos de un alfabeto
(Kelley; 1995, Pág. 30). Un alfabeto suele estar constituido de un conjunto no vacío y finito
de símbolos (Kelley; 1995, Pág. 30) (a, b, 1, 3, ·, %,+`, [, ¿…) así se tiene el conjunto de
números del 0 al 9, utilizado por la humanidad como alfabeto numérico, el conjunto de
puntos usados por los ciegos conocido como alfabeto Braille ó el conjunto de letras de la A
a la Z que forman el alfabeto de la real academia española. Cada uno de estos conjuntos es
representado por símbolo ∑, así pues se diría que el alfabeto constituido por las primeras 10
letras del alfabeto es representado como:

∑ = {a, b, c, d, e, f, g, h, i, j}

Teoría de la Computación 18
Instituto Tecnológico de Celaya Introducción

Donde σ representa cualquier símbolo del alfabeto que pertenece a ∑, (σ Є ∑). (Kelley,
1995, 30)
Como ya se menciono en párrafos anteriores las cadenas son una secuencia de
símbolos sobre un alfabeto, de tal manera que el valor “00365” es una cadena sobre el
alfabeto numérico; cuya longitud es finita y por lo tanto contable. La longitud de una
cadena se define como el número de símbolos por los cuales esta constituida y se representa
mediante la notación c donde c es la cadena anterior y cuya longitud es igual a 5 ( c =5).

(Kelley; 1995, Pág. 32) Dentro del conjunto de cadenas obtenidas de un alfabeto se
encuentra la cadena vacía que es una secuencia vacía de símbolos cuya longitud esta
determinada por ε = 0 (Kelley, 1995, Pág. 32), y forma parte de cualquier conjunto de

palabras obtenidos sobre un alfabeto, nótese también que cada símbolo del alfabeto es una
cadena cuya longitud es igual a 1.

Un lenguaje es un conjunto de palabras o cadenas de un alfabeto (Martin, 2004, Pág.


28), así pues, el lenguaje español esta constituido por más de 35,000 palabras o cadenas
provenientes del alfabeto. De tal manera se puede decir que, sí ∑ es el alfabeto español y w
una cadena del alfabeto, entonces w pertenecerá a el lenguaje español L (w Є L), es decir,
si w = “humanidad” y el lenguaje L = {hombre, mujer, niño, niña, joven, adulto,
humanidad}, entonces humanidad Є {hombre, mujer, niño, niña, joven, adulto, humanidad}.
Sin embargo, el lenguaje natural usado para hablar no puede ser utilizado como tal en el
estudio científico de la computación debido a la gran variedad de palabras que lo
constituyen, y sobre todo por la carencia de reglas gramaticales fijas que rijan por completo
la creación de estas palabras. Los lenguajes que utilizaremos en el estudio de la
computación son los llamados lenguajes formales los cuales se rigen por reglas
gramaticales precisas, que a diferencia de la lenguajes naturales son establecidas antes de
crear el lenguaje lo que permite delimitación de éste; un ejemplo de los lenguajes formales
son los lenguajes de programación.
Dentro del concepto lenguajes se tiene el denominado lenguaje vacío compuesto de
cero cadenas, denotado de la misma manera que los conjuntos vacíos por Ø. (Kelley, 1995,
Pág. 31)

Teoría de la Computación 19
Instituto Tecnológico de Celaya Introducción

1.2.3.1 Concatenación

La concatenación de dos cadenas no es más que la unión física de ambas, de tal


manera que si c y b son cadenas del alfabeto español donde c = “casa” y b = “roja”, la
concatenación de éstas esta dada por la palabra “casaroja” = cb.

Una extensión de la concatenación es el concepto potencia de una palabra donde se


dice que una palabra elevada a un valor n es igual a la concatenación de esta palabra tantas
veces como indique el valor de n, es decir, si c = “ab” entonces

c3 produce la cadena “ababab”


c1 produce la cadena “ab”
c0 produce la cadena ε

(Kelley, 1995, Pág. 32)

matemáticamente podríamos definir el conjunto potencia como

 ε Si n = 0
c n =  n−1
cc Si n > 0

(Kelley, 1995, Pág. 32)

Ya para terminar de hablar sobre cadenas se ubicara el concepto inversa o transpuesta de


una palabra, que no es más que el reflejo de la imagen de la palabra en cuestión y esta
denotada por el uso de un subíndice I (cI). Por ejemplo, si c = “alfa” la inversa de c es
“afla”, la conversión completa de la palabra a su inversa estaría dada por la siguiente
secuencia. (Kelley, 1995, Pág. 33)

cI = (alfa)I = (lfa)Ia
= (fa)Ila

Teoría de la Computación 20
Instituto Tecnológico de Celaya Introducción

= (a)Ifla
= ( ε )Iafla
= afla

La concatenación de dos lenguajes E y I esta definido por la notación E • I, y se


forma por la unión física de cada cadena de E con cada cadena de I. Por ejemplo, si E = {1,
2} I = {hombre, mujer, niño, niña} entonces E • I = {1hombre, 1mujer, 1niño, 1niña,
2hombre, 2mujer, 2niño, 2niña} note que la concatenación puede llevarse a cabo con
lenguajes cuyo alfabeto es diferente. La concatenación también puede ser representada por
EI en lugar de E • I.

El concepto potencia aplicado a las cadenas es también empleado para los lenguajes,
aplicándose de la misma manera, de tal manera se tiene

 ε Si n = 0
En =  n −1
E • E Si n ≥ 0

(Kelley, 1995, Pág. 34)

Otra de las operaciones aplicadas a los lenguajes es la cerradura de Kleene o


estrella de Kleene, cuya representación esta dada por un asterisco como superíndice del
lenguaje ( E*). La cerradura de Kleene forma conjuntos que contienen la cadena vacía, las
cadenas del lenguaje y todas las posibles concatenaciones de las cadenas de este lenguaje
(Kelley, 1995, Pág. 37). Por ejemplo, si E = {1, 11, 12} la cerradura de Kleene de este
lenguaje esta dada por E* = { ε , 1, 11, 12, 12, 13…, 111, 112, 112, 113,…., 1112, 122,
123,..……..}.

Otro concepto muy parecido a la cerradura de Kleene es la cerradura positiva (E+) la


cual es desarrollada de la misma manera, excepto por que esta cerradura positiva no incluye

Teoría de la Computación 21
Instituto Tecnológico de Celaya Introducción

la cadena vacía E+ = {1, 11, 12, 12,13…, 111, 112, 112, 113,…, 1112, 122, 123,..……..}.
(Kelley, 1995, Pág. 37)
Una vez que han sido introducidos estos conceptos puede definirse formalmente un
lenguaje.

Formalmente un lenguaje es un subconjunto A*, conocido como lenguaje


universal, donde A es un conjunto finito de elementos que es conocido como el
alfabeto del lenguaje. (Kelley, 1995, Pág. 31)

Ó dicho en otras palabras, un lenguaje es el subconjunto de un monoide. Un monoide


se define como una estructura algebraica, que presenta el par (M,*), donde M es un
conjunto, y * una operación que cumple con las siguientes características:

♦ Es cerrada en M, es decir, el resultado de a*b pertenece a M para cualesquiera a y b


de M.
♦ Cuenta con una identidad, es decir, un elemento "Є" tal que cumple a*Є=Є*a=a.
♦ La operación * es asociativa.

(http://es.wikipedia.org/wiki/Monoide, junio del 2006)

Al igual que en las cadenas, el concepto de inversa o transpuesta es también aplicado


a los lenguajes con el mismo procedimiento; así como todas las operaciones aplicadas a los
conjuntos (unión, intersección, complemento).

Hasta este momento se han representado lenguajes comunes cuyas cadenas se


encuentran formadas por símbolos bien definidos pero que pasa, si se desean representar
lenguajes cuyas cadenas se encuentran formadas por uno o dos símbolos y cuyas
concatenaciones son muy amplias como los conjuntos obtenidos en la cerradura de Kleene,
la representación de estos sería muy laboriosa o confusa, por tal motivo se debe de aprender
a representar estos lenguajes mediante formulas pequeñas como por ejemplo; sí L es un

Teoría de la Computación 22
Instituto Tecnológico de Celaya Introducción

lenguaje cuyos elementos son {xxyy, xxxyy, xxxyyy, xxxxyy, xxxxyyy, xxxxyyyy,
xxxxxyy, xxxxxyyy,……..} podría ser también representado por L = {xi yj │i ≥ j > 1}, ya
que si observamos las características del lenguaje, podría deducirse que en la mayoría de
las cadenas se muestra un mayor número de x que de y, sin embargo existen algunos casos
donde son iguales, además el número mínimo de veces que se muestran tanto las x como
las y es de 2.

Así pues algunos ejemplos de lenguajes son:

a) L1 = { ai bj │i , j > 1 }
b) L2 = { ai bj ax by │i ≥ j >1, 1< x ≤y }
c) L3 = { ai bj cq │q=2i+j y i, j ≥ 0 }
d) L4 = { ai c2i │i ≥ 0 }

1.2.3.2 Operaciones con Lenguajes

Como ya se menciono los lenguajes son subconjuntos de elementos por lo cual las
operaciones de unión, intersección y complemento son también aplicables.(Kelley, 1995,
Pág. 35) Por ejemplo, considere los lenguajes L1 y L2 cuyos elementos son:

L1 = {aa, aaaa, aaaaaa, aaaaaaaa}


L2 = {bb, bbbb, bbbbbb, bbbbbbbb}

La unión de estos dos lenguajes es igual a:

L1 ∪ L2 = {aa, aaaa, aaaaaa, aaaaaaaa, bb, bbbb, bbbbbb, bbbbbbbb}

La intersección esta dada por:


L1 ∩ L2 = {Ø}

Teoría de la Computación 23
Instituto Tecnológico de Celaya Introducción

ya que no existe ningún elemento en común entre ambos lenguajes. Finalmente la


operación de complemento aplicada a estos lenguajes es

L1 - L2 = { aa, aaaa, aaaaaa, aaaaaaaa }


L2 – L1 = { bb, bbbb, bbbbbb, bbbbbbbb }

Como puede verse la ejecución de estas operaciones da como resultado la creación de


nuevos lenguajes por lo que los lenguajes originales se convierten en sublenguajes, es decir
la unión de L1 ∪ L2 producirá un nuevo lenguajes donde L1 ⊆ L2 y L2 ⊆ L1. Tal
aseveración puede observarse en la figura 1.15

aa aaaa bb bbbb
aaaaaa bbbbbb
aaaaaaaa bbbbbbbb

Conjunto A Conjunto B

aa aaaa
aaaaaa aaaaaaaa
bb bbbb bbbbbb
bbbbbbbb

Conjunto B ∪ A

Figura 1.15 Unión de L1 y L2

Teoría de la Computación 24
Instituto Tecnológico de Celaya Introducción

1.3 INDUCCIÓN MATEMATICA.

Las ciencias matemáticas contienen varios conjuntos de números, por ejemplo, el


conjunto de números reales, el conjunto de números reales negativos, el conjunto de
números naturales el cual contiene los valores enteros del {0,1,2,3,………..}, este conjunto
representa el denominado principio de inducción matemática el cual constituye una
referencia para generar pruebas sobre supuestos o proposiciones matemáticas. (Kelley,
1995, Pág. 19)

El principio de inducción matemática permite la comprobación por inducción de


proposiciones cuyos valores estén en función de un valor n, en donde para demostrar la
validez de la proposición n debe de satisfacer:

1. Que la proposición sea verdadera para n = 0


2. Y si la proposición es verdadera para n > 0, debe también serlo para n + 1

(Kelley, 1995, Pág.19)

En particular para el estudio de los conjuntos, la prueba de inducción será usada para
probar que cierta propiedad es valida para todos los elementos de un conjunto finito. (Brena,
2003, Pág. 15)

Las pruebas de inducción matemática se dividen en dos partes, la primera es el paso


básico seguido del paso de inducción. En esta segunda etapa se hace la suposición de que n
es un número mayor de cero (n>0), a esta premisa se le denomina hipótesis de la inducción.
(Kelley, 1995, Pág. 19). Para aplicar esta prueba sobre los conjuntos primero se especifica
la propiedad que se desea probar y se supone que es cierta para todo el conjunto. El
segundo paso es probar que la propiedad es verdadera para el elemento 0 de dicho conjunto
(siendo éste el denominado paso base de inducción); una vez comprada la prueba para el
primer elemento, se supone que la prueba es cierta para cualquier elemento i (hipótesis de

Teoría de la Computación 25
Instituto Tecnológico de Celaya Introducción

la inducción), posteriormente se verifica que la prueba sea cierta para el elemento i + 1.


Una vez que ambos pasos han sido comprobados se puede concluir que la propiedad es
cierta para todos los elementos del conjunto y se finaliza la prueba. (Brena, 2003, Pág.16)
Existen algunos casos en los que 0 no pertenece al conjunto de valores que probaran los
supuestos, en estos casos se debe de expresar una propiedad P(n) para todo n ≥ k, por lo que
la comprobación se realiza sobre ésta proposición.

Un ejemplo de la aplicación del principio de inducción matemática puede


observarse con la comprobación de la siguiente proposición “20 + 21 +…...+ 2n = 2n+1-1”
para todo n Є Ν1.

El primer paso a comprobar es el paso base, en el cual se trata de comprobar la proposición


para n = 0.

20 = 20+1-1
1 = 21-1
1 = 2-1
1 =1

La primera etapa ha sido verdadera, por lo cual se supone que también será verdadera para
n +1, es decir 20 + 21 +…...+ 2(n+1) = 2(n+1)+1-1 (hipótesis de la inducción). Lo cual hay que
comprobar, en el paso de inducción. Considere que n = 1

20 + 2(1+1) = 2(1+1)+1-1
1+22 = 22+1-1
1 + 4 = 6-1
5=5

La comprobación a sido verdadera, por lo cual se concluye que la proposición será


verdadera para todo n Є Ν.

1
Conjunto de enteros positivos.

Teoría de la Computación 26
Instituto Tecnológico de Celaya Introducción

1.4 AUTÓMATAS, COMPUTABILIDAD Y COMPLEJIDAD.

Dentro de la teoría de la computación se manejan varios supuestos, todos ellos


encaminadas al entendimiento y estudio de la ciencia computacional. Dos de estas teorías
son, la teoría de la computabilidad y la teoría de la complejidad.

La teoría de la computabilidad se ocupa de verificar la factibilidad de los problemas


para ser expresados como algoritmos (http://es.wikipedia.org/wiki/Complejidad_
computacional , diciembre del 2005), sin tomar en cuenta los recursos necesarios para ello.
Mientras que la teoría de la complejidad estudia los recursos requeridos para resolver un
problema. La primera teoría hace referencia a que tan calculable (computable2) puede ser
una función por un algoritmo; la segunda estudia los recursos de procesamiento como el
tiempo, el cual se describe como el número de pasos de ejecución de un algoritmo que se
usan para resolver un problema, para el cálculo exacto del número de pasos y el coste que
generan se utiliza la notación O; y el espacio que es la cantidad de memoria utilizada para
resolver un problema. (Glenn, 1993, Pág. 248) Aunque también pueden estudiarse otros
parámetros, tales como el número de procesadores necesarios para resolver el problema en
paralelo.

La teoría de la complejidad clasifica los problemas de acuerdo al tipo de modelo


computacional necesario para resolverlo. El modelo más popular es la máquina de Turing,
la cual será abordada en los capítulos posteriores a éste. Dentro de estos modelos se
encuentran los autómatas, que pueden definirse como maquinas abstractas cuyo
funcionamiento permite el reconocimiento de los distintos miembros de un lenguaje, estos
autómatas pueden parecer grafos dirigidos, donde los nodos son denominados como
estados, las aristas son denominadas transiciones y son rotulados con los elementos del
alfabeto de el lenguaje, dentro de estos autómatas existe un estado inicial y un conjunto de
estados de aceptación el cual indicará si los elementos del lenguaje examinado son los
correctos para el lenguaje o no lo son. En el capítulo siguiente se tratará más a fondo éste
concepto.
2
Se llama cómputable a la obtención de una solución o resultado a partir de ciertos datos, utilizando para ello
un proceso o algoritmo. ( Encarta, 2006 )

Teoría de la Computación 27
Instituto Tecnológico de Celaya Introducción

RESUMEN

El término conjunto es definido como una colección de objetos. Cada objeto es


llamado elemento o miembro del conjunto. Si M es un conjunto y L es un elemento de
este conjunto, se dice, que L ∈ M. En caso de que L no fuera un elemento del conjunto M
se escribiría L ∉ M. Un conjunto formado de varios elementos es representado mediante la
notación N = { a, e, i, o, u }; este conjunto también podría ser representando de la siguiente
manera N = {v:v es una vocal}, donde N equivale al conjunto de toda v tal que v es una
vocal, es decir, si v es una vocal, el conjunto de todas las vocales es igual a N; o bien, N =
{v│v es una vocal} donde la notación {v│ se lee como “el conjunto de todas las v tales
que” v es una vocal.

Dentro de los conjuntos existe el denominado conjunto vacío o conjunto nulo siendo
éste el conjunto ausente de elementos, representado por los corchetes vacíos {}, o bien por
el símbolo Ø.

Los conjuntos pueden ser clasificados en dos tipos los conjuntos finitos o infinitos.
Los primeros cuentan una cardinalidad conocida de 0 a X; llamamos cardinalidad al
número de elementos que forman un conjunto y es denotado por dos líneas verticales
paralelas que encierran al conjunto ││A││. Un conjunto infinito es aquel cuya
cardinalidad no es conocida.

Ya que se ha definido el concepto conjunto, consideré los conjuntos A = {1,2,3} y B


= {0,1,2,3,4,5,6}, puede darse cuenta que los elementos del conjunto A también son
elementos que se encuentran en el conjunto B, por lo que se dice que A es un subconjunto
de B, cuya notación es A ⊆ B. Entre los elementos de todo conjunto se encuentra el
conjunto vacío; por lo tanto, el conjunto vacío es un subconjunto de todos los conjuntos.

Dentro de la teoría de conjuntos es posible realizar una serie de operaciones las cuales
se concentran en tres: la unión, la intersección y el complemento.

Teoría de la Computación 28
Instituto Tecnológico de Celaya Introducción

Unión ∪ . La unión concentra los elementos de dos o más conjuntos, en un único


conjunto. Si A = {a, b, c} y B = {e, f, g} entonces A ∪ B = {a, b, c, e, f, g}; otra
manera de representar esta operación es A ∪ B = {x │x Є A o x Є B} que se lee la
unión de A con B es igual a todo el conjunto de todas las x, tal que x pertenece a A o
a B.

Intersección ∩ . La intersección de dos o más conjuntos, esta dado por la existencia


de elementos comunes entre conjuntos, es decir, el conjunto A = {a, b, c, d, e, f} y B
= {e, f, g, h, i, j, k}, los elementos de intersección de estos conjuntos son A ∩ B = {e,
f}; otra manera de representar esta operación de conjuntos es A ∩ B = {x │x Є A y x
Є B} que se lee la intersección de A con B es igual a todo el conjunto de todas las x,
tal que x pertenece a A y a B.

Complemento. Contiene todos los miembros que pertenecen a un conjunto, pero que
no forman parte de otro. Sí A = {a, b, c, d, e, f} y B = {e, f, g, h, i, j, k}, el
complemento de A con respecto de B es igual a {g, h, i, j, k}; otra manera de
representar esta operación de conjuntos es B – A = {x │x Є A y x ∉ B}.

Todos los conjuntos mostrados pertenecen a un conjunto principal denominado


conjunto universal (U). Los complementos realizados con el conjunto universal son
denotados por una tilde x . Sin embargo se debe hacer notar que el conjunto nulo no forma
parte de este conjunto universal, por lo cual 0 = U.

Algunas otras operaciones realizadas con conjuntos que vale la pena mencionar son:
el producto cartesiano de conjuntos y el conjunto potencia.

Conjunto potencia 2n. Este conjunto está constituido por todas las posibles
combinaciones de los elemento de un conjunto. Sí A = {a, b, c} el conjunto potencia
de A = {Ø, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}, note que el elemento vacío
o nulo también forma parte de este conjunto potencia. El total de elementos del

Teoría de la Computación 29
Instituto Tecnológico de Celaya Introducción

conjunto potencia es igual 2n donde n es la cantidad de elementos que componen el


conjunto original.

Producto Cartesiano *. El producto cartesiano de dos conjuntos esta dado por el


conjunto de todos los pares ordenados de A por B. Sí A = {a, b, c} y B = {e, f} el
producto cartesiano de A * B = {(a, e),(b, e),(c, e),(a, f),(b, f),(c, f)}, como puede
observarse el orden en que aparecen los elementos es de gran importancia. El total de
elementos en un producto cartesiano esta determinado por │A│ x │B│.

La creación de un producto cartesiano da paso a otro concepto, la relación. Una


relación es un subconjunto del producto cartesiano. Es decir, sí A = {a, b, c} y B = {e, f}
el producto cartesiano de A * B = {(a, e),(b, e),(c, e),(a, f),(b, f),(c, f)} por lo tanto una de
las relaciones es igual a R = {(a, e),(b, e),(c, e)}. Cada par ordenado (x, y) que forman esta
relación determina dos conjuntos, el conjunto dominio y el conjunto condominio o imagen,
respectivamente. Estas relaciones también pueden ser obtenidas del producto cartesiano de
un solo y único conjunto. Las relaciones cuentan con algunas propiedades que las
caracterizan como un tipo particular de relación. La primera de ellas es la propiedad
reflexiva que dice, que una relación R es reflexiva si para todo (x, x) Є R, x Є X. La
segunda propiedad es la simetría que dice, una relación R es simétrica sí para todo (x, y) Є
R existe un (y, x) Є R; una relación puede nombrarse antisimétrica si para cada (x, y) Є R
donde x ≠ y existe un (y, x) ∉ R. El cuarto tipo de relación que se resaltará es las relaciones
transitivas donde se menciona que si para cada (x, y), (y, z) Є R se tiene un (x, z) Є R.

Cuando una relación es transitiva, reflexiva y simétrica se dice que la relación es una
relación de equivalencia o de orden parcial.

Una relación puede contener características especiales, a este tipo de relaciones se les
conoce como una función. Una función f puede definirse como una relación donde existe
una dependencia entre los elementos de los conjuntos relacionados (A y B), ya que un
elemento del conjunto A solo puede relacionarse con un elemento del conjunto B. Es decir
para cada x Є A puede relacionarse con un elemento y Є B, (x, y) donde ambos pertenecen

Teoría de la Computación 30
Instituto Tecnológico de Celaya Introducción

a la relación que se denomina como función. Las funciones se representan con la notación f:
A → B; y pueden ser de tres tipos: sobreyectivas, inyectivas y finalmente biyectivas.

El término conjunto puede ser transportado al concepto alfabeto. Un alfabeto suele


estar constituido de un conjunto no vacío y finito de símbolos (a, b, 1, 3, ·, %,+`, [, ¿…). Un
alfabeto es considerado la fuente de una palabra o cadena, ya que ésta se describe como una
secuencia finita y contable de símbolos de un alfabeto. La longitud de una cadena se define
como el número total de símbolos por los cuales esta formada la cadena y se representa
mediante la notación c . A un conjunto de cadenas obtenidas de un alfabeto dado se le

denomina como lenguaje. Los lenguajes formales se rigen por reglas gramaticales precisas,
a diferencia de los lenguajes naturales cuyas reglas son establecidas antes de crear el
lenguaje.

Las ciencias matemáticas contienen varios conjuntos de números, por ejemplo, el


conjunto de números reales, el conjunto de números reales negativos, el conjunto de
números naturales el cual contiene los valores enteros del {0,1,2,3,………..}, este conjunto
representa el denominado principio de inducción matemática el cual constituye una
referencia para generar pruebas sobre supuestos o proposiciones matemáticas.

Dentro de la teoría de la computación se manejan varios supuestos, todos ellos


encaminadas al entendimiento y estudio de la ciencia computacional. Dos de estas teorías
son, la teoría de la computabilidad y la teoría de la complejidad.

La teoría de la computabilidad se ocupa de verificar la factibilidad de los problemas


para ser expresados como algoritmos, sin tomar en cuenta los recursos necesarios para ello.
Mientras que la teoría de la complejidad estudia los recursos requeridos para resolver un
problema.

Teoría de la Computación 31
Instituto Tecnológico de Celaya Introducción

GLOSARIO

♦ Conjuntos. Un conjunto se define como una colección de objetos. A cada uno de


los objetos que componen un conjunto se le llaman elementos o miembros del
conjunto. La notación usada para indicar que un elemento pertenece a un conjunto
es l Є M, donde l es un elemento del conjunto M. Para la representación de un
conjunto y de todos los elementos que lo forman se hace uso de las llaves {}, que
encierran en ellas, a todos los elementos que forman parte del conjunto, como se
muestra a continuación, M = {l, m, n, o, p}. Otra manera de representar un
conjunto es mediante el uso del símbolo “ | “ , por ejemplo M = {x | x es una letra
del alfabeto}, donde el símbolo “ | “ se lee como “tal que”; por lo tanto la
representación anterior se leería como “el conjunto M esta constituido de x
elementos tal que x es una letra del alfabeto”
♦ Cardinalidad. La cardinalidad define el número de elementos que forman un
conjunto, y esta denotada por el símbolo “|| “; de tal manera que la cardinalidad
de un conjunto estaría representada por || M || = 5.
♦ Conjuntos finitos. Es aquel cuya cardinalidad es igual a 0 o bien es una
cardinalidad conocida.
♦ Conjunto infinito. Es aquel cuya cardinalidad no es conocida.
♦ Subconjunto. Conjunto de elementos que forma parte de otro conjunto. El
símbolo usado para indicar que un conjunto es un subconjunto de otro es “ ⊆ ”.
♦ Unión ( ∪ ). Define como la concentración de los elementos de dos o más
conjuntos.
♦ Intersección ( ∩ ). La intersección es la existencia de elementos comunes entre
conjuntos.
♦ Complemento (-). Define los elementos que pertenecen a un conjunto, pero que
no se encuentran formando parte de otro.
♦ Producto cartesiano (*). El producto cartesiano de dos conjuntos esta dado por el
conjunto de todos los pares ordenados de los elementos de los conjuntos. Por

Teoría de la Computación 32
Instituto Tecnológico de Celaya Introducción

ejemplo, el producto cartesiano de loas conjuntos A y B es A * B = {(a, e),(b,


e),(c, e),(a, f),(b, f),(c, f)}
♦ Conjunto potencia (2n). Es un conjunto constituido por todas las posibles
concatenaciones de los elementos del conjunto a elevar, incluyendo el conjunto
vacío. El total de elementos del conjunto potencia esta dado por el valor resultante
de elevar 2 a una n potencia, donde n es el número total de elementos por el cual
está constituido el conjunto original.
♦ Relación. Una relación es un subconjunto del producto cartesiano aplicado sobre
un conjunto. Cada par ordenado (x, y) que forman una relación determina dos
conjuntos, el dominio y el condominio o imagen de la relación R, el dominio esta
determinado por todos los elementos x de la relación, mientras que el condominio
o imagen estaría determinado por todos los elementos y de la relación.
♦ Relaciones reflexivas. Una relación R es reflexiva si para todo (x,x) Є R donde x
Є X.
♦ Relaciones simétricas. Una relación R es simétrica si para todo par (x,y) Є R
existe un par (y,x) Є R.
♦ Relación antisimétrica. Una relación R es antisimétrica si para todo (x,y) Є R
donde x ≠ y existe un (y,x) ∉ R.
♦ Relación transitiva. Una relación R es transitiva si para cada (x,y)(y,z) Є R, existe
un par (x,z) Є R.
♦ Relación equivalente. Una relación R que es reflexiva, transitiva y simétrica se
denomina como una relación equivalente.
♦ Función. Una función se define como un relación R, donde para cada elemento de
x Є A existe un único elemento y Є B con el cual se relaciona.
♦ Funciones sobreyectivas. Las funciones sobreyectivas son aquellas cuyo
contradominio es igual al conjunto original del que se construye la función.
♦ Funciones inyectivas. Las funciones inyectivas o uno a uno, son aquellas donde
cada x Є A se relaciona con un único y Є B.
♦ Función biyectiva. Sí una función es sobreyectiva e inyectiva se le denomina
como una función biyectiva.

Teoría de la Computación 33
Instituto Tecnológico de Celaya Introducción

♦ Cadena. Se define a una cadena como la secuencia finita de símbolos de un


alfabeto.
♦ Longitud. La longitud de una cadena se define como el número de símbolos que
constituye dicha cadena y se representa mediante dos líneas verticales “||”, que
encierran a la palabra.
♦ Lenguaje. El lenguaje se define como el conjunto de palabras o cadenas de un
alfabeto.
♦ Concatenación. La concatenación se define como la unión física de las cadenas, el
símbolo que la denota es “ • “. La concatenación de dos lenguajes se obtiene de la
unión física de cada una de las cadenas de ambos lenguajes.
♦ Cerradura de Kleene (*). Si L es un conjunto, el concepto de cerradura de Kleene
permite formar un conjunto compuesto por todas las cadenas de pertenecientes a L,
por todas las posibles concatenaciones de estas cadenas y por la cadena vacía.
♦ Cerradura positiva (+). La cerradura positiva al igual que la cerradura de Kleene
permite la formación de conjuntos que contengan todas las cadenas de un lenguaje
dado, así como todas las posibles concatenaciones de ellas; sin embargo excluye
la existencia de la cadena vacía dentro de sus conjuntos.
♦ Principio de inducción matemática. Dicho principio permite la comprobación por
inducción de proposiciones cuyos valores estén en función de un valor n, el cual
debe de cumplir con dos condiciones:

1. Que la proposición sea verdadera para n = 0.


2. Si la proposición es verdadera para n > 0, debe también serlo para n + 1.

♦ Computabilidad. La teoría de la computabilidad se encarga de verificar la


factibilidad de los problemas para ser expresados como algoritmos.+
♦ Complejidad. La teoría de la complejidad estudia los recursos requeridos para
resolver un problema.
♦ Intersección. Punto o línea donde se cortan dos líneas. En nuestro caso lo
definimos como punto donde se cruzan dos conjuntos.

Teoría de la Computación 34
Instituto Tecnológico de Celaya Introducción

♦ Tilde. Signo ortográfico de figura en coma o rasguillo, que se pone sobre la ñ y


sobre algunas abreviaturas.
♦ Grafo. Unidad abstracta que comprende el conjunto de grafías de una letra.
♦ Abstracción. Conocimiento de una cosa presidiendo de las demás que están con
ella. Indica alguna cualidad de algún objeto.

Teoría de la Computación 35
Instituto Tecnológico de Celaya Introducción

EJERCICIOS

1. Represente los siguientes conjuntos usando la notación para conjuntos mostrada en


el apartado 1.2.1.
a. El conjunto de enteros positivos.
b. El conjunto de todos los enteros positivos menores a 20.
c. El conjunto de todos los enteros negativos mayores a 5 y menores a 15.
2. ¿Cual es la cardinalidad de los siguientes conjuntos?
a. {0}
b. {0,1,2,3}
c. {a,b,c,d,e,f}
3. Considere los conjuntos A = {1, 2, 3, 4, 5, 6} y B = {5, 6, 7, 8}. Calcule
correctamente las siguientes operaciones.
a. (A ∩ B)
b. (A ∪ B) – A
c. B – A
d. A – B
e. 2B
f. 2A
g. 2A ∪ B
h. A x B
i. A x A
4. Indique la longitud de cada una de las siguientes cadenas
a. Hoja
b. Silla
c. Piedra
d. fffffeeeefff
5. De cinco ejemplo de lenguajes basados en los conjuntos {4, 5, 7, 4, 9, 10,11}, {a, b},
{g, h, v}.
6. Exprese extensamente el conjunto {x|x Є N, x < 10}.

Teoría de la Computación 36
Instituto Tecnológico de Celaya Introducción

PROBLEMAS

1. Calcular los conjuntos potencia de los siguientes conjuntos.


a. {a, b}
b. {a, {b, c}}
c. {Ø}
d. {1 {2}}
2. Analice los siguientes lenguajes y realice correctamente las operaciones indicadas.

L1 = {xi yj │ i ≥ 0, j > 0} L2 = {xi-1 zj / i>1, j≥2}

Operaciones.

L1 ∪ L2 = L1 * =
L1 ∩ L2 = (L1 ∩ L2) ∪ L2 =

3. Considere la relación R = {(a,d)(b,d)(d,d)(c,b)}, siendo el dominio el conjunto A =


{a,b,c,d} y el condominio el conjunto B = {d, b}. Indique sí la relación es:
a. Una función.
b. Una función inyectiva.
c. Una función sobreyectiva.
d. Una función biyectiva.
4. Considere el conjunto C = {e, f, g, h} proponga algunas relaciones y algunas
funciones sobre éste conjunto.
5. Observe las siguientes relaciones cuya fuente es el conjunto A = {a, b, c, e, f}. Indique
si son relaciones reflexivas, transitivas o simétricas.
a. R1 = {(a,a)(a,b)(b,c)(c,e)(c,b)(e,c)}
b. R2 = {(a,a)(a,b)(b,b)(a,f)(c,c)(c,f)(f,e)(e,e)(f,e)(f,f)}
c. R3 = {(a,a)(a,b)(b,b)(b,a)(a,e)(e,e)(e,a)(e,c)(c,c)(b,e)(c,e)(e,b)(f,f)}
d. R4 = {(a,b)(b,a)(c,e)(e,c)(a,a)(c,c)}
6. Obtenga un nuevo lenguaje, a partir de los lenguajes mostrados en los incisos a y b.
Use la concatenación para tal fin.
a. {a, ab} y {a, bb, ba}
b. {ε, c} y {c, cc}

Teoría de la Computación 37
Instituto Tecnológico de Celaya Introducción

7. Considérese la función madre(x), que obtiene la madre (biológica) de cada persona.


Indica para esta función:
a. ¿Cuáles son el dominio y el codominio?
b. Si es una función inyectiva, sobreyectiva o biyectiva.
8. Considera el conjunto de números naturales tales que si son mayores que 5 o bien
terminan en 5, entonces contienen algún 1 o 2.
a. Propón 3 números que cumplan la condición y 3 que no la cumplan.
b. Expresa el enunciado como una fórmula, donde M significa “mayores que
5”, T es “terminan en 5”, U es “contienen algún 1” y D es “contienen algún
2”.

Teoría de la Computación 38
Instituto Tecnológico de Celaya Introducción

LECTURA COMPLEMENTARIA.

Lenguaje una forma de comunicación.

El concepto lenguaje en primera instancia es considerado como un medio de


comunicación, basado en signos orales y escritos que poseen un significado particular.
Desde un punto de vista común el lenguaje es considerado como la capacidad de habla
entre seres humanos, sin embargo, el concepto lenguaje se extiende a definiciones
matemáticas y de computación.

Alrededor de todo el mundo el lenguaje ha sido dividido en distintas lenguas, las


cuales cuentan con sus propios símbolos y reglas de comunicación. Ferdinand de Saussure
(1857-1913), lingüista suizo, considerado el fundador de la lingüística moderna; expone a
la lengua como un sistema de signos orales y escritos del que disponen los miembros de
una comunidad, y la cual no puede sufrir modificaciones. Sin embargo, Noam Chomsky,
(1928- ), lingüista, profesor y activista político estadounidense; cambio este enfoque y
considera a la lengua como un sistema cambiante, cuyas modificaciones pueden ser
realizadas por los hablantes. (Encarta, 2006) Éste enfoque suena lógico ya que al paso del
tiempo las lenguas han ido cambian y adecuándose a la sociedad; aunque algunas veces
dichos cambios no sean bien aceptados.

El lenguaje puede ser estudiado desde dos puntos de vista: según el uso o la estructura.
(Encarta, 2006)

De acuerdo al uso, los lenguajes se relaciones con otros campos, “como la literatura,
la comunicación de la información, la enseñanza de idiomas, la sociología, la ciencia
política y la psicología. Los estudios sobre el uso del lenguaje tratan sobre lo que dicen las
personas, lo que piensan que dicen y lo que significa aquello que escriben o dicen para
comunicarse. Todo ello incluye el análisis de los contenidos, la crítica literaria, el estudio

Teoría de la Computación 39
Instituto Tecnológico de Celaya Introducción

del cambio lingüístico y los factores sociales que determinan los comportamientos
lingüísticos de los miembros de una comunidad idiomática”. (Encarta, 2006)

La estructura del lenguaje concierne a la lingüística, cuya parte de su estudio se


enfoca a la sintaxis de la lengua; es decir, estudia la estructura del texto, asegurando que la
forma en que son ordenadas las palabras y las oraciones constituyan un todo coherente.
(Encarta, 2006) Éste es el enfoque que se estudia en la Teoría de la Computación, orientado
a los lenguajes de programación que han sido desarrollados para la comunicación entre
computadoras.

Un lenguaje de programación es definido como cualquier lenguaje artificial que puede


utilizarse para definir una secuencia de instrucciones que serán procesadas por una
computadora. La creación de dichos lenguajes involucra fundamentos matemáticos, y
estudios lingüísticos que son mencionados a lo largo de este libro.

Teoría de la Computación 40
Instituto Tecnológico de Celaya Introducción

BIBLIOGRAFÍA

1. Brena, verano 2003 Ramón Brena. Autómatas y Lenguajes. En:


http://lizt.mty.itesm.mx/~rbrena/AyL.html. Consultado por última vez en Abril del
2006.
2. Dean Kelley, mayo 1995 Dean Kelley: Teoría de autómatas y lenguajes formales.
Editorial: Prentice-Hall.
3. ENCARTA, 2006. Biblioteca de Consulta Microsoft Encarta. DE 1993 a 2005.
Editado por Microsoft Corporation.
4. Glenn. 1993. J. Glenn Brookshear. Teoría de la computación, lenguajes formales,
autómatas y complejidad. Editorial: Addison-Wesley
5. John Martin. 2004, John C. Martin. Lenguajes formales y teoría de la
computación. Editorial: Mc Graw Hill.
6. Johnsonbaugh, 2005, Richard Johnsonbaugh, Matemáticas discretas. Sexta edición.
Editorial: Pearson Education.
7. Winkipedia, 2005. Enciclopedia libre. Complejidad Computacional En:
http://es.wikipedia.org/wiki/Complejidad_computacional. Consulado por última vez:
diciembre del 2005.

Teoría de la Computación 41
Instituto Tecnológico de Celaya Introducción

RETROALIMENTACIÓN

Retroalimentación a los ejercicios.

1. a. A = {x│x Є Ν }

c. A = {x│x Є Ν y 5 < x <15}

2. a. 1
c. 6
3. a. {5,6}

c. {7,8}

e. {Ø, {5}, {6}, {7}, {8}, {5,6}, {5,7}, {5,8}, {6,7}, {6,8}, {7,8}, {5,6,7}, {5,7,8},
{5,6,8}, {6,7,8}, {5,6,7,8}}
h. {(1,5), (1,6), (1,7), (1,8), (2,5), (2,6), (2,7), (2,8), (3,5), (3,6), (3,7), (3,8), (4,5),
(4,6), (4,7), (4,8), (5,5), (5,6), (5,7), (5,8), (6,5), (6,6), (6,7), (6,8)}
4. a. 4
c. 6
5. a. Solo es una relación.

c. Es una relación reflexiva y simétrica.


6. a. Longitud igual a 4

c. Longitud igual a 6

Retroalimentación a los problemas.

1. a. {Ø,{a},{b},{a,b}}
c. { Ø }

2. L1 ∪ L2 = {x│x Є L1 o x Є L2}
L1 * = {∈, j, xy, xjj, xxjj, xxxjj, xxxjjj, ………. }

Teoría de la Computación 42
Instituto Tecnológico de Celaya Introducción

3. c. Una función sobreyectiva

5. a. Solo es una relación

c. Es reflexiva y simétrica.

7. a. El dominio esta constituido por todos los hijos (x), mientras que el condominio
esta constituido por todas las madres de x.

Teoría de la Computación 43
C
LENGUAJES
A
REGULARES
P
I OBJETIVO

T
Definir los lenguajes regulares, así como las
U expresiones y máquinas abstractas
(autómatas finitos) que permiten su
L representación y reconocimiento.

II
Instituto Tecnológico de Celaya Lenguajes Regulares

Expresiones Jerarquía de
regulares. Chomsky

Son descritos
Son representados

Lenguajes Regulares

Se dividen
Son reconocidos por

Lenguajes no regulares
Autómatas finitos
(AF)

Se clasifican

AF Determinista AF No determinista

Figura 2.1 Diagrama temático de la unidad II

Teoría de la Computación 45
Instituto Tecnológico de Celaya Lenguajes Regulares

2. LENGUAJES REGULARES

2.1 INTRODUCCIÓN.

La presente unidad permitirá al estudiante analizar los lenguajes regulares (LR), que
son considerados como el conjunto más pequeño de lenguajes y cuyas características los
hacen únicos. Dichos lenguajes pueden ser representados mediante expresiones regulares
(ER), que muestran de forma directa las cadenas de texto básicas, por las que está
constituido el lenguaje regular. Además sólo son reconocidos por un tipo de máquinas
abstractas denominadas autómatas finitos (AF), de las que existen dos tipos: los autómatas
finitos determinísticos y los autómatas finitos no determinísticos.

Un LR puede ser representado por varios AF ó bien por varias ER, en cuyo caso se
dice que existe una equivalencia de AF o bien de ER, dichas igualdades pueden ser
demostradas mediante la aplicación de las reglas de equivalencia ya establecidas, las cuales
son listadas en este apartado.

Como ya se dijo, los LR es el conjunto más pequeño de lenguajes que existe, ¿pero
como saber si un lenguaje es regular o no lo es?, esta pregunta puede ser respondida al
aplicar el conocido “Lema de Bombeo”; que demuestra si un lenguajes dado cumplen con
la propiedad de regularidad o simplemente es parte del conjunto de lenguajes no regulares.

Teoría de la Computación 46
Instituto Tecnológico de Celaya Lenguajes Regulares

2.2 AUTÓMATAS FINITOS.

En el capitulo anterior ya se ha mencionado de manera general los autómatas; un


autómata puede definirse como una máquina abstracta que permite el reconocimiento de los
elementos que constituyen un lenguaje. El diccionario hispano lo define como un
instrumento que encierra en su interior un mecanismo de movimientos secuénciales; es
decir, este instrumento es una representación de los eventos que se producen al realizar una
acción.

La representación de las etapas por las que pasa un estudiante para culminar sus
estudios y convertirse en un profesionista es una abstracción de los eventos que se realizan.
El estudiante tiene que pasar por varias etapas, primero cursa la primaria, pasa por
secundaria, preparatoria y profesional, una vez que haya concluido es aceptado como un
profesionista, sin embargo el orden de los eventos es crucial para el desarrollo del
estudiante, ya que no pudo cursar primero la preparatoria y posteriormente la primaria, ni
tampoco pudo saltar de una etapa a otra, todo se realizo en orden. Bien pues estas máquinas
abstractas que son denominadas como autómatas, permitirán representar estas secuencias
de eventos.

En particular los autómatas permiten el reconocimiento de lenguajes, de los cuales


existen diferentes tipos: los lenguajes recursivamente enumerables, los lenguajes libres del
contexto, independientes de contexto y los lenguajes regulares; la clasificación de estos
lenguajes se debe al tipo de reglas que rigen su construcción; dichas reglas son
denominadas gramáticas.

Cada regla que constituye a una gramática es una expresión del tipo α→β, donde α y
β representan cadenas, cuya cardinalidad y orden de elementos definirán el tipo de
gramática.

De manera formal se define a una gramática G, como un conjunto de cuatro


elementos G = (N, ∑, S, P); donde el primero de ellos es el conjunto de símbolos no

Teoría de la Computación 47
Instituto Tecnológico de Celaya Lenguajes Regulares

terminales, se les llama así a aquellos símbolos que permitirán la construcción de una
palabra a través de la sustitución continua de los mismo, su principal característica es que
son escritos siempre con letras mayúsculas; el segundo es el conjunto de los símbolos
terminales o alfabeto del lenguaje, estos símbolos siempre serán escritos con letras
minúsculas; el tercero es el conjunto del símbolo inicial de la gramática y el cuarto es el
conjunto de reglas o producciones3. Cada uno de los símbolos que forman una producción
puede ser un elemento terminal y/o no terminales. Para visualizar mejor esta idea, observe
la siguiente gramática. (Kelley, 1995, Pág.107)

S → aS
S → bS
S→b

La gramática mostrada presenta el conjunto de los elementos no terminales N = {S},


en éste caso solo se cuenta con un elemento “S” note que dicho elemento está escrito en
letras mayúsculas como se mencionó anteriormente; el conjunto de los elementos
terminales está constituido por ∑ = {a, b}, los cuales están escritos con letras minúsculas; el
conjunto del símbolo inicial es representado por S = {S}, y finalmente el conjunto de reglas
o producciones es P = { S → aS, S → bS, S → b}. Dicha gramática construye un lenguaje
constituido por palabras formadas por un indeterminado número de a’s, seguidas de b’s.

La clasificación de gramáticas más conocida es la del lingüista Noam Chomsky, el


cual muestra las reglas de cada lenguaje a través de una jerarquía.

2.2.1 Jerarquía de Chomsky

Chomsky, lingüista estadounidense creó un conjunto de reglas específicas para la


selección y construcción de lenguajes. Chomsky estableció cuatro categorías de gramáticas,

3
Se les llama así debido a la distinción de que α produce (→) a β.

Teoría de la Computación 48
Instituto Tecnológico de Celaya Lenguajes Regulares

las gramáticas regulares, las gramáticas independientes de contexto, las gramáticas


dependientes de contexto y finalmente las gramáticas de frase estructurada o
recursivamente enumerables (Kelley, 1995, Pág. 233); para las cuales definió las siguientes
características.

Gramáticas regulares. Las reglas de esta gramáticas tienen la forma α→β donde α
pertenece al conjunto de símbolos no terminal y cuya longitud debe de ser igual a uno;
β es una cadena, cuya longitud debe ser mayor o igual a α, además puede estar
constituida de un símbolo o variable terminal seguido de un no terminal, o bien
únicamente de una variable terminal, es decir β Є (∑ • N) ó β Є ∑. Este tipo de
gramáticas también es denominado gramática de tipo 3. (Martin, 2004, Pág.385)

Gramáticas independientes del contexto. Esta gramática presenta reglas de la forma


α→β, donde α debe de pertenecer al conjunto de símbolos no terminales y su longitud
debe de ser igual a uno; mientras que la longitud de β debe de ser mayor o igual a α,
además puede estar constituido por símbolos terminales o no terminales, es decir β Є
(∑ ∪ N)*. Esta gramática es también denominada gramática del tipo 2. (Martin,
2004, Pág.385)

Gramáticas dependientes del contexto. Las reglas de esta gramática presentan al


igual que las anteriores, reglas de la forma α→β sin embargo, la única restricción que
muestran es que la longitud de α debe ser menor o igual a la longitud de β, lo cual
puede traducirse en que α y β Є (∑ ∪ N)* mientras que |α| ≤ |β|. Este tipo de
gramáticas es también denominado como gramáticas de tipo 1. (Martin, 2004,
Pág.385)

Gramáticas de frase estructurada o recursivamente enumerables. Nuevamente


las reglas de esta gramática presentan la forma α→β, solo que este tipo de gramática
no presenta ningún tipo de restricción para α o para β, lo que se traducirse en que α y
β Є (∑ ∪ N)*. Estas gramáticas son también denominadas gramáticas de tipo 0.
(Martin, 2004, Pág.385)

Teoría de la Computación 49
Instituto Tecnológico de Celaya Lenguajes Regulares

La clasificación de estas reglas, como ya se menciono, permite la generación de nuevos


lenguajes. La creación de un lenguaje se basa en el reemplazo continuo de las reglas
gramaticales, llamándole a esta acción de sustitución derivación, y es representada por el
símbolo ⇒ . De tal manera que la gramática S → aS, S → bS, S → b; mostrada en páginas
anterior puede ser derivada de la siguiente manera:

Derivación 1 Derivación 2 Derivación 3

S → aS S → aS S → aS
S ⇒ aaS S ⇒ aaS S ⇒ aaS
S ⇒ aab S ⇒ aaaS S ⇒ aaaS
S ⇒ aaaS S ⇒ aaaaS
S ⇒ aaabS S ⇒ aaaaaS
S ⇒ aaabbS S ⇒ aaaaabS
S ⇒ aaabbb S ⇒ aaaaabbS
S ⇒ aaaaabbb

Como puede verse las derivaciones realizadas, obteniendo tres palabras diferentes que
formarán parte de un lenguaje regular, ya que la gramática de la que proceden es clasificada
como de éste tipo.

Los lenguajes regulares (LR) son denominados como la clase más pequeña de
leguajes, seguidos de los lenguajes libres del contexto, los lenguajes dependientes del
contexto y finalmente de los lenguajes recursivamente enumerables. Como se muestra en la
figura 2.2. (Brena; 2003, Pág. 19)

Los LR también pueden ser definidos de la siguiente manera. Dado un alfabeto ∑,


pueden obtenerse un conjunto de lenguajes regulares a partir del lenguaje vacío Ø, la
cadena nula (cuya longitud es igual a 0) { ∈ }, a partir de los lenguajes unitarios (cuya
cardinalidad sea igual a 1) { a }, y por todos los lenguajes obtenidos a partir de la

Teoría de la Computación 50
Instituto Tecnológico de Celaya Lenguajes Regulares

Lenguajes Lenguajes Lenguajes


Regulares libres de dependientes Lenguajes
contexto al contexto

Figura 2.2. Lenguajes

concatenación ( • ), unión ( ∪ ) y cerradura de estrella (*). (Kelley, 1995, Pág.49) Dicho de


otra manera para que un lenguaje se considere leguaje regular debe de cumplir con las
siguientes condiciones:

♦ El lenguaje debe de ser finito.


♦ El lenguaje es el resultado de la unión o concatenación de lenguajes regulares.
♦ El lenguaje es el resultado de la aplicación de la cerradura de Kleene para un
lenguaje regular.
(Brena, 2003, Pág. 80)

De tal manera que si el alfabeto de un lenguaje esta determinado por ∑ = {c, e, f}, algunos
de los leguajes regulares obtenidos de este alfabeto serían:

LR = Ø
LR = { ∈ }
LR = {e}
LR = {f}
LR = {c}
LR = {ce} ya que es la concatenación de {c} y {e}
LR = {e, f} ya que es la unión de {e} y {f}

Teoría de la Computación 51
Instituto Tecnológico de Celaya Lenguajes Regulares

LR = {c, ef, e, f}
LR = { ci │i≥0}
LR = {ei fi│i ≥ 0}
LR = { (ce)i│i ≥ 0}

El reconocimiento de las cadenas pertenecientes a estos lenguajes puede ser auxiliado


por la construcción de diagramas. Que como ya se mencionó en el capitulo anterior pueden
parecer grafos dirigidos a los cuales se les adiciona información sobre los elementos que
forman cada cadena del lenguaje. Los nodos de los grafos se transforman y se convierten en
estados, mientras que las aristas se convierten en transiciones y son rotuladas con los
elementos del lenguaje. Por ejemplo, consideremos el lenguaje regular representado por L
= { ei fj│i > 0 , j ≥ 0} del cual se obtienen las cadenas e , ef, eeeefff, eeee, el diagrama que
nos permitiría validar la estructura de estas cadenas comienza su ejecución en un estado
denominado estado inicial el cual se consideraría como estado vació, de éste a través de
una transición que reconozca el símbolo e permite la llegada a un estado; ésta operación
puede repetirse consecutivamente para cada elemento que constituye las cadenas, hasta
llegar a un estado que reconocerá la estructura completa de estas cadenas; a dicho estado se
le denomina estado de aceptación el cual se rótula con doble circulo como se muestra en el
diagrama de la figura 2.3. Dicho diagrama reconoce las cadenas antes mencionadas que
pueden estar formadas por una sola e, por muchas e’s, o por muchas e’s seguidas de
muchas f’s.

Figura 2.3 Diagrama de transiciones

El diagrama de transiciones anterior, es la representación del llamado autómata finito, ya


que como puede darse cuenta es una máquina abstracta cuya función es el reconocimiento
de los caracteres que forman las cadenas del lenguaje regular descrito en el párrafo anterior.

Teoría de la Computación 52
Instituto Tecnológico de Celaya Lenguajes Regulares

Dicho autómata finito es denominado así debido a que cuenta con un número determinado
de estados y solo reconocen a los denominados lenguajes regulares. Existen dos tipos de
autómatas finitos los deterministas y no deterministas.

2.2.2 Autómatas finitos determinísticos

Formalmente un autómata finito determinista (AFD) es una colección de cinco


elementos, un AFD = (Q,∑,s, F, δ) donde

♦ Q es una colección finita de estados.


♦ ∑ es el alfabeto de entrada.
♦ s es el estado inicial.
♦ F es el conjunto de estados de aceptación
♦ δ es una función δ: Q x ∑ → Q, la cual determina el único estado siguiente para el
estado actual a través de un símbolo de entrada.

(Kelley, 1995, Pág. 56)

Por ejemplo, el AFD correspondiente al diagrama de transición de la figura 2.3 estaría


representado por.

M = (Q,∑,s, F, δ) donde
Q = {q0, q1}
∑ = {e, f}
s = {q0}
F = {q1}
δ = {(q0, e) → q1, (q1, e) → q1,
(q1, f) → q1}

Teoría de la Computación 53
Instituto Tecnológico de Celaya Lenguajes Regulares

Otra manera de representar estos autómatas es mediante tablas de transición, estas


tablas son matrices cuyas columnas están formadas por los elementos de entrada o alfabeto
del autómata (∑), y cuyos renglones están constituidos por los estados que forman el
autómata, el estado inicial se marca con una flecha y el estado de aceptación con un
asterisco, por ejemplo, el autómata de la figura 2.3 estaría representado por la siguiente
tabla de transiciones. (Carrión, 2000, Pág. 21)

E f
q0 q1 error

* q 1 q1 q1

Figura 2.4 Tabla de transiciones

De manera inversa podría construirse un autómata a partir de una tabla de transiciones.


El primer paso a realizar es la creación de estados y etiquetarlo; el segundo paso a seguir es
la creación de las aristas en donde para cada estado contenido en la celdas (i, j), por
ejemplo t(1,1) = q1, correspondiente fila i, por ejemplo, t(1) = q0, trazando una arista de q0 a
q1. (Kelley, 1995, Pág.57) Por ejemplo, el diagrama de transiciones para el AFD definido
por N = (Q,∑,s, F, δ) donde

Q = {q0, q1, q2}


∑ = {a, b}
s = {q0}
F = {q2}
Y cuyas δ están representadas por

a b
q0 Q0 q1
q1 error q2
* q2 Q2 q2

Figura 2.5 Tabla de transiciones del AFD “N”

Teoría de la Computación 54
Instituto Tecnológico de Celaya Lenguajes Regulares

Está dado por

Figura 2.6. AFD “N”

Tal diagrama acepta todas las cadenas derivadas del lenguaje L(N) = {ai bj ak │i,k ≥ 0
y j es un número par mayor de 1}, observe que se ha introducido la notación L(N) que
indica que todas las cadenas producidas por éste lenguaje es aceptado por el autómata N.

2.2.2.1 Equivalencia de AFD

Se dice que dos AFD son equivalentes si los lenguajes que representan cada uno de
estos autómatas son iguales, si L(N1) = L(N2), es decir pueden ser representados por
distintos AF pero las cadenas del lenguaje que reconocen, son las mismas. Por ejemplo,
observe los dos autómatas mostrados en la figura 2.7. (Kelley, 1995, Pág.60)

Figura 2.7. AFD Equivalentes

Teoría de la Computación 55
Instituto Tecnológico de Celaya Lenguajes Regulares

Ambos autómatas reconocen el mismo lenguaje L = {anb│n ≥ 0}, sin embargo el más
adecuado es el autómata de la figura 2.7 a), ya que cuenta con un menor número de estados.
A este tipo de autómatas se les denomina autómatas equivalentes.

2.2.3 Autómatas finitos no determinísticos.

Los autómatas mostrados en el apartado anterior contaban con una característica en


particular, cada estado solo se cuenta con una única transición que llevaba de un estado a
otro por un único símbolo de entrada. Los autómatas finitos no determinísticos (AFN) no
cumplen con esta propiedad, ya que en un AFN se pueden encontrar estados con cero, una o
más transiciones cuyo símbolo de entrada sea el mismo. (Kelley, 1995, Pág. 61) Por
ejemplo, considere el autómata finito no determinístico que reconoce las cadenas formadas
por 0’s y 1’s de manera alternada (0001111000, 00000000, 1111111, 111000001110,
1100110010101), el cual esta representado por el diagrama de transición de la figura 2.8.

Figura 2.8 AFN

Como puede observase en ambos estados existen más de una transición rotulada con
el mismo símbolo de entrada, lo cual produce una ambigüedad.

Los autómatas finitos no determinísticos pueden definirse formalmente como una


colección de cinco elementos AFD = {Q, ∑, s, F, ∆} donde

♦ Q es una colección finita de estados.


♦ ∑ es el alfabeto de estrada.

Teoría de la Computación 56
Instituto Tecnológico de Celaya Lenguajes Regulares

♦ s es el estado inicial.
♦ F es el conjunto de estados de aceptación
♦ ∆ es una función ∆:(Q x ∑ ) x Q, llamada relación de transición.

(Kelley, 1995, Pág. 62)

Observe que la definición es prácticamente idéntica a la de los AFD, excepto por las
transiciones en las cuales se indica que existe una colección de cero o más transiciones con
el mismo símbolo de entrada para saltar al estado siguiente.

Con la anterior definición puede representarse formalmente el AFN de la figura 2.8


como M = (Q, ∑, s, F, ∆) donde
Q = {q0, q1}
∑ = {0,1}
s = {q0}
F = {q1}
Y cuyas ∆ están representadas por

0 1
q0 {q0, q1} q1

* q1 Error {q1, q0}

Figura 2.9 Tabla de transiciones del AFN M

Nótese que en las celdas de esta tabla se encuentran conjunto de estados lo que indica
la existencia de más de una transición a través del mismo símbolo que lleva a otro estado;
esta situación lleva a un estado de ambigüedad dentro del modelo, ya que al trasladarse de
un estado a otro y existen dos transiciones iguales no es posible determinar cual de las dos
llevará al destino deseado, por lo general en este tipo de autómatas se intuye que se tomará
la transición apropiada para el reconocimiento de las cadenas de un lenguaje. (Kelley, 1995,
Pág.63)

Teoría de la Computación 57
Instituto Tecnológico de Celaya Lenguajes Regulares

Al igual que en los AFD, los lenguajes que son reconocidos por un AFN se definen
como L(M) = {w │w es una cadena aceptada por M}. (Kelley, 1995, Pág. 64)

2.2.3.1 Equivalencia de AFD y AFN

De igual manera que los AFD, los AFN pueden ser equivalentes. La equivalencia de
un AFD con un AFN se da cuando un lenguaje a sido reconocido tanto por un autómata
finito determinístico N como por un autómata finito no determinístico de tal manera que L
(N) = L (N’) (Kelley, 1995, Pág.66). Un ejemplo de esta equivalencia se muestra en los
autómatas de la figura 2.10

Figura 2.10. a)AFD y b)AFN equivalente

Como puede observarse ambos autómatas reconocen el mismo lenguaje L = {an b ∪


abm│n, m ≥ 0}, sin embargo un autómata es determinístico mientras que el otro es un no es

Teoría de la Computación 58
Instituto Tecnológico de Celaya Lenguajes Regulares

determinístico. De tal manera se puede decir que dentro de los lenguajes aceptados un AFN
se incluye todos los lenguajes aceptados por AFN.

2.2.3.1 ε -Transiciones

Dentro de la construcción de AFN, puede encontrarse con el concepto de las ε -


transiciones, cuya función es de permitir el paso de un estado a otro sin consumir ningún
símbolo de entrada (Kelley, 1995, Pág. 70). Un ejemplo de este tipo de transiciones es
mostrado en la figura 2.11.

Figura 2.11. ε -Transiciones

El AFN mostrado en la figura anterior presenta una ε -transición que lleva del estado q1 al
estado de aceptación q2, lo que permita que dichos autómatas reconozcan cadenas
constituidas de solo a’s.

Las ε -transiciones involucran un cambio en la función de transición ∆, la cual se


asocia pares Q x (∑ x { ε }) x Q. (Kelley, 1995, Pág.71)

La tabla de transiciones que representa el AFN de la figura 2.11 muestra una columna
más para la cadena vacía. Figura 2.12

A B ε
q0 {q1} Error error

Teoría de la Computación 59
*
Instituto Tecnológico de Celaya Lenguajes Regulares

q1 {q1} {q2} {q2}


q2 error Error error

Figura 2.12 Tabla de ε -transiciones

La existencia de las ε -transiciones, permite la unión de dos autómatas finitos, lo cual


lleva a la construcción de nuevos lenguajes. Por ejemplo, se desea construir un AFN que
reconozca la unión de los lenguajes L1 = {(ab)n│n ≥ 0} y L2 = {(aba)n │ n ≥ 0} ( L1(M1) ∪
L2(M2) ). Cada uno de estos lenguajes es reconocido por diferentes autómatas como se
muestra en la figura 2.13 a) y 2.13 b).

Figura 2.13. Autómatas finitos. a) AFD para L1.


b) AFD para L2

Ambos AFD pueden ser unidos a través de ε -transiciones, para el reconocimiento de


ambas cadenas, como se muestra en la figura 2.14 (Carrión, 2000, Pág.45) Como se
observa en la figura, el AFN reconoce la unió de ambos lenguajes, a través de la función Q
x (∑ x { ε }) x Q.

Teoría de la Computación 60
Instituto Tecnológico de Celaya Lenguajes Regulares

Figura 2.14. L1 (M1) ∪ L2(M2)

Un segundo ejemplo de este tipo de transiciones es el siguiente, supóngase que se


desea unir dos lenguajes de tipo regular (L1 ∪ L2) con fin de obtener un lenguaje L3 mucho
más potente. El lenguaje L1 produce cadenas de un número indeterminado de x’s seguidas
de un número indeterminado de y’s; el segundo lenguaje produce cadenas de z´s cuya
longitud mínima es de dos; o bien cadenas de x’s cuya longitud mínima es de uno, seguidas
de z´s cuya longitud mínima es de dos; de tal manera que el nuevo autómata permitirá el
reconocimiento de cadenas del tipo: xxyy, xxxxyyyyy, zz, zzzzz, xzz, xxzzz, xxxzzzz,
xxxxxzzz. Dicho autómata es presentado en la figura 2.15.

Figura 2.15 Autómata finito reconocedor de L1 y L2

Teoría de la Computación 61
Instituto Tecnológico de Celaya Lenguajes Regulares

2.3 EXPRESIONES REGULARES.

En apartados anteriores los lenguajes han sido presentados mediante fórmulas, en las
cuales su ejemplificación puede no ser tan sencilla. Una manera más natural de expresar
estos lenguajes es mediante la construcción de expresiones regulares (ER). Estas
expresiones regulares no son más que la representación inicial de las palabras que forman el
lenguaje. Una ER puede definirse como:

Sea un alfabeto ∑. Las expresiones regulares (ER) sobre ∑ contienen las cadenas del
alfabeto ∑ unidos a la cadena vacía (“ ε ”), la unión (“+”), la concatenación (” • ”), las
cerraduras (”*”, “+”), a los paréntesis ( “(“,”)”), y al lenguaje vacío (”Ø”); y que cumplen
con las siguientes características:

1. “ ε ” y ” Ø” Є ER
2. Si σ Є ∑ entonces σ Є ER
3. Si E1, E2 Є ER, entonces “(“E1 “+” E2“)” Є ER, “(“E1“ • ” E2 “)” Є ER, “(“E1 “*”
E2 “)” Є ER.

(Brena, 2003, Pág. 81)

Por ejemplo, el lenguaje L = {an b │n ≥ 0 } puede ser representado como “(a* • b)” , o bien
tan a* b omitiendo los paréntesis, las comillas y la concatenación, que normalmente quedan
explícitos en la expresión regular. Algunos ejemplos de expresiones regulares son:

1. aa*b
2. (ab)*
3. (ab)+
4. c*(c*d)*
5. (a + b)*

Teoría de la Computación 62
Instituto Tecnológico de Celaya Lenguajes Regulares

Para que una expresión regular sea aceptada como tal debe de cumplir con dos
características, la primera es la corrección en donde las palabras que representa la ER
deben satisfacer la descripción del problema, es decir se debe validar que las cadenas
obtenidas de la expresión regular sea las requeridas por el lenguaje; la segunda
característica es la de la completes, la ER propuesta debe representar todas las palabras que
satisfagan la condición, ambas características se enfocan a que las cadenas que produzca la
ER debe satisfacer todas las condiciones del lenguaje que esta representado. (Brena, 2003
Pág. 83)

2.3.1 Equivalencia de expresiones regulares.

Ya se ha hablado de la equivalencia de autómatas, ahora se hablara de la equivalencia


entre ER. La equivalencia de ER se da cuando dos o más expresiones producen los mismos
lenguajes, tales equivalencias son mostradas a continuación.

1. R+S = S+R
2. R+Ø = Ø+R = R
3. R+R = R
4. (R+S) + T = R+(S+T)
5. R• ε = ε •R=R
6. R•Ø = Ø•R = Ø
7. (R•S)•T = R•(S•T)
8. R• (S+T) = R•S+R•T
9. (S+T)•R = S•R+T•R
10. R*= R*•R*= (R*)*= ( ε + R)*= R*(R + ε ) = (R+ ε )R*= ε +RR*
11. (R+S)* = (R*+ S*)*=(R*S*)*=(R* S)*R*=R*(SR*)* ≠ R*+ S*
12. RR*= R*R
13. R(SR)*=(RS)*R

Teoría de la Computación 63
Instituto Tecnológico de Celaya Lenguajes Regulares

14. (R* S)*= ε +(R+S)*S


15. (R S*)*= ε +R(R+S)*
16. S(R+ ε )* (R+ ε )+S=SR*

(Brena, 2003, Pág. 87)

Estas equivalencias pueden ser usadas para comprobar si dos ER producen el mismo
lenguaje. Por ejemplo, verificar que las ER (s + ε )* y s* son equivalente.

Comprobando.

(s + ε )* = r* por la equivalencia 1 que dice R+S =S+R tenemos

(s + ε )* = ( ε + s)* por la equivalencia 10 que dice R*= ( ε +R)* tenemos

(s + ε )* = s* por lo tanto las expresiones si son equivalentes.

2.4 LENGUAJES NO REGULARES

Los lenguajes estudiados hasta este momento han sido los denominados lenguajes
regulares, los cuales se ha dicho, son los únicos que pueden ser representados mediante
autómatas finitos y expresiones regulares. Pero, ¿cómo saber si un lenguaje L es regular o
no lo es?, antes de iniciar con la búsqueda de su expresión regular o bien de su autómata
finito; ya que como se sabe la clase de los lenguajes regulares es muy pequeña y por lo
tanto la posibilidad de que un lenguaje cualquiera sea regular es también escasa.

Una manera de comprobar la regularidad de un lenguaje es mediante el lema de bombeo,


cuya definición es la siguiente:

Teoría de la Computación 64
Instituto Tecnológico de Celaya Lenguajes Regulares

Si L es un lenguaje infinito; para el cual existe un entero n para cualquier w Є L, y


cuya longitud es mayor o igual a n (│w│≥ n), existen cadenas x, y, z tal que:
w =xyz
│xy│≤ n
│y│> 0
para cada xyi z Є L, donde i ≥ 0

(Martin, 2004, Pág.181)

La elección de la cadena w, es arbitraria la única condición que debe cumplir es que sea
mayor o igual a n. De la misma manera la elección de cómo dividir esta cadena en los tres
elementos es libre, solo se deben de cumplir con las condiciones de longitud para x y y.

La aplicación de este lema sobre un lenguaje comprobará la regularidad o no


regularidad del mismo, siempre y cuando cumpla con la propiedad descrita.

Demostremos la funcionalidad de este lema a través de un ejemplo. Consideremos el


lenguaje L = {ai bj cj │i, j > 0} que produce cadenas como abc, abbcc, aabbbccc, aabbbccc,
cuya característica principal es que exista el mismo número de b’s que de c’s. Apliquemos
el lema del bombeo para verificar si el lenguaje es un lenguaje regular, considérese que n
es la constante mencionada en el lema y además que n = j y w = aabbbccc cuya longitud es
mayor a n. Ahora w se divide en x = aa, y= b y z=bbccc, donde │xy│≤ 3 y │y│ > 0; si
elevamos yi donde i=3, obtenemos la cadena aabbbbbccc la cual no pertenece al lenguaje
inicial, por lo tanto este es un lenguaje no regular.

Teoría de la Computación 65
Instituto Tecnológico de Celaya Lenguajes Regulares

RESUMEN

Un autómata puede definirse como una máquina abstracta que permite el


reconocimiento de los elementos que constituyen un lenguaje. Los lenguajes pueden ser
clasificados en cuatro tipos deferentes: los lenguajes recursivamente enumerables, los
lenguajes libres del contexto, independientes de contexto y los lenguajes regulares; la
clasificación de estos lenguajes se debe al tipo de reglas que rigen su construcción; dichas
reglas son denominadas gramáticas.

Cada regla que constituye a una gramática es una expresión del tipo α→β, donde α y
β representan cadenas, cuya cardinalidad y orden de elementos definirán el tipo de
gramática.

De manera formal se define a una gramática G, como una 4-tupla G = (N, ∑, S, P);
donde el primero de ellos es el conjunto de todos los símbolos no terminales, su principal
característica es que son escritos siempre con letras mayúsculas; el segundo es el conjunto
de los símbolos terminales o alfabeto del lenguaje, estos símbolos siempre son escritos con
letras minúsculas; el tercero es el conjunto del símbolo inicial de la gramática y el cuarto es
el conjunto de reglas o producciones de dicha gramática. Cada uno de los símbolos que
forman una producción puede ser un elemento terminal y/o no terminales.

La clasificación de gramáticas más conocida es la del lingüista Noam Chomsky, el


cual muestra las reglas de cada lenguaje a través de la jerarquía de Chomsky presentada a
continuación.

Gramáticas regulares. Las reglas de esta gramáticas tienen la forma α→β donde α
pertenece al conjunto de símbolos no terminal y cuya longitud debe de ser igual a uno,
y β es una cadena de terminales y no terminales, cuya longitud debe ser mayor o igual
a α.

Teoría de la Computación 66
Instituto Tecnológico de Celaya Lenguajes Regulares

Gramáticas independientes del contexto. Esta gramática presenta reglas de la forma


α→β, donde α debe de pertenecer al conjunto de símbolos no terminales y su longitud
debe de ser igual a uno; mientras que la longitud de β debe de ser mayor o igual a α, y
puede estar constituido por símbolos terminales o no terminales.
Gramáticas dependientes del contexto. Las reglas de esta gramática presentan,
reglas de la forma α→β sin embargo, la única restricción que presentan es que la
longitud de α debe ser menor o igual a la longitud de β, lo cual puede traducirse en
que α y β Є (∑ ∪ N)* mientras que |α| ≤ |β|.
Gramáticas de frase estructurada o recursivamente enumerables. Nuevamente
las reglas de esta gramática presentan la forma α→β, solo que éste tipo de gramática
no presenta ningún tipo de restricción para α o para β.

La clasificación de estas reglas, como ya se menciono, permite la generación de


nuevos lenguajes. La creación de un lenguaje se basa en el reemplazo continuo de las reglas
gramaticales, llamándole a esta acción de sustitución derivación, y es representada por el
símbolo ⇒ .

Dado un lenguaje ∑, pueden obtenerse un conjunto de lenguajes regulares (LR)


formados por el lenguaje vacío Ø, por todos los lenguajes unitarios { ∈ }, y por todos los
lenguajes obtenidos a partir de la concatenación ( • ), unión ( ∪ ), cerradura de Kleen (*) y
cerradura positiva (+), de estos lenguajes unitarios. Dicho de otra manera para que un
lenguaje se considere leguaje regular debe de cumplir con las siguientes condiciones:

♦ El lenguaje debe de ser finito.


♦ El lenguaje es el resultado de la unión o concatenación de lenguajes regulares.
♦ El lenguaje es el resultado de la aplicación de la cerradura de Kleene para un
lenguaje regular.

El reconocimiento de las cadenas pertenecientes a estos lenguajes puede ser auxiliado


por la construcción de diagramas. Estos diagramas son denominados autómata finito, y se

Teoría de la Computación 67
Instituto Tecnológico de Celaya Lenguajes Regulares

define como puede darse cuenta es una máquina abstracta cuya función es el
reconocimiento del lenguaje.

Existen dos tipos de autómatas finitos los deterministas y no deterministas.

Formalmente un autómata finito determinista (AFD) es una colección de cinco


elementos, un AFD = (Q,∑,s, F, δ) donde

♦ Q es una colección finita de estados.


♦ ∑ es el alfabeto de entrada.
♦ s es el estado inicial.
♦ F es el conjunto de estados de aceptación
♦ δ es una función δ:Q x ∑ → Q, la cual determina el único estado siguiente para el
estado actual a través de un símbolo de entrada.

Puede observar un ejemplo de esta representación, en la pagina 53 de este capitulo.

Otra manera de representar estos autómatas es mediante una tabla de transición, este
tipo de tablas son matrices cuyas columnas están formadas por los elementos de entrada o
alfabeto del autómata (∑), y cuyos renglones están constituidos por los estados que forman
el autómata, el estado inicial se marca con una flecha y el estado de aceptación con un
asterisco.

De manera inversa podría construirse un autómata a partir de una tabla de transiciones.


El primer paso a realizar es la creación de estados etiquetados; el segundo paso es la
creación de las aristas en donde para cada estado contenido en la celdas (i, j),
correspondiente fila i, se traza una arista de qi al qi+1.

Los autómatas descritos anteriormente cuentan con una característica en particular,


cada estado solo se cuenta con una única transición que llevaba de un estado a otro por un
único símbolo de entrada. Sin embargo los autómatas finitos no determinísticos (AFN) no

Teoría de la Computación 68
Instituto Tecnológico de Celaya Lenguajes Regulares

cumplen con esta propiedad, ya que en un AFN se pueden encontrar estados con cero, una o
más transiciones cuyo símbolo de entrada sea el mismo, lo cual produce ambigüedad.

Los autómatas finitos no determinísticos pueden definirse formalmente como una


colección de cinco elementos AFD = {Q, ∑, s, F, ∆}, los cuatro primeros son idénticos a
los de un AFD, sin embargo las transiciones cambian si se convierten a la forma ∆:(Q x ∑ )
x Q, indicando que existe una colección de cero o más transiciones con el mismo símbolo
de entrada para saltar al estado siguiente.

Otra manera de expresar los lenguajes regulares de los que se han estado hablando es
mediante la construcción de expresiones regulares. Estas expresiones regulares es
construida con las cadenas de un alfabeto ∑, unidas con la cadena vacía (“ ε ”), la unión
(“+”), a la concatenación (” • ”), a las cerraduras (”*”, “+”), a los paréntesis ( “(“,”)”), y al
lenguaje vacío (”Ø”); y que cumplen con las siguientes características:

1. “ ε ” y ” Ø” Є ER
2. Si σ Є ∑ entonces σ Є ER
3. Si E1, E2 Є ER, entonces “(“E1 “+” E2“)” Є ER, “(“E1“ • ” E2 “)” Є ER, “(“E1
“*” E2 “)” Є ER.

Las ER pueden ser equivalentes entre ellas; tales equivalencias se muestran a


continuación.

1. R+S = S+R
2. R+Ø = Ø+R = R
3. R+R = R
4. (R+S) + T = R+(S+T)
5. R• ε = ε •R=R
6. R•Ø = Ø•R = Ø

Teoría de la Computación 69
Instituto Tecnológico de Celaya Lenguajes Regulares

7. (R•S)•T = R•(S•T)
8. R• (S+T) = R•S+R•T
9. (S+T)•R = S•R+T•R
10. R*= R*•R*= (R*)*= ( ε + R)*= R*(R + ε ) = (R+ ε )R*= ε +RR*
11. (R+S)* = (R*+ S*)*=(R*S*)*=(R* S)*R*=R*(SR*)* ≠ R*+ S*
12. RR*= R*R
13. R(SR)*=(RS)*R
14. (R* S)*= ε +(R+S)*S
15. (R S*)*= ε +R(R+S)*
16. S(R+ ε )* (R+ ε )+S=SR*

Se ha hablado ya de los lenguajes regulares como los únicos que pueden ser
representados mediante autómatas finitos y expresiones regulares. Pero, ¿cómo saber si un
lenguaje L es regular o no lo es? Una manera de comprobar la regularidad de un lenguaje es
mediante el lema de bombeo, cuya definición es la siguiente:

Si L es un lenguaje infinito; para el cual existe un entero n para cualquier w Є L, y


cuya longitud es mayor o igual a n (│w│≥ n), existen cadenas x, y, z tal que:
w =xyz
│xy│≤ n
│y│> 0
para cada xyi z Є L, donde i ≥ 0

La elección de la cadena w, es arbitraria la única condición que debe cumplir es que


sea mayor o igual a n. De la misma manera la elección de cómo dividir esta cadena en los
tres elementos es libre, solo se deben de cumplir con las condiciones de longitud para x y y.

Teoría de la Computación 70
Instituto Tecnológico de Celaya Lenguajes Regulares

GLOSARIO

♦ Autómata finito. Máquina abstracta que representa una cantidad finita de estados.
♦ Lenguajes regulares. Son denominados como la clase más pequeño de lenguajes,
y cuentan con las siguientes características:

1. Un lenguaje regular es finito.


2. Un lenguaje unitario, es regular.
3. Un lenguaje regular es el resultado de la unión o concatenación de lenguajes
regulares.
4. Un lenguaje regular es el resultado de la aplicación de la cerradura de
Kleene para un lenguaje regular.

♦ Diagrama de transición. Un diagrama de transiciones puede parecer un grafo con


información adicional. En el cual se los nodos son convertidos es estados y las
aristas en transiciones. Los diagramas de transición están constituidos de un
número determinado de estados, entre los que se encuentra un estado inicial y un
estado aceptación, rotulado por doble circulo, como se muestra en la figura 2.16

Figura 2.16 Diagrama de transiciones

♦ Autómatas finitos determinísticos. Formalmente un autómata finito determinístico


(AFD), es una colección de cinco elementos, (Q, ∑, s, F, δ), donde

- Q es una colección finita de estados.


- ∑ es el alfabeto de estrada.
- s es el estado inicial.
- F es el conjunto de estados de aceptación

Teoría de la Computación 71
Instituto Tecnológico de Celaya Lenguajes Regulares

- δ es una función δ:Q x ∑ → Q, la cual determina el único estado siguiente


para el estado actual a través de un símbolo de entrada.

♦ Tabla de transición. Matrices cuyas columnas están formadas por los elementos de
entrada o alfabeto del autómata (∑), y cuyos reglones están constituidos por los
estados que forman el autómata. El estado inicial del autómata en una tabla de este
tipo, es señalado con la flecha, mientras que el estado de aceptación es señalado
con un asterisco.
♦ Equivalencia de AFD. Se dice que dos AFD con equivalentes si los lenguajes que
representa son iguales L (N1) = L (N2).
♦ Autómatas finitos no determinísticos (AFN). Los AFN son autómatas que
contiene estados con cero, una o más transiciones cuyo símbolo de entrada es el
mismo. Un AFN puede definirse formalmente como una colección de cinco
elementos AFD = {Q, ∑, s, F, ∆} donde

- Q es una colección finita de estados.


- ∑ es el alfabeto de estrada.
- s es el estado inicial.
- F es el conjunto de estados de aceptación
- ∆ es una función ∆:(Q x ∑ ) x Q, llamada relación de transición.

♦ Equivalencia de AFD y AFN. La equivalencia de los AFD con los AFN se da


cuando un lenguaje a sido reconocido tanto por un AFD N como por un AFN N’
de tal manera que L (N1) = L (N2).
♦ ε -Transiciones. Las ε -transiciones tiene la función de permitir el paso de un
estado a otro sin consumir ningún símbolo de entrada.
♦ Expresiones regulares. Podemos definir a una expresión regular como, sea un
alfabeto ∑. Las expresiones regulares (ER) sobre ∑ son cadenas del alfabeto ∑
unidas a la cadena vacía (“ ε ”), a la unión (“+”), a la concatenación (” • ”), a las
cerraduras (”*”, “+”), a los paréntesis (“(“,”)”), y al lenguaje vacío (”Ø”); y que
cumplen con las siguientes características:

Teoría de la Computación 72
Instituto Tecnológico de Celaya Lenguajes Regulares

- “ ε ” y ” Ø” Є ER
- Si σ Є ∑ entonces σ Є ER
- Si E1, E2 Є ER, entonces “(“E1 “+” E2“)” Є ER, “(“E1“ • ” E2 “)” Є ER,
“(“E1 “*” E2 “)” Є ER.
♦ Lenguajes no regulares. Una manera de comprobar la regularidad de un lenguaje
es mediante el lema de bombeo, cuya definición es la siguiente: Si L es un
lenguaje infinito; para el cual existe un entero n para cualquier w Є L, y cuya
longitud es mayor o igual a n (│w│≥ n), existen cadenas x, y, z tal que:
w =xyz
│xy│≤ n
│y│> 0
para cada xyi z Є L, donde i ≥ 0

La aplicación de este lema sobre un lenguaje comprobará la regularidad o no


regularidad del mismo, siempre y cuando cumpla con la propiedad descrita.

Teoría de la Computación 73
Instituto Tecnológico de Celaya Lenguajes Regulares

EJERCICIOS.

1. De acuerdo a la jerarquía de Chomsky, clasifique las siguientes gramáticas.

a) A → aA b) S → ScS c) Z → yZ
A → bA S → SbS Z → xY
A → bB S→a Y → zY
B → cB Y→z
B → ccB
C→d

d) S → aSb e) S → AA f) S → eB
S → Eb AA → aAA S→e
E → aS AA → ε B → eB
E →ε AA → aB B → fB
B→a B→e
B → bB B→f
B →ε

2. Defina formalmente, ¿que es un lenguaje?

3. Defina formalmente una gramática.

4. Describa la clasificación de las gramáticas de acuerdo a Chomsky.

5. Conteste correctamente las siguientes preguntas.


a. ¿Cómo se relaciona un lenguaje con una gramática?
b. ¿Qué es una derivación?

Teoría de la Computación 74
Instituto Tecnológico de Celaya Lenguajes Regulares

PROBLEMAS

1. Diseñe los autómatas finitos determinístico, que reconozcan los siguientes lenguajes.
a. L = {xn ym zo │n,m,o ≥ 0}
b. L = { e fn e │n > 0}
c. L = {(aibbaj)k │i, j, k ≥ 0}
d. L = {x │x no contiene subacadenas aa o bb }
e. L = {w │w tiene cero o más a’s, un número par de b´s, seguidas
nuevamente de cero o más a’s }
2. Defina formalmente los AFD que construyo en la pregunta anterior.
3. Diseñe los autómatas finitos no determinísticos equivalentes que reconozcan los
lenguajes de la pregunta 1.
4. Construya un AF usando las transiciones ε, que reconozcan los siguientes lenguajes.
a. (aa ∪ aba)*
b. c*(a ∪ ac*)*
c. b* ∪ ab*a
5. Compruebe la regularidad de los siguientes lenguajes.
a. L = {xn yn zo │n,o ≥ 0}
b. L = {cn bbb │n > 0}
c. L = {bn a m cs │n,m,s >0}
d. L = {(kabba)k │i, j, k ≥ 0}
e. L1 = {ai bj │ i ≥ 0, j > 0}
6. Simplifique las siguientes expresiones regulares.
a. (ε ∪ aa)*
b. (ε ∪ aa) (ε ∪ aa)*
c. (a ∪ ε) a*b
d. a (ε ∪ aa)*a ∪ ε
e. (aa)* a ∪ (aa)*

Teoría de la Computación 75
Instituto Tecnológico de Celaya Lenguajes Regulares

7. Dado el AFD representado por

Q = {q0, q1}
∑ = {a,b}
s = {q0}
F = {q1}

Y cuyas ∆ están representadas por

A b
q0 {q0, q1} q1

* q1 Error {q0, q1}

Figura 2.17 Tabla de transiciones del AFD

Construir su diagrama de transiciones.

Teoría de la Computación 76
Instituto Tecnológico de Celaya Lenguajes Regulares

LECTURA COMPLEMENTARIA

Lingüística Computacional

La lingüística computacional, es una disciplina que estudia los sistemas


computacionales para la comprensión y generación de lenguaje natural. Históricamente, el
término se acuña en la década de 1960 en un contexto que vincula a esta disciplina a la
informática y, más concretamente, a la inteligencia artificial. Sin embargo, son muchas
otras las disciplinas que han contribuido a aquilatar su ámbito de estudio, las tecnologías
que utiliza, los presupuestos teóricos en que se apoya y los métodos de investigación que
aplica: desde la ingeniería eléctrica y electrónica o la lingüística hasta la psicología,
pasando por la lógica y la ciencia cognitiva.

Las aproximaciones al procesamiento automático de las lenguas naturales desde cada


una de estas ramas del saber humano son muy diferentes, tanto en su extensión como en el
enfoque adoptado. Así, la ingeniería eléctrica se ha interesado sólo en el procesamiento de
la señal acústica para el reconocimiento del habla y en el empleo de métodos numéricos, y
la lingüística en un enfoque teórico basado en métodos simbólicos que resulte un simple
remedo de los niveles de descripción de la gramática, en tanto que la informática ha
impuesto una visión aplicada, de ingeniería, que permita crear sistemas informáticos con
capacidades lingüísticas que los asemejen a los humanos. Esta disparidad de intereses y
objetivos ha enriquecido la disciplina, pero también ha introducido una variedad
terminológica importante, pues el término “lingüística computacional” coexiste con otros
como los de “procesamiento del lenguaje natural”, “ingeniería lingüística” o “tecnologías
del lenguaje humano”, por mencionar tan solo unos pocos.

Aunque esta disciplina recibe su nombre hace tan solo 40 años, en los 20 años
anteriores se ha ido configurando a partir de una serie de paradigmas fundacionales como la
teoría de autómatas, la teoría de la información y la teoría de lenguajes formales, así como
de la decepcionante experiencia adquirida en el desarrollo de los primeros sistemas de
traducción automática, primera aplicación no numérica llevada a cabo con los ordenadores

Teoría de la Computación 77
Instituto Tecnológico de Celaya Lenguajes Regulares

y, probablemente, una de las tareas humanas relacionadas con las lenguas más costosas y
difíciles de formalizar.

Además de las técnicas, propias o tomadas de otras disciplinas, los avances en


lingüística computacional han sido posibles gracias a la creación de recursos lingüísticos
como lexicones, gramáticas formales y corpus textuales, que han permitido aumentar el
grado de formalización de nuestro conocimiento de las lenguas naturales.

La lingüística computacional, en su enfoque práctico, persigue el desarrollo de


aplicaciones con capacidad lingüística, que pueden estructurarse en torno a cuatro ejes: la
mejora de la relación persona/ordenador, la comunicación entre las personas, la gestión de
la información y las herramientas de creación de documentación. En todos ellos, y no sólo
en el segundo, es posible añadir tanto una dimensión multilingüe como un componente de
procesamiento de habla (un conversor voz-texto o texto-voz).

En el primero de estos ejes se sitúan aplicaciones como el reconocimiento del habla


natural, es decir, continua, e independiente del hablante (que se utiliza en los sistemas de
dictado automático), la síntesis de voz (que escuchamos en algunos servicios de telefonía) y
la interacción con los ordenadores por medio de comandos de voz, pero también la
interrogación a bases de datos en lengua natural y el desarrollo de interfaces
multimodalidades que permitan utilizar todos los canales sensoriales y que favorezcan, por
tanto, la integración de los discapacitados.

La comunicación entre las personas se materializa en la traducción de lenguas


humanas. Junto a la traducción automática, uno de los sueños de la humanidad desde Blaise
Pascal y Gottfried Wilhelm von Leibniz, sólo alcanzado, de momento, en dominios
restringidos, han surgido otras ayudas a la traducción como los sistemas de memorias de
traducción (colecciones de pares de segmentos de traducción, que evitan la retraducción de
fragmentos ya traducidos).

La recuperación y la extracción de información relevante de fondos documentales es


otro de los ejes de aplicación de la lingüística computacional. La nuestra es todavía una

Teoría de la Computación 78
Instituto Tecnológico de Celaya Lenguajes Regulares

generación vinculada a la documentación textual como portadora fundamental de


información, por lo que la recuperación de documentos (realizada normalmente con
técnicas numéricas), la extracción de información estructurada a partir de un texto (para la
que suelen aplicarse técnicas simbólicas) o la generación automática de resúmenes de
textos (que suele emplear técnicas estadísticas y conocimiento heurístico sobre la estructura
del discurso) se consideran aplicaciones fundamentales hoy en día, especialmente si los
criterios para recuperar o extraer conocimiento pueden expresarse en otra lengua (es decir,
los sistemas poseen una dimensión multilingüe) y se vinculan a la gestión de información
procedente de Internet.

El último de los ejes de aplicación hace hincapié en la producción lingüística. Si


resulta indispensable disponer de mecanismos adecuados de gestión de la información es
porque producimos una gran cantidad de documentos en formato electrónico. Durante el
proceso de creación de estos documentos, también es posible intervenir desde la lingüística
computacional de manera que aspectos como la corrección lingüística, la adecuación
pragmática o la facilidad de traducción se tengan en cuenta. Así, los correctores
ortográficos, gramaticales y de estilo facilitan la identificación de errores en la escritura,
aunque de manera muy poco satisfactoria, de momento; y las herramientas de lenguaje
controlado permiten identificar el tipo de documento que se está escribiendo y sugerir
fórmulas habituales, así como reducir el tipo de palabras y la complejidad de las estructuras
empleadas en su redacción, lo que redunda en una mejora de resultados para un sistema de
traducción automática.

Artículo obtenido de:

Microsoft® Encarta® 2006. "Lingüística computacional." Microsoft Corporation, 2006.

Teoría de la Computación 79
Instituto Tecnológico de Celaya Lenguajes Regulares

BIBLIOGRAFÍA

1. Brena, verano 2003 Ramón Brena. Autómatas y Lenguajes. En:


http://lizt.mty.itesm.mx/~rbrena/AyL.html. Consultado por última vez en Abril del
2006.
2. Carrión Viramontes, 2000, Jorge Eduardo Carrión Viramontes. Lenguajes y
Autómatas. Primera edición. Editorial: ACD.
3. Dean Kelley, mayo 1995 Dean Kelley: Teoría de autómatas y lenguajes formales.
Editorial: Prentice-Hall.
4. ENCARTA, 2006. Biblioteca de Consulta Microsoft Encarta. DE 1993 a 2005.
Editado por Microsoft Corporation.
5. John Martin. 2004, John C. Martin. Lenguajes formales y teoría de la
computación Editorial: Mc Graw Hill.

Teoría de la Computación 80
Instituto Tecnológico de Celaya Lenguajes Regulares

RETROALIMENTACIÓN.

Retroalimentación a los ejercicios.

1. a) Gramática independiente del contexto o de tipo 2.


c) Gramática regular o de tipo 3.
e) Gramática recursivamente enumerable o de tipo 0.
3. Una gramática G es un tupla, representada por: G = (∑, N, S, P)
Donde
∑ es un alfabeto
N es una colección de símbolos no terminales
S es un símbolo no terminal llamado símbolo inicial y
P es una colección de reglas de sustitución, llamadas producciones.

5. Todo lenguaje formal esta definido por una gramática. El lenguaje es un conjunto
infinito y por lo tanto la finites o la infinites del lenguaje dependen de la gramática
que lo gobierne.

Retroalimentación a los problemas.

1. a.

c.

Teoría de la Computación 81
Instituto Tecnológico de Celaya Lenguajes Regulares

e.

3. a.

c.

e.

Teoría de la Computación 82
Instituto Tecnológico de Celaya Lenguajes Regulares

4. a.

c.

5. a. No es regular
c. Si es regular
e. Si es regular

7.

Teoría de la Computación 83
C
A LENGUAJES
P INDEPENDIENTES
I DEL CONTEXTO
T
U OBJETIVO

Definir los lenguajes libres de contexto, sus

L propiedades y las máquinas que permiten su

O
reconocimiento.

III
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Árbol de derivación.
Representan la derivación
de la gramática

Eliminación de factores
Son representadas comunes izquierdos.
Forma Normal de
Gramática Greibach
Libres del
contexto Técnica
Provienen
Transformándola la a

Lenguajes Estandarización
Una gramática GIC
Independientes del puede ser estandarizada
contexto.

Transformándola a la
Técnica

Forma Normal
Eliminación de recursividad Chomsky
izquierda.

Figura 3.1 Diagrama temático de la unidad III

Teoría de la Computación 85
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3. LENGUAJES INDEPENDIENTES DEL CONTEXTO

3.1 INTRODUCCIÓN

En la presente unidad se estudian los llamados lenguajes independientes del contexto,


su fuente y todas las propiedades con que cuentan.

Como ya se menciono en unidades anteriores las gramáticas independientes del


contexto deben su clasificación al lingüista Noam Chomsky, el describe las características
con que deben de contar. En la unidad que está por abordar se presentan nuevamente estas
gramáticas, su construcción y su representación a través de diagramas denominados
“Árboles de derivación”.

La existencia de dichos árboles permite observar una nueva característica de estas


gramáticas, la ambigüedad. La cual permite que las gramáticas produzcan palabras que
podrían no pertenecer al lenguaje del que se supone procede dicha gramática, lo que
produciría un grave error.

Cuando una gramática es descubierta como ambigua lo natural es que se desee


eliminar dicha ambigüedad, una técnica para la eliminación de este problema es la
búsqueda empír ica de una nueva gramática para el lenguaje, o bien pueden transformarse a
una forma normal, que no es otra cosa más que una estandarización de formato; en
particular de la forma en que aparecen ordenados los símbolos terminales y no terminales.

Finalmente se describen las máquinas abstractas que reconocen los lenguajes


producidos por estas gramáticas libre o independientes del contexto, ya que por sus
características no pueden ser reconocidos por un autómata finito; las máquinas de las que se
esta hablando son las denominadas como “Autómatas de Pila AP” que son estudiados al
final de la unidad.

Teoría de la Computación 86
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3.2 GRAMÁTICAS LIBRES DE CONTEXTO.

Así, como una empresa requiere de reglas firmes para que su desarrollo sea exitoso; la
creación de los lenguajes formales requiere también de la existencia de reglas gramaticales
que indiquen cual será su constitución. Dichas reglas son llamadas gramáticas.

La gramática se define como una rama de la lingüística, que estudia la forma y la


composición de las palabras. En particular la gramática, se estudia como un conjunto de
reglas que rigen el orden de las palabras en una oración. En el caso particular en el estudio
de la teoría de la computación las gramáticas son un conjunto de reglas del tipo a ? ß, que
rigen la construcción de las palabras pertenecientes a un lenguaje, y como se menciono en
la unidad pasada se sabe que las gramáticas están clasificadas en cuatro grupos. Sin
embargo no se sabe como son construidas, pues bien, una gramática puede ser construida
en base a las características que presentan las palabras pertenecientes a un lenguaje, o bien
en base a un autómata o máquina abstracta; tal construcción es presentada a continuación.

3.2.1 Construcción de gramáticas.

Una vez que se han definido los tipos de gramáticas se puede considerar que toda
gramática genera un tipo de lenguaje particular, el cual será constituido por todas las
posibles cadenas de variables terminales que sean obtenidas a través de una derivación a
partir de un símbolo inicial. Las gramáticas regulares (GR) construyen lenguajes regulares
como L = {e i f j¦ i > 0, j = 0} estudiado en la unidad anterior, y cuyo AF esta representado
en la figura 3.2

Figura 3.2. AF para el leguaje L L = {e i f j ¦ i > 0, j = 0}


Teoría de la Computación 87
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Sin embargo el lenguaje anterior no tiene establecida un conjunto de reglas que rijan su
construcción, por lo cual es conveniente que le construya n unas, para este fin se usará el
siguiente procedimiento.

La construcción de una gramática a partir de un AF se inicia por dividir el autómata


en partes; en el caso del autómata anterior se considerarán dos divisiones, las cuales son
mostradas en la figura 3.3, donde puede observarse que la primera transición construye
cadenas iniciadas con una e seguidas de algo más, lo cual puede ser representado por algún
otro símbolo, por ejemplo por B; o bien también muestra que puede construir palabras que
contengan solo una e; de tal manera que obtenemos las dos primeras reglas de construcción
S ? eB y S ? e donde S es el símbolo inicial de la gramática. La segunda parte del AF
produce e’s o bien f’s, por lo que B puede producir dos caminos diferentes, B ? eB o bien
B ? fB, la presencia de B en le lado derecho de la regla creada permite que las e´s y f´s se
repitan continuamente, finalmente se requiere de que las cadenas de dicho lenguaje
terminen con una e o una f para lo cuales crean las produccio nes B ? e y B ? f.

Figura 3.3. División de un AF

La gramática obtenida del AF de la figura 3.3 es:

S? eB
S? e
B ? eB
B ? fB

Teoría de la Computación 88
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

B? e
B? f

Como se ha visto el proceso de construcción de una gramática no es muy complicado, sin


embargo cabe la duda de saber, sí en realidad la gramática obtenida construye las mismas
cadenas que el AF del cual ha sido obtenida; de manera intuitiva se podría decir que ¡sí!,
ahora que si se desea obtener una repuesta basada en hechos, se pueden aplicar dos tipos de
pruebas; la prueba de corrección y la prueba de completez, las cuales se realizan en base a
la prueba de inducción matemática que ya se ha mencionado en unidades anteriores.

La prueba de corrección garantiza que todas las palabras que se producen al utilizar la
gramática, efectivamente corresponden a la descripción del lenguaje dado; basándose en la
longitud de la derivación. Mientras que la prueba de la completez se asegura que la
gramática produzca todas las palabras requeridas por el lenguaje. (Brena, 2003, Pág. 125)

Del mismo modo que dice que una GR produce un lenguaje regular (LR), se puede
decir que las gramáticas independientes del contexto (GIL), construyen lenguajes
independientes de contexto (LIC), de los cuales se hablará a continuación.

Como ya se menciono las GIL se caracterizan por que el lado derecho de sus
producciones a? ß no cuentan con alguna restricción en cuanto a los tipos de elementos
que deben fórmala, por lo que una gramática de este tipo puede ser:

S ? aCa
C ? aCa
C? b

Obsérvese que existe más de un símbolo terminal que aparece en la primera y segunda
producción, lo cual indica que la gramática no es de tipo regular. Para obtener las cadenas

Teoría de la Computación 89
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

del LIC y poder representarlo mediante una formula, se hace uso del concepto de
derivación que ya se ha mencionado en páginas anteriores, obteniendo la siguiente cadena.

S ? aCa
⇒ aaCaa
⇒ aaaCaaa
⇒ aaabaaa

De esta derivación se obtiene la palabra aaabaaa que pertenece al LIC, y sí se continua


derivando pueden obtenerse las cadenas: aabaa, aaaabaaaa, aaaaabaaaaa, etc., lo cual indica
que el lenguaje aquí presentado esta constituido por cadenas de la forma “aba” donde el
número de a’s que envuelven a b son iguales; por lo tanto, la formula que representaría
dicho lenguaje seria { an b an | n >0}.

3.3 ÁRBOLES DE DERIVACIÓN

Los árboles de derivación son denominados así ya que con ellos pueden ser
representadas cada una de las acciones de sustitución realizadas sobre una gramática, las
cuales, como ya se dijo son conocidas como derivaciones. Los árboles de derivación son
gráficos que están constituidos por nodos que son unidos entre si por medio de líneas
denominadas aristas; estas uniones construyen ramificaciones que se extienden de acuerdo
al número hijos con los que cuente cada nodo; dichos gráficos no deben de ser
desconocidos para el lector que ya cuenta la experiencia de cursos de programación
avanzada. (Kelley, 1995, Pág.117)

Estos árboles se construyen colocando en el nodo inicial o nodo raíz el símbolo


inicial de la gramática, el cual tendrá como nodos hijos cada uno de los símbolos que

Teoría de la Computación 90
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

produce, y estos a su vez producirán nuevos nodos hijos, siempre y cua ndo no se llegue a
tener como nodo hijo a un símbolo terminal, ya que en cuyo caso se tendría un nodo hoja.
(Kelley, 1993, Pág. 117) Por ejemplo, considérese la gramática siguiente:

S ? aCa
C ? aCa
C? b

Y la derivación

S ? aCa
⇒ aaCaa
⇒ aaaCaaa
⇒ aaabaaa

Se obtiene la cadena aaabaaa, y para la cual se busca su árbol de derivación. La creación de


este árbol inicia con la colocación del símbolo inicial S en la raíz del árbol y continua con
la creación de los nodos hijos que derivan de él, rotulados con las letras a, C, a como se
muestra en la figura 3.4. El símbolo no terminal C, solo puede producir a su vez, tres nodos
hijos, rotulados con los símbolos a, C, a; esta acción se repite una vez más para finalmente
realizar la sustitución de C por el símbolo terminal b; dando fin a la derivación. (Kelley,
1995, Pág.118)

Figura 3.4. Árbol de derivación

Teoría de la Computación 91
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Esta gramática a generado un único árbol de derivación y todas las derivaciones que
se generen de esta gramática en busca de la misma cadena producirá el mismo árbol de
derivación; sin embargo existen casos en los que una derivación puede ser realizada de
diferentes maneras, y por lo tanto producen árboles de derivación distintos. Un ejemplo de
este tipo de gramáticas es la siguiente:

S ? ScS
S ? SbS
S? a

(Kelley, 1995, Pág. 118)

la cual produce las siguientes derivaciones,

Derivación 1 Derivación 2

S ? ScS S ? SbS
S ⇒ SbScS S ⇒ SbScS
S ⇒ SbSbScS S ⇒ SbSca
S ⇒ abSbScS S ⇒ SbSbSca
S ⇒ ababScS S ⇒ SbSbaca
S ⇒ ababacS S ⇒ Sbabaca
S ⇒ ababaca S ⇒ ababaca

Dichas derivaciones tienen los árboles de derivación mostrados en la figura 3.5.

Teoría de la Computación 92
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

a) Árbol de derivación 1 b) Árbol de derivación 2

Figura 3.5. Árboles de derivación

Como puede observarse, está gramática produce dos árboles de derivación distintos en la
búsqueda de la misma cadena, cuando existen este tipo de casos se dice que la gramática de
la cual se ha derivado es una gramática ambigua (Kelley; 1995, Pág. 119), lo común es,
que se busque una gramática no ambigua que produzca el mismo lenguaje, evitando la
creación de cadenas con significado erróneo; sin embargo puede existir gramáticas cuya
ambigüedad no puede evitarse, en dicho caso se dice que el lenguaje producido es un
lenguaje independiente del contexto inherentemente ambiguo. (Kelley, 1995, Pág. 120)

3.4 FORMAS NORMALES DE CHOMSKY

La Forma Normal de Chomsky (FNC) restringe la constitución de una gramática. Una


gramática se encuentra en forma normal de Chomsky si no contienen producciones del tipo
A ? ε denominadas anulables, producciones del tipo A ? B donde ¦ B¦ = 1,
denominadas producciones unitarias las cuales solo agregan un paso extra a la derivación y
cuya existencia no tiene ningún sentido, y finalmente las producciones inútiles; además, el
resto de sus producciones son del tipo A ? a donde a ? ? , ó A ? AB donde ambos son
elementos no terminales. (Martin, 2004, Pág. 237)

Teoría de la Computación 93
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Para lograr que una gramática se encuentre en forma normal de Chomsky deben de
ser eliminadas las producciones no deseadas mencionadas en el párrafo anterior, para lo
cual se han planteado ya 4 tipos de algoritmos diferentes; que serán mencionados a
continuación.

3.4.1 Algoritmos de eliminación de producciones inútiles.

Dentro de una gramática pueden existir algunas producciones no deseadas como lo


son las producciones inútiles, dicho tipo de producciones suelen contener elementos que
posiblemente no deriven alguna cadena valida, como es el caso de la gramática siguiente:

S? aA
S? e
A? B
A? G
B? bC
C? aD
C? a
D? aA
E? aA
F? ab

Como puede observarse la gramática anterior presenta tres producciones cuya existencia no
tiene gran significado, ya que su derivación no produce cadenas de variables terminales
validas, como es el caso del no terminal E; y si las producen no hay manera de llegar a
dichos no terminales desde el símbolo inicial, como es el caso de D y F. Dichas
producciones deben ser eliminadas, con tal fin se presentan los siguientes dos algoritmos,
los cuales transformarán a una gramática G = (N, ? , S, P) en una gramática final G’= (N’,
? ’, S’, P’). (Kelley, 1995, Pág. 123)

Teoría de la Computación 94
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3.4.1.1 Algoritmo A

El presente algoritmo elimina las producciones del tipo B ? w donde w ? N, para


toda w que no pertenezca a (N’ ∪ ? )* .

1. Inicializar N’ con todos los no terminales A para los que A ? w, es una


producción de G, donde w ? ? * .
2. Inicializar P’ con todas las producciones A ? w para las cuales A ? N’ y
w ? ? *.
3. Repetir
Añadir a N’ todos los no terminales A para los cuales A ? w, para algún
w ? (N’ ∪ ? )* que sea una producción de P y añadirla a P’.
Hasta que no se pueda añadir más no terminales a N’.

(Kelley, 1995, Pág. 124)

3.4.1.2 Algoritmo B

El presente algoritmo elimina las producciones del tipo B ? w donde B ? N, para


toda B que pertenezca a N’.

1. Inicializar N’ con el símbolo inicial de la gramática, e inicializar P’ y ? ’ a


Ø.
2. Repetir
Para A ? N’, si A ? w es una producción en P, entonces:
a. Introducir A ? w en P’
b. Para todo no terminal B de w, introducir B en N’.
c. Para todo terminal s de w, introducir s en ? ’.
Hasta que no se puedan añadir nuevas producciones.

(Kelley, 1995, Pág. 125)

Teoría de la Computación 95
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Un aspecto importante que hay que hacer resaltar con respecto de los algoritmos aquí
mostrados, es el de el orden de aplicación, los algoritmos 3.4.1.1 y 3.4.1.2 deben de ser
aplicados en el orden que han sido mostrados, en caso contrario las gramáticas producidas
no desarrollarán los lenguajes para los cuales originalmente se construyeron. (Kelley, 1995,
Pág. 126)

Aplicando el algoritmo 3.4.1.1 a la gramática expuesta en la pagina anterior, se


obtiene la gramática G’ mostrada a continuación.

S? aA
S? e
A? B
B? bC
C? aD
C? a
D? aA
E? aA
F? ab

Observé que solo se ha eliminado una producción A ? E y se ha respetado la producción S


? e, ya que el símbolo e es admitido como un símbolo terminal (Kelley, 1995, Pág. 124),
sin embargo, aún quedan otras dos producciones que requieren ser eliminadas ya que
producen símbolos terminales y no terminales que nunca podrán ser alcanzados desde el
símbolo inicial, para tal fin se aplicará el algoritmo 3.4.1.2, obteniendo la siguiente
gramática G’.

S? aA
S? e
A? B
B? bC
C? aD
C? a
D? aA

Teoría de la Computación 96
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

La gramática obtenida produce el mismo lenguaje que la gramática original, en otras


palabras L(G) = L(G’), sin embargo aún no se encuentra en forma normal de Chomsky ya
que contiene producciones anulable y unitarias.

3.4.2 Algoritmos de eliminación de producciones anulables.

Para que una gramática pueda transformarse a la forma normal de Chomsky debe de
estar libre de producciones del tipo A ? e, las cuales son denominadas producciones
anulables. Este tipo de producciones suelen ser generadoras de ambigüedad o bien de
cadenas extremadamente largas (Brena, 2003, Pág. 128). La eliminación completa de este
tipo de producciones puede llevarse a cabo siempre y cuando el conjunto vacío e no
pertenezca al lenguaje independiente del contexto que construya la gramática en cuestión,
sin embargo, en algunos casos la existencia de esta cadena vacía puede ser indispensable
para el lenguaje, por lo cual las producciones S ? e no pueden ser completamente
eliminadas. Tal situación no debe impedir que la gramática en cuestión pueda ser
representada en la forma normal, por ello se permite la eliminación momentánea de dichas
producciones y la transformación de la gramática a una forma normal; una vez
transformada la gramática será agregada la producción S ? e correspondiente. De tal
manera se obtendrá el lenguaje original representado por L(G’) ∪ {e}. (Kelley, 1995,
Pág.128)

Para la eliminación de las producciones del tipo S ? e primero es necesario


identificar cada una de éstas producciones, para tal fin se muestra el algoritmo 3.4.1.2, que
identifica en un conjunto A, todos los símbolos no terminales anulables dentro de la
gramática G.

Teoría de la Computación 97
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3.4.2.1 Algoritmo A

1. Inicializar A con todos los no terminales B para los que existe una
producción e, es decir B ? e.
2. Repetir
Si B ? w para algún w ? (N ∪ ? )* y todos los símbolos de w están en
A, añadir B a A.
(Kelley; 1995, Pág. 127)
Hasta que no se pueda añadir más no terminales a A.

(Kelley, 1995, Pág.127)

Una vez identificados las variables anulables es posible eliminarlas mediante


derivación. Es decir, deben de ser sustituidas directamente las variables no terminales
anulables por las cadenas vacías correspondientes, lo que se crearán nuevas producciones.
(Brena, 2003, Pág. 129) Esta técnica será mejor comprendida con la aplicación de un
ejemplo, para lo cual se usará la siguiente gramática.

S? aSb
S? E
E? bD
D? e

Como puede observar, dicha gramática esta libre de producciones inútiles, sin
embargo contiene la producción D ? e, la cual es una producción anulable y al aplicar el
algoritmo 3.4.2.1 se observará que es la única producción de éste tipo.

El siguiente paso es búsqueda de aquellas producción donde es posible la sustitución


directa de D por la cadena vacía que esta produciendo, dicha producción es E ? bD, en la
que se sustituye D de la siguiente manera.

E ? bD
E ⇒ be
Teoría de la Computación 98
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

La nueva producción es E ? b, la cual es añadida a la gramática, mientras que la


producción anulable es eliminada, obteniéndose la siguiente gramática.

S? aSb
S? E
E? bD
E? b

Como se ve la eliminación de las producciones inútiles no es un procedimiento


complicado, basta con ser buen observador para identificar en donde se originan las
variables anulables y realizar su sustitución. En otras palabras, deben de ser identificadas
las producciones B ? sAß, donde A ? e; y añadir la producción B ? s ß, mientras que la
producción A ? e es eliminada. (Brena, 2003, Pág.129)

La eliminación de producciones anulables en la gramática anterior ha construido una


gramática equivalente cuyas derivaciones producen el mismo lenguaje que la presentada
por la gramática original dond e la cadena vacía no forma parte del lenguaje; sin embargo
existe otro detalle que para el lector perspicaz ha de ser inevitable observar, la
transformación de dicha eliminación a construido una producción inútil. Por lo cual, será
necesario aplicar los algoritmos 3.4.1.1 y 3.4.1.2 antes de continuar con la transformación.

Al aplicar el algoritmo 3.4.1.1 se elimina la producción inútil encontrada y se obtiene


la gramática

S ? aSb
S? E
E? b

cuya derivación produce cadenas, idénticas a las producidas por la gramática original, por
lo que la transformación ha sido exitosa.

Teoría de la Computación 99
Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Este método de eliminación puede ser aplicado a la gramática transformada


inicialmente por los algoritmos 3.4.1.1 y 3.4.1.2 y la cual es mostrada a continuación; solo
debe de hacerse notar que el le nguaje que construye esta gramática si requiere de la
existencia de la cadena vacía, por lo cual su eliminación será momentánea.

S? aA
S? e
A? B
B? bC
C? aD
C? a
D? aA

La eliminación de la cadena vacía de esta gramática no produce ninguna nueva


producción por lo que la nueva gramática es

S? aA
A? B
B? bC
C? aD
C? a
D? aA

3.4.3 Algoritmos de eliminación de producciones unitarias .

Dentro de una gramática pueden existir producciones del tipo A ? B, las cuales son
denominadas producciones unitarias (Kelley, 1995, Pág. 128) y cuya existencia dentro de
una gramática no tiene gran significado ya que solo agregan un paso más a la derivación;
por ejemplo, observe la gramática del ejemplo anterior.

Teoría de la Computación 100


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

S? aA
A? B
B? bC
C? aD
C? a
D? aA

En esta gramática S deriva aA, A deriva a B y B deriva bC; al realizar la sustitución, A


termina siendo sustituida por bC, con lo cual se concluye que la existencia de la producción
A ? B no tiene gran significado y puede ser eliminada.

La eliminación de una producción unitaria suele ser muy sencillo, basta con agregar
producciones del tipo A ? w, donde w es producida por B (B ? w), y B a su vez es
producida por A (A ? B), mientras que las producciones unitarias (A ? B) son eliminadas.
Un evento seguido a éste suele ser la aparición de nuevas producciones inútiles por lo cual
será necesario aplicar nuevamente los algoritmos de eliminación mostrados anteriormente.
(Kelley, 1995, Pág. 128)

Como se ha corroborado la eliminación de producciones unitarias de manera intuitiva


suele no ser tan complicado, sin embargo para una mayor precisión es conveniente hacer
uso de algoritmos como los que se muestran a continuación.

3.4.3.1 Algoritmo A

1. Si A? B es una producción, B es derivable de A.


2. Si C es derivable de A, C ? B es una producción y B ? A, entonces B es
derivable de A.
3. Si A ? A es una producción, A es derivable de A.
4. Ninguna otra variable es derivable.

(Martin, 2004, Pág.236)

Teoría de la Computación 101


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3.4.3.2 Algoritmo B

1. Inicializar P’ con todas las producciones en P.


2. Para cada A ? N (conjunto de variables no terminales), encontrar el
conjunto de variables derivables de A.
3. Para cada par (A, B) tal que B es derivable de A y cada producción no
unitaria B ? a, añadir la producción A ? a a P’.
4. Eliminar todas las producciones unitarias de P’.
(Martin, 2004, Pág.236)

El algoritmo 3.4.3.1 permite identificar todas las posibles variables unitarias candidatas a
ser eliminadas. Mientras que el algoritmo 3.4.3.2 elimina todas las producciones unitarias,
agregando las nuevas producciones. Al aplicar el algoritmo 3.4.3.2 a la gramática anterior
se obtiene la gramática G’

S? aA
A? bC
B? bC
C? aD
C? a
D? aA

En este caso la producción B ? bC se ha convertido en una producción inútil que puede ser
eliminada mediante el uso de los algoritmos 3.4.1.1 y 3.4.1.2, con lo cual se obtiene la
gramática.

S? aA
A? bC
C? aD
C? a
D? aA

Teoría de la Computación 102


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

La gramática anterior ya se encuentra libre de producciones inútiles, producciones


anulables y producciones unitarias, ahora puede procederse a transformar la gramática a la
forma normal de Chomsky. Como ya se menciono una gramática G, se encuentra en forma
normal si sus producciones son de la formas A ? s y A ? AB donde s ? ? , y A, B ? N .
(Martin, 2004, Pág. 237) Para cumplir con tal formato es necesaria la creación de nuevas
variables no terminales que ayuden a la sustitución de los elementos ya existentes. El crear
nuevas variables ayudará a transformar producciones del tipo A ? w, donde w ? (? ∪ N)*
y además ¦ w¦ > 2; por producciones del tipo A ? s. (Kelley, 1995, Pág.131)

La primera sustitución por lo general se realiza con las variables terminales, ya que
pueden tenerse más de una de estas variables en el lado derecho de la producción; así pues
pueden transformarse producciones del tipo A ? sß donde ambos son variables terminales,
por A ? BC, B ? s y C ? ß. (Martin, 2004, Pág. 238)

La segunda sustitución suele realizarse con las variables no terminales, donde pueden
sustituirse producciones del tipo A ? ABC por producciones del tipo A? AX1 y X1 ? BC.
(Martin, 2004, Pág.238) Para una mejor explicación se usará un ejemplo. Observe la
gramática siguiente

S ? aSb
S? b

Dicha gramática a sido limpiada de producciones anulables, inútiles y unitarias, por los
algoritmos antes mencionados; como puede notarse una de sus producciones ya se
encuentra en forma normal de Chomsky, mientras que la otra debe de ser transformada. La
producción S ? aSb puede ser remplaza por tres producciones nuevas, para tal fin se
crearán las variables no terminales Na y Mb que sustituirán las variables terminales a y b,
los cuales serán nuevamente producidos individualmente como sigue:

S ? NaSMb
Na ? a
Mb ? b
S ? b

Teoría de la Computación 103


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Ahora, se tiene una producción con más de dos no terminales del lado derecho; nuevamente
esta producción será sustituida por una nueva, como se muestra a continuación.

S ? NaX1 ¦ b
X1 ? SMb
Na ? a
Mb ? b

La nueva gramática G’ se encuentra ya, en FNC siendo equivalente a la gramática


original G. Recuerde que esta forma no admite la existencia de producciones vacías (S ?
e), sin embargo sí la gramática lo requiere puede agregarse esta producción, a la gramática
ya transformada con la salvedad de que dicha producción no se encontrará en FNC.

Una nota interesante sobre la forma normal de Chomsky es que las gramáticas
transformadas a esta forma normal producen árboles de derivación binarios que son más
sencillos de seguir. (Kelley, 1995, Pág.136)

3.5 FORMAS NORMALES DE GREIBACH

La Forma Norma de Greibach (FNG) es otra de las formas normales para la


representación de las GIC. Dicha forma normal restringe la posición en que pueden
aparecer las variables terminales y no terminales en el lado derechos de una producción.
(Kelley, 1995, Pág. 162)

Para poder transformar una gramática a la FNG es conveniente obtener primero dicha
gramática en la FNC, recuerde que dicha forma prohíbe la existencia de producciones
vacías por lo tanto, un lenguaje independiente de contexto puede ser transformado a la
forma normal de Greibach siempre y cuando no sea un lenguaje vacío. (Kelley, 1995,
Pág.165)

Teoría de la Computación 104


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Se dice que una gramática G se encuentra en forma normal de Greibach si sus


producciones son del tipo A ? aw y A ? a, donde A ? N, a ? ? y w ? N * . (Kelley, 1995,
Pág.167) Como puede observarse los elementos que formen la variables w pertenecerán
exclusivamente al conjunto de símbolos no terminales, lo cual indica que todas las posibles
derivaciones que se realicen con una gramática en FNG crecerán exclusivamente hacia la
derecha; las producciones con esta característica de orden son conocidas como
producciones recursivas por la derecha. (Kelley, 1995, Pág.163) Para lograr que las
producciones de una gramática en FNG cumplan con esta condición se requiere de una
transformación, lo cual involucra el uso de dos técnicas, la eliminación de factores
izquierdos y la eliminación de la recursividad por la izquierda (este tipo de producciones
expanden los árboles de derivación hacia la izquierda), (Kelley, 1995, Pág.163) de las
cuales se hablará en los siguientes dos apartados.

Otro aspecto que debe de tenerse en cuenta para que una gramática pueda ser
transformada a la FNG es el orden en que aparecen sus símbolos no terminales. Cada no
terminal en una gramática en FNG es etiquetado con un orden de prioridad (de 0 a n),
donde el símbolo inicial tiene la prioridad más baja; de tal manera que un símbolo no
terminal no puede producir a otro de menor prioridad que él; (Kelley, 1995, Pág.165) tal
como se muestra en el caso siguiente; considérese la gramática

S ? NA
S ? b
A ? SM
N ? a
M ? b

sí se etiquetan los símbolos no terminales de está gramática comenzando del símbolo inicial
(S0 , N1 , A2 , M3 ), se observará que en la tercera producción, el símbolo no terminal A
produce el símbolo inicial S cuya prioridad es menor que A; está producción es invalida
para la FNG, por lo que es necesario transformarla. El método más apropiado para dicha
transformación es la eliminación de factores izquierdos.

Teoría de la Computación 105


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3.6 ELIMINACIÓN DE FACTORES COMUNES IZQUIERDOS

En una gramática independiente de contexto pueden existir varias formas de


producciones. En particular se dice que sí, una gramática independiente de contexto
contiene producciones del tipo A ? aB? o B ? Y1 ¦ Y2 ¦ ….¦ Yn 4 , entonces las variables
producidas por B pueden ser sustituidas directamente en la producción A ? aB?, sin alterar
el lenguaje generado por dicha gramática. De tal forma que se obtendrían producciones del
tipo A ? a Y1 ? ¦ a Y2 ?¦ ….¦ a Yn ?. (Kelley, 1995, Pág.162) Tal aseveración puede ser
comprobada mediante una prueba de inducción, la cual se desarrolla a continuación. (Brena,
2004, Pág. 125)

Prueba por inducción.

Afirmación. Las cadenas producidas por la gramática G’ pertenecen indudablemente


al lenguaje original producido por la gramática G; ya que ambas contienen todas las
posibles derivaciones de variables terminales.

Bases de inducción. Las cadenas producidas en 0 pasos de derivación de G’,


pertenecen al lenguaje definido por L(G).

Hipótesis de inducción. En n pasos de derivación de G’, se construye n palabras


pertenecientes a L, ya que a , Yn , ? de las producciones A ? a Yn ?, pertenecen al
conjunto de variables terminales.

Paso de inducción. Las palabras generadas por G’ en n pasos, han de contener los
elementos producidos por las reglas B ? Yn , tal situación indica que al realizar n + 1
pasos las cadenas contendrán todos los símbolos no terminales necesarios para
finalizar la derivación.

4
El uso del símbolo ¦ en una gramática se lee como “ó” lo indica que el símbolo no terminal puede producir
uno u otro conjunto de variables. Es lo mismo escribir B ? Y1 ¦ Y2 que B ? Y1 , B ? Y2 . (Martin, 2004, Pág.
204)

Teoría de la Computación 106


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Finalmente, se observa que al aplicar las reglas de G’ que solo contienen variables
terminales, w pertenece a L.

Como puede analizar la prueba presentada muestra las razones por las cuales G’ genera las
misma cadenas que G; tal situación quedará completamente comprendida con la aplicación
de un ejemplo. Considere las siguientes gramáticas.

S ? aAb S ? aaSbb
S ? bAa S ? abSab
A ? aSb S ? aab
A ? bSa S ? abb
A ? a S ? baSba
A ? b S ? bbSaa
S ? baa
S ? bba
a)

b)

La gramática mostrada del inciso a es la gramática original G, cuyas derivaciones produce


palabras del tipo aab, baba, babbaaaba; la gramática del inciso b es la gramática G’, en la
cual se le han sustituido las producciones A ? aYn? en S. Noté que las producciones de A
han sido eliminadas debido a que la acción de sustitución las ha convertido en producciones
inútiles. Con el fin de comprobar la equivalencia de gramática (G = G’) se realizan las
siguientes sustituciones.

Derivación 1.a Derivación 1.b Derivación 2.a Derivación 2.b

S ? aAb S? aab S? bAa S ? bbSaa


S ⇒ aab S⇒ bbSaa S ⇒ bbaabaa
S⇒ bbaAbaa
S⇒ bbaabaa

Teoría de la Computación 107


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Como puede observar ambas gramáticas generan las mismas cadenas; por lo que su
equivalencia es más que comprobable, G = G’.

3.7 ELIMINACIÓN DE RECURSIVIDAD POR LA IZQUIERDA

Las producciones de la forma S ? Sa donde a ? (? ∪ N)* (Kelley, 1995, Pág. 164),


son conocidas como producciones recursivas por la izquierda; este tipo de producciones,
como ya se dijo; tiene la característica de expandirse continuamente hacia la izquierda
mientras se les deriva, produciendo constantemente la misma cadena lo cual, suele ser
incómodo y confuso, además de que una gramática en forma normal de Greibach rechaza
este tipo de producciones; por lo cual en esta sección serán eliminadas.

Considérese las producciones recursivas por la izquierda S ? Sa 1 , S ? Sa 1 ,…...S ?


Sa n de G, y además considérese que S también produce S ? ?1 , S? ?2 ,….. S ? ?n dentro
de la misma gramática. (Kelley, 1995, Pág.164) Para poder eliminar las producciones
recursivas por la izquierda de una gramática G, se agrega un nuevo no terminal
construyendo nuevas producciones con la combinación ?n y a n . El procedimiento es el
siguiente, las producciones S ? ?1 , S? ?2 ,….. S ? ?n serán respetadas como tales, y
además serán rescritas nuevamente agregándoles el nuevo no terminal (para cuestiones de
representación se usará aquí el no terminal N para ser agregado a las producciones, el lector
será libre de usar cualquier símbolo no terminal en las transformaciones que él realice),
como se muestra a continuación.

S ? ?1 ¦ ?2 ¦ .......¦ ?n

S ? ?1 N¦ ?2 N ¦ ……¦ ?mN

(Kelley, 1995, Pág.164)

Teoría de la Computación 108


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

El segundo paso es agregar nuevas producciones del tipo N ? a n y N ? a n N, donde


el nuevo terminal deriva a ; como se muestra a continuación.

N ? a 1 ¦ a 2 ¦ …….¦ a n

N ? a 1 N ¦ a 2N¦ ……¦ a nN

(Kelley, 1995, Pág.164)

De esta manera las producciones recursivas por la izquierda serán eliminadas. Para una
mejor comprensión de este concepto se realiza un ejemplo; considere para tal fin, la
siguiente gramática.

S ? aA
A ? AS
A ? bbb

La gramática mostrada presenta en su segunda producción recursividad, y debe de


eliminarse. Aplicando las reglas descritas arriba se obtiene la siguiente gramática
equivalente.

S ? aA
A ? bbb
A ? bbbN
N ? S
N ? SN

Se ha logrado eliminar las producciones recursivas mientras que las producciones


encontradas son equivalentes a las producciones originales.

Ya que se han asimilado las dos técnicas anteriores (técnica de eliminación de


recursividad por la izquierda y la técnica de eliminación de factores izquierdos) se puede
proceder a la transformación de una gramática a la FNG, para lo cual se alterna n las

Teoría de la Computación 109


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

técnicas antes mencionadas. Como ejemplo ilustrativo, se realiza la conversión de la


siguiente gramática.

S ? SC1 ¦ a ¦ b
C1 ? N aA
A ? MbMb
Na ? a
Mb ? b

Esta gramática se encuentra en FNC por lo que el lenguaje que produce es un lenguaje no
vació y puede ser trans formada a la FNG, recuerde que ésta forma solo admite
producciones del tipo A ? aw y A ? a, donde A ? aw debe de ser una producción
recursiva por la derecha. (Kelley, 1995, Pág.167) Se inicia por eliminar la recursividad por
la izquierda, ya que no existen producciones donde un símbolo no terminal produzca a otro
de menor prioridad. Se crea un nuevo no terminal (E) que sustituye las producciones
recursivas.

S ? a¦ b ¦ aE¦ bE
C1 ? N aA
A ? MbMb
Na ? a
Mb ? b
E ? C1 ¦ C1 E

Ya se ha eliminado la recursividad pero la gramática aún no se encuentra en FNG por


lo cual se continua con la eliminación de factores izquierdos, sustituyendo Mb, Na y C1 en
la segunda, tercera, y sexta producción. Finalmente todas las producciones se encuentran en
FNG.

S ? a¦ b¦ aE¦ bE
C1 ? aA
A ? bMb
Na ? a
Mb ? b
E ? aA¦ aAE

Teoría de la Computación 110


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3.8 ELIMINACIÓN DE LA AMBIGÜEDAD

Como ya se menciono en el apartado 3.3, una gramática que produce dos árboles de
derivación distintos, en la construcción de una misma palabra es denominada como
gramática ambigua (Kelley, 1995, Pág. 119).

La ambigüedad es una característica que puede ser eliminada mediante la búsqueda de


una nueva gramática o bien mediante la conversión de las gramáticas a las formas normales,
eliminando todas las producciones vacías, inútiles, unitarias y recursivas por la izquierda,
ya que la mayoría de las gramáticas ambiguas que presenta recursividad por la izquierda
suelen desarrollar ambigüedad, sin embargo no es una características especifica que pudiera
afirmar la ambigüedad de una gramática, por lo que el lector debe asegurar la ambigüedad
de una gramática con el desarrollo de los árboles de derivación. También se ha
mencionado la existencia de gramáticas cuya ambigüedad es imposible eliminar, por lo que
los lenguajes producidos por dichas gramáticas reciben el nombre de lenguaje
independiente del contexto inherentemente ambiguo, cuya ambigüedad es permanente.
(Kelley, 1995, Pág. 120)

3.9 AUTÓMATAS PUSH-DOWN

En la unidad pasada se estudió los autómatas finitos, descritos como máquinas


abstractas capaces de reconocer los lenguajes regulares; sin embargo existe la incógnita
¿estás máquinas son también capaces de reconocer el conjunto de lenguajes independientes
del contexto?; la respuesta a esa pregunta es ¡no !, ya que los lenguajes independientes del
contexto tienen la característica de construir lenguajes cuyas cadenas requieran de algún
conteo, lo cual indica que la máquina abstracta que pueda reconocer un lenguaje de éste
tipo debe contar con la posibilidad de recordar los elementos leídos en una cadena y la
cantidad que se ha leído; dichas máquinas abstractas son conocidas como autómatas push-
down o autómatas de pila (AP).

Teoría de la Computación 111


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Un AP es muy parecido a AF, adicionándole algunos nuevos conjuntos de símbolos


(Kelley, 1995, Pág.145), así como un mecanismo de almacenamiento conocido como pila,
el cual asemeja una memoria virtual. Una pila puede ser visualizada como un montón de
libros apilados uno sobre de otro; para poder obtener el libro de la base del cúmulo se
necesita quitar todos los libros de encima, de tal manera que el primer libro que fue apilado
es el último en ser eliminado, ó bien el último libro en ser apilado es el primero en ser
eliminado; está es la principal característica de una pila por lo que es denominada como una
estructura del tipo “LIFO” (Last in, first out; -el último en entrar el primero en salir-
).(Martin, 2004,Pág. 251) Este mecanismo de apilamiento permite al AP leer y almacenar o
eliminar los símbolos de entrada del autómata, mientras pasa de un estado a otro; una vez
que el AP ha llegado a un estado de aceptación, la pila debe de estar completamente vacía y
la cadena de entrada será aceptada.

Formalmente un autómata de pila (AP) se define como una 7-tupla, AP = (Q, ? , ?, s,


z, F, ? ) donde

♦ Q es una colección finita de estados.


♦ ? es el alfabeto de entrada.
♦ Z es el alfabeto de la pila
♦ s es el estado inicial.
♦ z es el símbolo inicial de la pila
♦ F es el conjunto de estados de aceptación
♦ ? es una función ? : Q x (? ∪ {e}) x ?? Q x Z* , denominada función de
transición.
(Martin, 2004, Pág. 255)

Como se observa los elementos que componen a un AP son los mismo que los que
componen a un AF, solo que son agregados dos elementos más, el alfabeto de la pila y el
símbolo inicial de la pila. El alfabeto de pila suele ser diferente al alfabeto de entrada ya
suelen contener identificadores de parada para indicar el tope de la pila.

Teoría de la Computación 112


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Otra gran diferencia que salta a la vista son las funciones de transición, las cuales han
cambiado su estructura y ahora forman ternas del tipo (q, s, a ), (p, ß) donde se indica que
de un estado actual q, a través de un símbolo de entrada s y un símbolo del alfabeto de la
pila a que es sacado de la pila; se llega a un nuevo estado p, insertando ß ( ß ? Z ) dentro de
la pila.(Kelley, 1995, Pág. 145) Sin embargo las funciones de transiciones usadas en el
diagrama de un AP, son reducidas a la forma “s / a / ß” donde s es el símbolo de entrada
que esta siendo leído, a es el símbolo que será eliminado de la pila y ß es el símbolo que
será insertado en la pila.(Brena, 2003, Pág. 146) Antes de continuar con las definiciones
formales de este tipo de autómatas, se realiza un ejemplo del diagrama de transiciones que
permite la representación de dichos autómatas.

Considere el siguiente lenguaje, L = {xi y 2i


¦ i > 0} el cual desarrolla cadenas
formadas por x´s y y´s, donde por cada x que exista deben de haber dos y´s presentes en la
cadena. El AP que reconoce a esté lenguaje tiene como alfabeto de entrada ? = {x, y},
como alfabeto de pila Z = {? ∪ #} y por símbolo inicial de la pila z = {#}. El símbolo “#”
será el identificador que permitirá verificar si la pila esta vacía. La figura 3.6 muestra el
autómata de pila que reconoce éste lenguaje.

Figura 3.6 Autómata de pila , reconocedor


de cadenas xyy,xxyyyy….xi y 2i

El AP de la figura 3.6 introduce en una pila el símbolo “#”, él marcará el fondo de la


pila; posteriormente lee una x e introduce una x en la pila; es decir, por cada x leída se
introduce una x en la pila; en cuanto lee una y se extrae una x de la pila y no se inserta nada,
la siguiente transición solo lee una y, sin insertar ni sacar nada de la pila con lo cual el
autómata se asegura que la cadena leída contenga dos y´s por cada una de sus x´s;

Teoría de la Computación 113


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

finalmente se extrae el símbolo “#” con lo que se asegura que la pila ha quedado vacía, y la
cadena es aceptada.

Formalmente el AP de la figura 3.6 esta constituido por:

♦ Q = {q0, q1, q2, q,3, q4, q5}


♦ ? = {x, y}
♦ Z = { x, #}
♦ s = {q0}
♦ z = {#}
♦ F = {#}
♦ ? es igual a la lista mostrada a continuación.

? (q0, e, e) = (q1, #) ? (q3,y,e) = (q4, e)


? (q1,x,e) = (q2,x) ? (q4,y,x) = (q3,e)
? (q2,x,e) = (q2,x) ? (q4,e,#) = (q5,e)
? (q2,y,x) = (q3,e)

3.9.1 AP y gramáticas independientes del contexto.

Hasta este momento se ha dicho que un lenguaje independientes de contexto (LIC) es


catalogado así, sí tal lenguaje proviene de una gramática del mismo tipo (GIC). Para
comprobar que un AP acepta LIC suele ser obvio que se compruebe que dichas gramáticas
son aceptadas por estos autómatas; para lo cual se muestra el siguiente método de
construcción de un AP, a partir de una gramática.

Teoría de la Computación 114


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

La idea principal según Dean Kelley es el de construir un AP que permita realizar


un derivación por la izquierda a partir de una gramática G. La derivación se representa
guardado en la pila los símbolos no terminales del extremo derecho de la derivación,
mientras que la parte izquierda (compuesta por terminales) deberá ser idéntica a las
cadenas de entrada que se lee.

La construcción del autómata inicia con la introducción en pila (que ya contendrá


el símbolo identificador del tope de pila), del símbolo inicial de la gramática G.

Ahora, ya que en la cima de la pila se encuentra un no terminal A, se procederá a


sustituirse por el lado derecho de su producción. Pero, sí el símbolo de la cima de la pila
fuese un terminal, el cual se corresponda con el siguiente símbolo de entrada, se
desapila. Esta acción es repetida continuamente hasta que no se tengan más elementos
que eliminar de la pila.

(Kelley, 1995, Pág.152)

En las siguientes páginas se realiza un ejemplo que desarrolla este método. Considere
la gramática G, constituida por las siguientes producciones.

S ? zMNz
M ? aMa
N ? bNb
M ? z
N ? z

El primer pasó a realizar, es la inserción del símbolo inicial S dentro de la pila; la cual
ya debe contener el símbolo inicial del alfabeto de pila, como se muestra en la figura 3.7.

Teoría de la Computación 115


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Figura 3.7 Construcción de


autómata de pila, paso 1.

Como segundo paso se elimina el símbolo no terminal de la cima de la pila y se


introduce los símbolos que esta produciendo (los símbolos son introducidos de izquierda a
derecha, colocándose en la cima, el ultimo símbolo que aparece a la derecha de la
producción), como se muestra en la figura 3.8.

Figura 3.8 Construcción de un


autómata de pila, paso 2.

Como puede observarse al introducir los nuevos elementos en la pila, la cima de ésta
es ocupada por un símbolo terminal (z), si éste elemento coincide con el símbolo de la
cadena de entrada es eliminado de la pila, dando lugar a un nuevo símbolo no terminal (N)
en la cima de la pila, por lo que nuevamente es sustituido por los símbolos que produce
(bNb o z), éste procedimiento se lleva a cabo consecutivamente hasta que la pila se
encuentre vacía, como se muestra en la figura 3.9.

Figura 3.9 Estado final de autómata de pila.

Teoría de la Computación 116


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Una vez que el AP de la figura 3.9 ha terminado su ejecución y la pila ha quedado


vacía, la cadena es aceptada, y el lenguaje producido por esta gramática es aceptado
incondicionalmente como un lenguaje independiente del contexto. Por lo tanto, se puede
realizar la siguiente afirmación “Si L es un lenguaje independiente del contexto, entonces
existirá un AP no determinístico para el cual L = L (G)”. (Kelley, 1995, Pág. 145) Nótese
que se ha introducido el término autómata de pila no determinístico (APND), ya que el
autómata de pila que se ha diseñado contiene transiciones del tipo ? : Q x (? ∪ {e}) x ??
Q x Z* , las cuales permiten que el AP elija de manera no determinista la siguiente
transición a ejecutar, como es el caso del AP mostrado en la figura 3.9.

Antes de abandonar el tema se presenta otro de ejemplo de la construcción de este


tipo de máquinas abstractas; para lo cual se usa una de las gramáticas ya conocidas por el
lector, y que es presentada a continuación.

S ? a¦ b¦ aE¦ bE
C1 ? aA
A ? bMb
Na ? a
Mb ? b
E ? aA¦ aAE

El diagrama reconocedor de ésta gramática se muestra en la figura 3.10, mostrada a


continuación.

Figura 3.10. Autómata de pila reconocedor de gramáticas.

Teoría de la Computación 117


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

RESUMEN

La construcción de lenguajes formales requiere de la existencia de reglas gramaticales


que indiquen cual será su constitución. Dichas reglas son llamadas gramáticas.

La gramática se define como una rama de la lingüística, que estudia la forma y la


composición de las palabras. En particular la gramática se estudia como un conjunto de
reglas que rigen el orden de las palabras en una oración. En el caso particular en el estudio
de la teoría de la computación las gramá ticas son un conjunto de reglas del tipo a? ß, que
rigen la construcción de las palabras pertenecientes a un lenguaje; una gramática puede ser
construida en base a las características que presentan las palabras pertenecientes a un
lenguaje, o bien en base a un autómata

La construcción de una gramática a partir de un AF se inicia por dividir el autómata


en varias partes; en el caso del autómata mostrado en la figura 3.3 se considerarán dos
divisiones, donde puede observarse que la primera transición construye cadenas iniciadas
con una e seguidas de algo más, lo cual puede ser representado por algún otro símbolo, por
ejemplo por B; o bien también muestra que puede construir palabras que contengan solo
una e; de tal manera que obtenemos las dos primeras reglas de construcción S ? eB y S ?
e donde S es el símbolo inicial de la gramática. La segunda parte del AF produce e’s o bien
f’s, por lo que B puede producir dos caminos diferentes, B ? eB o bien B ? fB, la
presencia de B en le lado derecho de la regla creada permite que las e´s y f´s se repitan
continuamente, finalmente se requiere de que las cadenas de dicho lenguaje terminen con
una e o una f para lo cuales crean las producciones B ? e y B ? f.

La construcción de una gramática requiere de un método de comprobación que ayude


a asegurar que las reglas gramaticales obtenidas son correctas, para tal fin pueden
emplearse dos tipos de pruebas; la prueba de corrección y la prueba de completez, las
cuales se realizan en base a la prueba de inducción matemática. La prueba de corrección
garantiza que todas las palabras que se producen al utilizar la gramática, efectivamente

Teoría de la Computación 118


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

corresponden a la descripción del lenguaje dado; basándose en la longitud de la derivación.


Mientras que la prueba de la completez se asegura que la gramática produzca todas las
palabras requeridas por el lenguaje.

Una vez definidas las reglas gramaticales de un lenguaje pueden obtenerse todas las
posibles cadenas o palabras de las cuales ésta constituido a partir de un método de
derivación, el cuál puede ser representado por medio de diagramas denominados árboles de
derivación. Un árbol de derivación es un gráfico constituido por nodos que son unidos entre
si por medio de líneas denominadas aristas, estas uniones construyen ramificaciones que
representan cada una de las producciones de la gramática que son utilizadas en una
derivación. Estos árboles se construyen colocando en el nodo inicial o nodo raíz el símbolo
inicial de la gramática, el cual tendrá como nodos hijos cada uno de los símbolos que
produce, y estos a su vez producirán nuevos nodos.

Cuando una gramática produce dos árboles distintos para la misma derivación se dice
que la gramática de la cual se ha derivado es una gramática ambigua, lo común es que se
busque una gramática no ambigua que produzca el mismo lenguaje, evitando la creación de
cadenas con significado erróneo; sin embargo puede existir gramáticas cuya ambigüedad no
puede evitarse, en dicho caso se dice que el lenguaje producido es un lenguaje
independiente del contexto inherentemente ambiguo.

Otra manera de eliminar la ambigüedad de una gramática es trasformándola a una


forma normal. La forma normal de Chomsky (FNC) restringe la constitución de una
gramática. Una gramática se encuentra en forma normal de Chomsky si no contienen
producciones del tipo A ? ε denominadas anulables, producciones del tipo A ? B donde
¦ B¦ = 1, denominadas producciones unitarias y producciones inútiles; y además, sí el resto
de sus producciones son del tipo A ? a donde a ? ? , ó A ? AB donde ambos son
elementos no terminales.

Para lograr que una gramática se encuentre en forma normal de Chomsky deben de
ser eliminadas las producciones no deseadas mencionadas en el párrafo anterior, para lo

Teoría de la Computación 119


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

cual se han planteado ya 4 algoritmos diferentes, los algoritmo 3.4.1a y 3.4.2a para le
eliminación de producciones inútiles, el algoritmo 3.4.2a para la eliminación de
producciones anulables, y el algoritmo 3.4.3a para la eliminación de producciones unitarias.
Una vez que se ha eliminado éste tipo de producciones se requiere transformar aquellas
producciones que contengan más de un símbolo terminal o más de dos no terminales de su
lado derecho; para tal fin se requiere de la generación de nuevos no terminales que
sustituyan los símbolos terminales y no terminales excedentes en las producciones. Como
se muestra a continuación; suponga que la gramática mostrada del lado izquierdo es a
gramática original mientras que la del lado derecho es la gramática ya transformada.

S ? aSb S ? NaX1 ¦ b
S? b X1 ? SMb
Na ? a
Mb ? b

La forma norma de Greibach (FNG) es otra de las formas normales para la


representación de las GIC. Dicha forma normal restringe la posición en que pueden
aparecer las variables terminales y no terminales en el lado derechos de una producción.
Para poder transformar una gramática a la FNG es conveniente obtener primero dicha
gramática en la FNC. Un lenguaje independiente de contexto puede ser transformado a la
forma normal de Greibach siempre y cuando no sea un lenguaje vacío.

Se dice que una gramática G se encuentra en forma normal de Greibach si sus


producciones son del tipo A ? aw y A ? a, donde A ? N, a ? ? y w ? N * . Las gramáticas
en FNG cuentan con la característica de crecer exclusivamente hacia la derecha, mientras se
les esta derivando; ya que todo no terminal que aparezca en cada nue va sustitución será
encontrado en el extremo derecho de cada derivación. Las producciones con esta
característica de orden son conocidas como producciones recursivas por la derecha. Para
lograr que las producciones de una gramática en FNG cumplan con esta condición se
requiere de una transformación, para lo cual se hace uso de dos técnicas, la eliminación de
factores izquierdos y la eliminación de la recursividad por la izquierda.

Teoría de la Computación 120


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

La eliminación de factores izquierdos, indica lo siguiente: “sí, una gramá tica


independiente de contexto contiene producciones del tipo A ? aB? y producciones B ?
Y1 ¦ Y2 ¦ ….¦ Yn , entonces las producciones de B pueden ser sustituidas directamente en la
producción A ? aB?. De tal forma que se obtendrían producciones del tipo A ? a Y1 ? ¦
a Y2 ?¦ ….¦ a Yn ?”. Tal indicación permite la transformación inicial de una gramática libre
de contexto a una FNG.

Otra de las técnicas utilizadas para esta transformación es la eliminación de


recursividad por la izquierda. Toda producción de la forma S ? Sa donde a ? (? ∪ N)* ,
es conocida como una producción recursiva por la izquierda; éste tipo de producciones
tiene la característica de expandirse continuamente hacia la izquierda mientras se les deriva.

Considere las producciones recursivas por la izquierda S ? Sa 1 , S ? Sa 1 ,…...S ?


Sa n de G, y las producciones S ? ?1 , S? ?2 ,….. S ? ?n dentro de una misma gramática.
Para poder eliminar las producciones recursivas por la izquierda de la gramática G, se
agregará un nuevo no terminal que construirá nuevas producciones combinado ?n y a n con
él mismo. El procedimiento es el siguiente, las producciones S ? ?1 , S? ?2 ,….. S ? ?n
serán respetadas como tales, y además serán rescritas nuevamente agregándoles el nuevo no
terminal, de tal manera que se obtengan producciones del tipo S ? ?1 N, S? ?2N,….. S ?
?n N. Además se agregan nuevas, producciones donde el nuevo no terminal deriva a n ; de tal
manera que se obtengan producciones del tipo N ? a 1 ¦ a 2 ¦ …….¦ a n ¦ a 1N¦
a 2N¦ ……¦ a nN. De esta manera las producciones recursivas por la izquierda serán
eliminadas.

Estas dos técnicas son aplicadas una y otra vez hasta transformar la gramática a la
forma deseada. Un aspecto que debe de tener en cuenta para que una gramática pueda ser
transformada a la FNG es el orden en que aparecen sus símbolos no terminales. Cada no
terminal en una gramática en FNG es etiquetado con un orden de prioridad (de 0 a n),
donde el símbolo inicial tiene la prioridad más baja; de tal manera que un símbolo no
terminal no puede producir a otro símbolo no terminal de menor prioridad que él.

Teoría de la Computación 121


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Los lenguajes independientes del contexto tienen la característica de construir


lenguajes de mayor complejidad que los LR por lo cual es imposible que un AF pueda
reconocer un lenguaje de éste tipo. Los autómatas push-down o autómatas de pila (AP) son
las máquinas abstractas designadas para el reconocimiento de los LIC.

Un autómata de pila es muy parecido a AF, adicionándole algunos nuevos conjuntos


de elementos, así como un mecanismo de almacenamiento conocido como pila, el cual
asemeja una memoria virtual. Una pila es denominada como una estructura del tipo “LIFO”
(Last in, first out; -el último en entrar el primero en salir-). Éste mecanismo de apilamiento
permite al autómata de pila (AP) leer y almacenar o eliminar los símbolos de entrada del
autómata, mientras pasa de un estado a otro; una vez que el AP a llegado a un estado de
aceptación, la pila debe de encontrarse completamente vacía y la cadena de entrada será
aceptada.

Formalmente un autóma ta de pila (AP) se define como una 7-tupla, AP = (Q, ? , ?, s,


z, F, ? ) donde

♦ Q es una colección finita de estados.


♦ ? es el alfabeto de entrada.
♦ Z es el alfabeto de la pila
♦ s es el estado inicial.
♦ z es el símbolo inicial de la pila
♦ F es el conjunto de estados de aceptación
♦ ? es una función ? : Q x (? ∪ {e}) x ?? Q x Z* , denominada función de
transición.

Las funciones de transición de una AP son de la forma (q, s, a), (p, ß) donde se indica
que de un estado actual q, a través de un símbolo de entrada s y un símbolo del alfabeto de
la pila a que es sacado de la pila; se llega a un nuevo estado p, insertando ß (símbolo del
alfabeto de pila) dentro de la pila. Sin embargo las funciones de transiciones usadas en el

Teoría de la Computación 122


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

diagrama de un AP, son reducidas a la forma “s / a / ß” donde s es el símbolo de entrada


que esta siendo leído, a es el símbolo que será eliminado de la pila y ß es el símbolo que
será insertado en la pila. Un ejemplo de éste tipo de diagrama de transiciones se presenta en
la figura 3.6.

Teoría de la Computación 123


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

GLOSARIO

♦ Gramática. Conjunto de reglas que rigen el orden de las palabras en una oración.
♦ Derivación. Sustitución continúa de las reglas gramaticales.
♦ Árbol de derivación. Gráfico constituido por nodos y líneas que los unen entre si,
formando ramificaciones; que representan cada una de las producciones de la
gramática que son utilizadas en una derivación.
♦ Ambigüedad. Termino usado para indicar algo incierto o de doble sentido.
♦ Lenguaje independiente del contexto inherentemente ambiguo. Se le llama así a
aquel LIC cuya gramática contiene ambigüedad permanente.
♦ Prueba de corrección. La prueba de corrección garantiza que todas las palabras que
produce una gramática, efectivamente corresponden a la descripción del lenguaje
basándose en la longitud de la derivación.
♦ Prueba de completez. La completez se asegura que la gramática produzca todas las
palabras requeridas por el lenguaje.
♦ Producciones vacías o anulables. Son aquellas producciones de la forma S ? e.
Producciones unitarias. Son aquellas producciones de la forma S ? B, donde la
longitud de B es igual a uno.
♦ Producciones inútiles. Son aquellas producciones que no tienen ningún significado
dentro de una gramática, ya que no producirá ninguna cadena a partir del símbolo
de inicial.
♦ Autómata de pila (AP). Formalmente un autómata de pila (AP) se define como una
7-tupla, AP = (Q, ? , ?, s, z, F, ?) donde
o Q es una colección finita de estados.
o ? es el alfabeto de entrada.
o Z es el alfabeto de la pila
o s es el estado inicial.
o z es el símbolo inicial de la pila
o F es el conjunto de estados de aceptación
o ? es una función ? : Q x (? ∪ {e}) x ?? Q x Z* , denominada función de
transición.

Teoría de la Computación 124


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

EJERCICIOS.

1. Conteste correctamente las siguientes preguntas.


a. ¿Cuales son los pasos para construir una gramática a partir de un Autómata
de Pila?
b. ¿De que gramática proviene el lenguaje reconocido por un autómata de pila?
Descríbala
c. Describa el funcionamiento de un autómata de pila.
d. ¿Qué es la ambigüedad?

2. Mencione los pasos necesarios para transformar una gramática a la forma normal de
Greibach.
3. Mencione los pasos necesarios para transformar una gramática a la forma normal de
Chomsky.
4. Describe el funcionamiento de un autómata de pila.
5. Defina formalmente un autómata de pila.
6. Haciendo uso de los algoritmos de transformación y elimina las producciones e,
producciones y producciones unitarias estandariza las siguientes gramáticas.

a) S? CD b) S ? aSb ¦ bSa ¦ e
C? aC ¦ e C ? aC ¦ e
D? ab ¦ bD ¦ e D ? ab ¦ bD ¦ e
E? fF ¦ c
F? c

c) S? a ¦ aA ¦ B ¦ C d) S? aAb ¦ cEB¦ CE
A? aB ¦ e A? dBE ¦ eeC
B? Aa B? ff ¦ D
C? bCD C? gFB ¦ ae
D? ccc D? h

Teoría de la Computación 125


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

PROBLEMAS

1. Observe los siguientes AF y construya la gramática que represente a cada uno de ellos.

a.

b.

c.

2. Observe cada una de las siguientes gramáticas y defina su estado de ambigüedad.

a) S ? AB b) S ? AcA
A ? aA ¦ e A? aA ¦ e
B ? a ¦ bB ¦ e A? aB
B? aB ¦ bB ¦ e

c) S ? ABA e) A? AcA
A ? aA ¦ e
A? AbA
B ? bB ¦ e
A? a

Teoría de la Computación 126


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

3. Obtenga una gramática independiente del contexto para cada uno de los siguientes
lenguajes.

a. L = {am bn ¦ m = n}
b. L = {am bn ¦ n ≤ m ≤ 2n}

4. Obtenga un autómata de pila que reconozca cada uno de los siguientes lenguajes.

a. L = {[m an bn ] m ¦ m > 0, n > 0}


b. L = {( m(n xa yb )n )m ¦ m,n = , a > 1, b = 2ª}
c. L = {an bn+m cm ¦ n, m > 0}
d. L = {w ? {a,b}* ¦ w contiene una a más que b’s}

5. Obtenga el autómata de pila que reconozca la siguiente gramática.

a) S ? AyB b) S? eF
A? xAy F? G¦ H
A? zB G? eG ¦ H
B? x H? fH ¦ f
B? z

Teoría de la Computación 127


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

LECTURA COMPLEMENTARIA

Noam Chomsky

Como ya se menciono, la gramática se define como una rama de la lingüística, que


estudia la forma y la composición de las palabras. En particular la gramática generativa es
aquella que permite establecer las reglas de generación para todas las posibles oraciones de
un lenguaje.

La gramática generativa fue fundada por el lingüista estadounidense Noam Chomsky.


Abraham Noam Chomsky nació en Filadelfia, Pensilvania. Estudió en la Universidad de
Pensilvania, donde se doctoró en Lingüística en 1955. Ese mismo año se incorporó como
profesor de francés y alemán al Instituto de Tecnología de Massachusetts (MIT) y en 1976
pasó a ser catedrático de Lingüística de la mencionada institución.

Chomsky fue el creador de un nuevo modelo lingüístico, la gramática generativa, que


expuso por primera vez en su libro Estructuras sintácticas. Estableció una diferencia entre
el conocimiento innato y con frecuencia inconsciente que los individuos tienen de la
estructura de su lengua y el modo en que utilizan ésta diariamente.

Chomsky inició su activismo político relativamente pronto, pero comenzó a publicar


más intensamente sobre estos temas en la década de 1960, en respuesta a la actuación de su
país en el Sureste asiático. Restó dedicación a su trabajo sobre lingüística para escribir
acerca del papel de la comunidad académica y de los medios de comunicación en la
obtención del apoyo de la opinión pública a la política de Estados Unidos. Abordó
igualmente las consecuencias de la política exterior de Estados Unidos, y se manifestó a
favor de que los intelectuales recurran a métodos científicos para cuestionar las políticas
gubernamentales que encuentren inmorales y desarrollar estrategias prácticas que las
combatan.

Teoría de la Computación 128


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

Entre las publicaciones más importantes de Chomsky, aparte de la ya mencionada


Estructuras sintácticas (1957), se encuentran: Aspectos de la teoría de la sintaxis (1965),
Principios de fonología generativa (1968, escrito en colaboración con Morris Halle),
Lingüística cartesiana (1969), El lenguaje y el entendimiento (1971) y El programa
minimalista (1995). Algunos de sus escritos políticos son La responsabilidad de los
intelectuales y otros ensayos históricos y políticos (1969), Guerra o paz en Oriente Medio
(1974), El miedo a la democracia (1991), El nuevo orden mundial (y el viejo) (1996),
Estados canallas (2001) y 11-09-2001 (2001), obra esta última que recoge siete entrevistas
en las que Chomsky analiza el más sangriento atentado terrorista de la historia de Estados
Unidos.

Teoría de la Computación 129


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

BIBLIOGRAFÍA

1. Brena, verano 2003 Ramón Brena. Autómatas y Lenguajes. En:


http://lizt.mty.itesm.mx/~rbrena/AyL.html. Consultado por última vez en Abril del
2006.
2. Dean Kelley, mayo 1995 Dean Kelley: Teoría de autómatas y lenguajes formales.
Editorial: Prentice-Hall.
3. ENCARTA, 2006. Biblioteca de Consulta Microsoft Encarta. DE 1993 a 2005.
Editado por Microsoft Corporation.
4. John Martin. 2004, John C. Martin. Lenguajes formales y teoría de la
computación. Editorial: Mc Graw Hill.

Teoría de la Computación 130


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

RETROALIMENTACIÓN.

Retroalimentación a los ejercicios.

1. a. La construcción de una gramática a partir de un AF se inicia por dividir el


autómata en partes; cada una de las transiciones marcará el símbolo que entrara al
autómata y que debe de ser generado por la gramática, mientras que cada división
marca un nuevo símbolo no terminal que debe de ser generado y con lo cual se
busaca la generación de nuevas producciones y construyan las cadenas
reconocidas por el autómata.

c. El funcionamiento de un AP es muy parecido al de un AF, lee los símbolos de


una cadena de entrada, pasando de una transición a otra; aunándole un
mecanismo de apilamiento que permite al AP leer y almacenar o eliminar los
símbolos de entrada, mientras pasa de un estado a otro; una vez que el AP ha
llegado a un estado de aceptación, la pila debe de estar completamente vacía y la
cadena de entrada es aceptada.

3. Una gramática se transforma en forma normal de Chomsky eliminando producciones


anulables (A ? ε ), producciones unitarias (A ? B donde ¦ B¦ = 1), y finalmente
las producciones inútiles; además, el resto de sus producciones son del tipo A ? a
donde a ? ? , ó A ? AB donde ambos son elementos no terminales.
5. Formalmente un autómata de pila (AP) se define como una 7-tupla, AP = (Q, ? ,
?, s, z, F, ?) donde

♦ Q es una colección finita de estados.


♦ ? es el alfabeto de entrada.
♦ Z es el alfabeto de la pila
♦ s es el estado inicial.
♦ z es el símbolo inicial de la pila

Teoría de la Computación 131


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

♦ F es el conjunto de estados de aceptación


♦ ? es una función ? : Q x (? ∪ {e}) x ?? Q x Z* , denominada función de
transición.

Retroalimentación a los problemas.

1. a. S ? aA¦ e
A ? bB
B ? a ¦ aS

c. S ? aE¦ aF ¦ b
E ? bE ¦ b
F ? aF¦ b

2. a) La gramática no es ambigua, ya que los árboles de derivación que se obtienen de


ella son iguales.

c) La gramática es ambigua, ya que los árboles de derivación que se obtienen de ella


son diferentes.
3. a. S ? aE¦ a¦ e
E ? Eb ¦ aS¦ e

4. a.

Teoría de la Computación 132


Instituto Tecnológico de Celaya Lenguajes Independientes
del Contexto.

c.

5. a.

Teoría de la Computación 133


C
A MÁQUINAS DE
P TURING

I OBJETIVO

T
U
Conocer el origen, funcionamiento, variantes
y aplicaciones de las Máquina de Turing, así

L
como los lenguajes que reconocen.

IV
Instituto Tecnológico de Celaya Máquinas de Turing

Lenguajes
recursivamente
enumerables

Variantes de una Máquina


Que forman parte de de Turing

Lenguajes recursivos
Puede transformarse
Reconocedoras

Son vistas como Cintas infinitas aunadas a


Máquinas de
una cabezada de
Turing lectura/escritura.

Dan inicio con Se representación gráfica

El Problema de Hilbert Construcción modular de


una MT

Figura 4.1. Diagrama temático de la unidad IV

Teoría de la Computación 135


Instituto Tecnológico de Celaya Máquina de Turing

4. MÁQUINA DE TURING

4.1 INTRODUCCIÓN

La presente unidad introducirá al lector en el mundo del matemático ingles Alan


Turing, que en la década de los 1930 construyo una máquina abstracta, cuya ejecución
provee de una solución computacional a los problemas matemáticos; solución que alguna
vez había sido cuestionada por el matemático alemán David Hilbert. Dicha máquina lleva
su nombre “Máquina de Turing”. Y es hoy en día la máquina de mayor potencia de análisis
en la teoría de la computación.

Turing propuso con su máquina la existencia de una cinta infinita en ambos sentidos
(izquierda y derecha), la cual esta ligada a una cabeza de lectura/escritura que podía
moverse en ambos sentidos sobre la cinta. Además fue adicionado un alfabeto para esta
cinta cuyo elemento esencial es el símbolo en blanco que permite marca el inicio y final de
toda cadena sobre la cinta. Dichas cintas pueden sufrir algunas modificaciones dando lugar
a la existencia de variaciones en la MT; sin embargo, estas variaciones no implican cambio
drásticos sobre la esencia de las máquinas propuestas por Turing, pero si permiten que su
construcción sea más sencilla.

La construcción grafica de las MT suele realizarse mediante bloques básicos de MT,


cuya unión construye máquinas comple jas capaces de reconocer la mayoría de los lenguajes
recursivamente enurables. Los cuales involucran los lenguajes regulares, dependientes e
independientes de contexto; por lo que las máquinas propuestas por éste gran científico
revolucionaron las ciencias computacionales.

Teoría de la Computación 136


Instituto Tecnológico de Celaya Máquina de Turing

4.2 CONCEPTOS BÁSICOS.

En unidades pasadas se analizaron dos tipos de lenguajes formales, sin embargo, de


acuerdo a la jerarquía de Chomsky existen otros dos tipos, los lenguajes dependientes del
contexto y los lenguajes recursivamente enumerables, los cuales no pueden ser reconocidos
por los AF o por los AP que han sido estudiados; pero esto, no quiere decir que no exista
una máquina que pueda reconocer estos tipos de lenguajes. Las denominadas Máquinas de
Turing (MT) son máquinas abstractas que permiten el reconocimiento de los lenguajes de
tipo 0 (recursivamente enumerables).

Una máquina de Turing es representada como una cinta infinita dividida en celdas de
almacenamiento, a las que se puede acceder en cualquier parte de la cinta; cada una de las
celdas puede almacenar un símbolo que es reconocido por una cabeza de lectura/escritura
que recorre la cinta en cualquier sentido (izquierda a derecha ó derecha a izquierda), (figura
4.2). (Kelley, 1995, Pág. 172)

Figura 4.2 Cinta y cabeza de lectura escritura


de una máquina de Turing.

Teoría de la Computación 137


Instituto Tecnológico de Celaya Máquina de Turing

4.2.1 Definición formal de una máquina de Turing.

Formalmente una máquina de Turing se define como una 7-tupla M = (Q, ? , ?, s,


?, F , d) donde

♦ Q conjunto finito de estados


♦ ? es el alfabeto de entrada
♦ ? es el alfabeto de la cinta
♦ s es el estado inicial de la pila
♦ ? es un símbolo en blanco ? ∉ ?
♦ d es una función parcial de transición definida por d : Q x ? ? Q x ? x {L,
R}

(Kelley, 1995, Pág. 172)

La función de transición mostradas en la definición anterior transforma pares (q, a) en


ternas del tipo (p, s, m) donde q es el estado actual en que se encuentra, a es el símbolo de
la cinta que se esta leyendo actualmente, p es el estado nuevo al que se llega, s es el
símbolo que se rescribe sobre la cinta y m es el movimiento que realiza la cabeza de lectura
escritura que puede ser a la derecha (D) o a la izquierda (I). (Kelley, 1995, Pág. 172)

Por ejemplo, considere la máquina de Turing que reconoce el lenguaje definido por L
= {an bn cn ¦ n > 0}.

♦ Q = {q0, q1, q2, q3, q4, q5, q6, q7}


♦ ? = {a, b, c}
♦ ? = {a, b, c, x, y, z, ? }
♦ s = {q0}
♦ ? = {? }
♦ F = {q7}

Teoría de la Computación 138


Instituto Tecnológico de Celaya Máquina de Turing

♦ d (q0, ? ) = (q1, ? , R)
♦ d (q1, a) = (q2, x, R)
♦ d (q2, a) = (q2, a, R)
♦ d (q2, y) = (q2, y, R)
♦ d (q2, b) = (q3, y, R)
♦ d (q3, b) = (q3, b, R)
♦ d (q3, z) = (q3, z, R)
♦ d (q3, c) = (q4, z, L)
♦ d (q4, z) = (q4, z, L)
♦ d (q4, y) = (q4, y, L)
♦ d (q4, b) = (q4, b, L)
♦ d (q4, a) = (q4, a, L)
♦ d (q4, x) = (q1, x, R)
♦ d (q1, y) = (q5, y, R)
♦ d (q5, y) = (q5, y, R)
♦ d (q5, z) = (q6, z, R)
♦ d (q6, z) = (q6, z, R)
♦ d (q6, ? ) = (q7, ?, L)

La máquina de Turing mostrada anteriormente permite el reconocimientos del


lenguaje formado por cadenas del tipo: abc, aabbcc, aaabbbccc; dichas cadenas no pueden
ser reconocidas por autómatas de finitos o por autómatas de pila. La máquina de Turing
mostrada permite que exista solo una b y c para cada a que aparece en la cadena, tal
reconocimiento lo realiza al permitir que la cabeza de escritura/lectura se mueva
constantemente a través de la cinta.

Una MT también puede ser representada de manera gráfica, mediante diagramas de


transiciones o bien mediante de bloques, de los cuales se hablara en la siguiente sección.

Teoría de la Computación 139


Instituto Tecnológico de Celaya Máquina de Turing

4.3 CONSTRUCCIÓN MODULAR FORMAL DE UNA MÁQUINA DE


TURING.

Como ya se dijo las MT pueden representarse mediante diagramas de transiciones, los


cuales muestran transiciones de la forma x/y/m donde el primer elemento (x) representa el
símbolo que se está leyendo en la cinta, el segundo elemento (y) representa el símbolo que
será reescrito en la cinta y finalmente el tercer elemento (m) representa el movimiento a
realizar sobre la cinta que como se sabe puede ser hacia la derecha o izquierda. (Martin,
2004, Pág. 232) Un ejemplo claro de este tipo de diagrama se muestra en la figura 4.3.

Figura 4.3 MT reconocedor del lenguaje L= {an b n cn ¦ n >0}

Otra manera de construir una MT es haciendo uso de los bloques básicos para la
construcción de máquinas de Turing. Cada uno de éstos bloques representa ya por si solos
una máquina, la unión de estos bloques permiten la construcción de máquinas complejas
capaces de reconocer un lenguaje.

Teoría de la Computación 140


Instituto Tecnológico de Celaya Máquina de Turing

4.3.1. Bloques básicos

Antes de poder visualizar los bloques básicos de una MT, se debe recordar que la MT
permite realizar dos movimientos sobre una cinta, los cuales son descritos a continuación.

R Permite el mover la cabeza de lectura/escritura una celda hacia la derecha


de su posición actual.

L Permite el mover la cabeza de lectura/escritura una celda hacia la


izquierda de su posición actual.

Tabla. 4.1 Funciones básicas de las MT

Cada uno de estos movimientos permite la construcción de las siguientes máquinas


básicas de Turing.

a ) Movimiento de lectura b) Movimiento de lectura y reescritura

c) Movimiento y lectura a la derecha d) Movimiento y lectura hacia la izquierda

Figura 4.4 Bloques básicos

(Kelley, 1995, Pág. 190)

Las máquinas de la figura 4.4 presentan los movimientos básicos de una MT sobre
una cinta; el inciso a), genera un movimiento a la derecha, la lectura de una a y finalmente

Teoría de la Computación 141


Instituto Tecnológico de Celaya Máquina de Turing

un movimiento a la derecha de la posición actual de la cabeza de lectura/escritura; el inciso


b) realiza nuevamente los movimientos del inciso anterior adicionándole la reescritura de x
antes de realizar el cambio de celda. Los incisos c) y d) generan movimientos hacia la
derecha o izquierda, respectivamente, leyendo solo uno de los tres símbolos en la cinta y
finalizan con un movimiento a la derecha e izquierda respectivamente. La construcción de
estas máquinas no se limita solamente a la lectura lineal de un solo símbolo, si no también
pueden realizarse lecturas cíclicas, o bien, búsquedas continuas de un símbolo como es el
caso que se presenta en la figura 4.5 a) y b). Cada uno de estos incisos muestra la lectura
continua de los símbolo y y ? , cuando encuentra un símbolo diferente a alguno de ellos la
lectura se detiene este tipo de máquinas puede resumirse mediante la notación Rx donde x
representa el símbolo que esta buscando sobre la cinta, es decir, suponga que la cinta sobre
la que esta trabajando contiene palabras formadas por yyyyxxxx, y se requiere e localizar la
siguiente x existente en la cinta para su contabilización. Las máquinas mostradas en la
figura 4.5 recorrería la cinta leyendo las y y lo s espacios en blanco, en cuanto encontrarán
una x se detendrían; la notación Rx haría lo mismo, recorre la cinta buscando una x, en
cuanto la encontré se detiene. (Kelley, 1995, Pág. 186) Las figuras 4.4 a) y b) muestran los
bloques que realizan esta acción.

a) Rx (Recorre la cinta hacia la derecha hasta b) Lx (Recorre la cinta hacia la izquierda hasta
encontrar una x )
encontrar una x )

Figura 4.5 Bloques de búsqueda

(Kelley, 1995, Pág. 190)

Teoría de la Computación 142


Instituto Tecnológico de Celaya Máquina de Turing

[
5

a) Movimiento continuo hacia la derecha b)Movimiento continuo hacia la izquierda


buscando x. buscando y.

Figura 4.6 Movimientos cíclicos de MT


(Kelley, 1995, Pág. 190)

La unión de estás máquinas construyen mecanismos complejos, que permiten el


reconocimiento de un lenguaje, por ejemplo, el lenguaje examinado por el diagrama de
transición de la figura 4.3, es también reconocido por la MT construida mediante bloque de
la figura 4.7; dicha máquina considera como posición inicial de la cabeza de
lectura/escritura la celda que contiene el espacio en blanco y que marca el inicio de cadena.

Figura 4.7 MT basada en bloques

La máquina mostrada en la figura anterior realiza en su primera acción un


movimiento hacia la derecha de su posición actual lee la primera a que existe en la cadena
y la sobrescribe con una x, nuevamente se mueve hacia la derecha buscando una b la cual
sobrescribe con una y, una vez realizada esta acción, la máquina busca la siguiente c sobre
la cinta la sobrescribe por una z, y continua su búsqueda hacia la izquierda, hasta encontrar
la última x rescrita; una vez marcadas todas las a´s, b´s y c´s, la máquina verifica que solo
existan y´s y z´s en la cinta hasta llegar a el espacio blanco, y al estado de aceptación.

Teoría de la Computación 143


Instituto Tecnológico de Celaya Máquina de Turing

4.4 LENGUAJES ACEPTADOS POR UNA MÁQUINA DE TURING

Se dice que un lenguaje es aceptado por una MT sí todas las cadenas de éste son
reconocidas por dicha máquina. Los lenguajes que son aceptados por una MT son los
denominados lenguajes recursivamente enumerables (R.E.), en particular solo una parte de
éstos lenguajes son completamente aceptados por una máquina de éste tipo, dicho s
lenguajes son los lenguajes recursivos (Kelley, 1995, Pág. 180), o también denominados
lenguajes decidibles, que son aquellos para los que existe una MT que reconozca al
lenguaje.

De manera formal un lenguaje recursivo puede ser definido como:

*
Dado un alfabeto ? , un lenguaje L es recursivo en ? ; sí para alguna cadena e ? ?
existe un procedimiento efectivo para decidir sí e ? L o bien e ∉ L.

(Chesñevar, 2003, Pág. 250)

Mientras tanto, todos los problemas que no pueden ser reconocidos por una máquina
de Turing son denomina algoritmos irresolubles.

Lenguajes irresolubles

Lenguajes recursivamente
enumerables

Lenguajes recursivos

Figura 4.8. Clasificación de lenguajes aceptados por una MT

Teoría de la Computación 144


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Máquina de Turing

4.5 VARIANTES DE UNA MÁQUINA DE TURING

Una MT puede ser modificada de diferentes maneras, creando nuevas máquinas que
permiten, al igual que la MT básica, el reconocimiento de lenguajes; sin embargo, dichas
modificaciones suelen presentar métodos más sencillos de reconocimiento de lenguajes.
Tales modificaciones se extienden desde evitar el movimiento de la cabeza de
lectura/escritura sobre la cinta, hasta crear cinta de múltiples dimensiones, es decir, cintas
que se extienden hacia la izquierda, derecha, arriba y abajo de manera infinita.

4.5.1 Permanencia

Una de las primeras variaciones que puede realizársele a una MT es el estado de


permanencia, es decir, las máquinas de Turing básicas permiten que la cabeza de
lectura/escritura se mueva únicamente en dos sentidos teniendo funciones de transiciones
de la siguiente forma

d : Q x ? ? Q x ? x {L, R}

(Kelley, 1995, Pág. 194)

Sin embargo, la variación de permanencia permite introducir un nuevo movimiento S


que significa “permanecer” cambiando las funciones de transición a la forma

d : Q x ? ? Q x ? x {L, R, S}

(Kelley, 1995, Pág. 194)

permitiendo que la cabeza de lectura/escritura mantenga una posición fija al leer y rescribir
cualquier símbolo sobre la cinta.

Teoría de la Computación 145


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Máquina de Turing

4.5.2 Subceldas

Una segunda modificación que puede ser aplicada a la MT básicas es la división en


subceldas. Cada celda es dividida en varias subceldas capaces de contener un símbolo de la
cinta (Kelley, 1995, Pág.195). Un ejemplo visual de dicha alteración se muestra en la figura
4.9.

? a a
…. b b b ….
c c ?

Figura 4.9 Subceldas

Como puede verse la cinta se ha transformado y ahora puede decirse que contiene
varias pistas. El contenido de las celdas puede ser representado por n-tuplas ordenas, por
ejemplo (? , a, a), (b, b, b), (c, c, ? ) (presentados en la figura 4.9).

4.5.3 Cintas finitas

Las MT básicas que se han tratado, presentan la característica de crecimiento infinito


de su cinta hacia izquierda o derecha, un tercera modificación a está máquina restringe el
crecimiento de esta cinta hacia su lado izquierdo, impidiendo el movimiento de la cabeza
hacia la izquierda de su símbolo en blanco que marca el inicio de cadena. Una máquina de
éste tipo puede representar una máquina básica, pero con dos pistas. Por ejemplo, considere
la MT básica mostrada en la figura 4.10, la cual es infinita en ambos lados; está puede ser
representada por una cinta finita de su lado izquierdo marcando un punto de referencia para
la división de la cadena en cuestión. Tal representación se muestra en la figura 4.11

Teoría de la Computación 146


Instituto Tecnológico de Celaya Máquina de Turing

? a A a b b b ?

Punto de referencia divisorio

Figura 4.10 Cinta infinita en ambos lados

* B b b a ….
* a a ? ? ….

Figura 4.11 Cinta infinita

El símbolo * marca el límite izquierdo de la cinta. Cuando la MT pasa por el punto de


referencia tendría que encontrase con la celda marcada con * ; sí se encontrara trabajando en
el lado derecho al punto de referencia estaría trabajando en la pista superior de la cita finita.
(Kelley, 1995, Pág. 198)

4.5.4 Multicintas

Una máquina multicintas requiere de mayor complicación en comparación con las


variantes ya presentadas. Esté tipo de máquinas cont iene varias cintas cada una con su
propia cabeza de lectura/escritura, que se mueva independientemente al resto de la cabezas.
En un solo movimiento una máquina de esté tipo realiza las siguientes acciones.

1. Cambia de estado dependiendo del estado actual y del contenido de las


celdas de todas las cintas, que están analizando las cabezas.
2. Escribe un nuevo símbolo en cada una de las celdas barridas por las
cabezas de lectura/escritura.
3. Mueve cada una de sus cabezas en el sentido requerido.

(Kelley, 1995, Pág. 198)

Teoría de la Computación 147


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Máquina de Turing

Lo cual cambia las funciones de transición a la forma

d : Q x ? n ? Q x ? n x {L, R}n

(Kelley, 1995, Pág. 198)

Esta función de transición puede traducirse de la siguiente manera:

d (q, (s 1 s 2 s 3 …..s n )) = (p, (a 1 a 2 a 3 …….a n ),(m1 m2 m3…….. mn ))

Significa que cambia del estado q al p, reemplazando s n por a n y mueve la cabeza de la


cinta n en la dirección mn . (Kelley, 1995, Pág. 199)

4.5.5 MT no deterministas

Las máquinas de Turing también pueden ser creadas de manera no deterministicas


realizando una modificación a su función de transición. Tal modificación elimina el
concepto de función de transición y lo transforma en una regla de la forma

d (q, s ) ⊆ Q x ? x {L, R}

(Kelley, 1995, Pág. 199)


Y al igual que los AF, es posible representar una MT determinista mediante una no
determinista y viceversa.

Teoría de la Computación 148


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Máquina de Turing

4.6 PROBLEMAS DE HILBERT

La teoría de la computación moderna nace de un problema planteado por David


Hilbert en 1900.
(http://www.webzinemaker.com/admi/m6/page.php3?page=2&total=63&num_web=1604&
rubr=4&id=10460, Abril 2006)

David Hilbert matemático y filósofo alemán, nacido en Königsberg (1862-1943).


Trabajó en muchos campos de las matemáticas, incluyendo la teoría de números y el
cálculo de variaciones, pero sus más importantes contribuciones las hizo en el terreno de la
geometría (Encarta, 2006).

En sus estudios Hilbert, propuso buscar un algoritmo que pudiera solucionar todos los
problemas matemáticos. La búsqueda de este algoritmo por los matemáticos de aquellos
tiempos resultó ser infructuosa; sin embargo no se llego a probar que fuera imposible su
creación.

Posteriormente Turing, partió del problema planteado por Hilbert denominado


Entscheidungsproblem, el cual esbozaba la siguiente pregunta: “¿existe un procedimiento
mecánico para contestar todos los problemas matemáticos, dentro de alguna clase amplia
pero bien definida?”. (http://www.claudiogutierrez.com/bid- fod-uned/Teoria_II.html, Abril
2006)

Tal problema produjo la creación de un "procedimiento eficazmente calculable" el


cual es ahora denominado máquina de Turing.

Turing introdujo el concepto de MT como herramienta para estudiar la computación


desde dos puntos de vista básicos:

a) La posibilidad de computar ciertas funciones, estableciendo que "cualquier función


que sea computable, se puede computar mediante una máquina de Turing constituida
por un dispositivo físico razonable".

Teoría de la Computación 149


Instituto Tecnológico de Celaya Máquina de Turing

b) Y desde la eficiencia que se establece clasificando los algoritmos en determinadas


Clases de Complejidad, en función de cómo escalan los recursos de un cálculo con el
tamaño de los datos. En aquellos tiempos no se creía que está clasificación tuviera
relación alguna con el tratamiento físico de la información, por lo que se podía
estudiarse completamente la teoría de computadoras sin referencia a su
implementación física. Sin embargo, está creencia cambio su enfoque con al aparición
de la computación cuántica.
(http://www.webzinemaker.com/admi/m6/page.php3?page=2&total=63&num_web=1
604&rubr=4&id=10460, Abril 2006)

Sin embargo, la creación de éste procedimiento aun dejo en el aire la pregunta de


Hilbert.

Turing encontró que existían máquinas para las cuales no podía comprobarse la
culminación de su ejecución; es decir, no podía asegurarse que dichas máquinas llegarán a
un punto decisorio final.

La búsqueda de un algoritmo que pudiera terminar con la ejecución continua de


dichas máquinas no produjo frutos por lo cual Turing concluyo que no puede haber un
algoritmo general para decidir todas las cuestiones matemáticas. Por lo que el problema
decisorio de Hilbert no tiene solución. (http://www.claudiogutierrez.com/bid-fod-
uned/Teoria_II.html, Abril 2006)

Esto no quiere decir que en casos individuales no se pueda decidir, sobre alguna
cuestión matemática en particular; o decidir si alguna máquina Turing se detiene o no. Por
ingenio, o incluso simplemente por sentido común, se puede decidir la cuestión en un caso
dado. (Por ejemplo, si una lista de instrucciones en una máquina Turing no contiene la
orden de detenerse, entonces, el sentido común basta para decirnos si se detendrá o no).
Pero no hay ningún algoritmo que funcione para todas las cuestiones matemáticas, ni para
todas las máquinas Turing y todos los números sobre los que pueden actuar.
(http://www.claudiogutierrez.com/bid-fod- uned/Teoria_II.html, Abril 2006)

Teoría de la Computación 150


Instituto Tecnológico de Celaya Máquina de Turing

RESUMEN

Las denominadas Máquinas de Turing (MT) son máquinas abstractas que permiten el
reconocimiento de los lenguajes de tipo 0 (recursivamente enumerables).

Las máquinas de Turing son vistas como una cinta infinita dividida en celdas de
almacenamiento a la cual puede acceder en cualquier parte de la cinta; cada una de las
celdas puede almacenar un símbolo y puede ser leído por una cabeza de lectura/escritura
que recorre la cinta en cualquier sentido (izquierda a derecha ó derecha a izquierda).

Formalmente una máquina de Turing se define como una 7-tupla M = (Q, ? , ?, s, ?,


F , d) donde

♦ Q conjunto finito de estados


♦ ? es el alfabeto de entrada
♦ ? es el alfabeto de la cinta
♦ s es el estado inicial de la pila
♦ ? es un símbolo en blanco ? ∉ ?
♦ d es una función parcial de transición definida por d : Q x ? ? Q x ? x {L,
R}

Una MT también puede ser representada de manera grafica, mediante diagramas de


transiciones o bien mediante de bloques.

Los diagramas de transiciones, muestran transiciones de la forma x/y/m donde el


primer elemento (x) representa el símbolo que se está leyendo en la cinta, el segundo
elemento (y) representa el símbolo que será reescrito en la cinta y finalmente el tercer
elemento (m) representa el movimiento a realizar sobre la cinta que como ya se había dicho
puede ser hacia la derecha o izquierda.

Teoría de la Computación 151


Instituto Tecnológico de Celaya Máquina de Turing

Los bloques básicos para la construcción de máquinas de Turing, representa ya por sí


solos una máquina, la unión de estos bloques permiten la construcción de máquinas
complejas capaces de reconocer un lenguaje.

Se dice que un lenguaje es aceptado por una MT sí todas las cadenas de éste son
reconocidas por dicha máquina. Los lenguajes que son aceptados por una MT son los
denominados lenguajes recursivamente enumerables (R.E.), en particular solo una parte de
estos lenguajes son completamente aceptados por una máquina de esté tipo, dicho lenguajes
son los lenguajes recursivos, o también denominados lenguajes decidibles, que son
aquellos para los que existe una MT que reconozca un al lenguaje.

De manera formal un lenguaje recursivo puede ser definido como:

*
Dado un alfabeto ?, un lenguaje L es recursivo en ?, sí para alguna cadena e ? ?
existe un procedimiento efectivo para decidir sí e ? L o bien w ∉ L.

Una MT puede ser modificada de diferentes maneras, creando nuevas máquinas que
permiten, al igual que la MT básica, el reconocimiento de lenguajes. Tales modificaciones
se extienden desde evitar el movimiento de la cabeza de lectura/escritura sobre la cinta,
hasta crear cinta de múltiples dimensiones, es decir, dichas cintas se extienden hacia la
izquierda, derecha, arriba y abajo de manera infinita.

Una de las primeras variaciones que puede realizársele a una MT es el estado de


permanencia, cambiando las funciones de transición a la forma básica por la función

d : Q x ? ? Q x ? x {L, R, S}

Teoría de la Computación 152


Instituto Tecnológico de Celaya Máquina de Turing

Una segunda modificación que puede ser aplicada a la MT básicas es la división en


subceldas. Cada celda es dividida en varias subceldas capaces de contener un símbolo de la
cinta.

Las MT básicas presentan la característica de crecimiento infinito de su cinta hacia la


izquierda o derecha, una tercera modificación a esta máquina restringe el crecimiento de
esta cinta hacia su lado izquierdo, impidiendo el movimiento de la cabeza hacia la izquierda
de su símbolo en blanco que marca el inicio de cadena.

Una modificación de gran importancia es la creación multicintas. Este tipo de


máquinas contiene varias cintas cada una con su propia cabeza de lectura/escritura, que se
mueva independientemente al resto de las cabezas. En un solo movimiento una máquina de
esté tipo realiza las siguientes acciones.

1. Cambia de estado dependiendo de l estado actual y del contenido de las


celdas de todas las cintas, que están analizando las cabezas.
2. Escribe un nuevo símbolo en cada una de las celdas barridas por las
cabezas de lectura/escritura.
3. Mueve cada una de sus cabezas en el sentido requerido.

Lo cual cambia las funciones de transición a la forma

d : Q x ? n ? Q x ? n x {L, R}n

La creación de la máquina de Turing vino a tratar de resolver uno de los


planteamientos más complicados propuesto por David Hilbert matemático y filósofo
alemán. Hilbert propuso buscar un algoritmo que pudiera solucionar todos los problemas
matemáticos. Posteriormente Turing, partió de éste problema denominado

Teoría de la Computación 153


Instituto Tecnológico de Celaya Máquina de Turing

Entscheidungsproblem, y creo un "procedimiento eficazmente calculable" el cual es ahora


denominado máquina de Turing.

Turing introdujo el concepto de MT como herramienta para estudiar la computación


desde dos puntos de vista básicos:

a) La posibilidad de computar ciertas funciones, estableciendo que "cualquier función


que sea computable, se puede computar mediante una máquina de Turing constituida
por un dispositivo físico razonable".

b) Eficiencia: La eficiencia se establece clasificando los algoritmos en determinadas


Clases de Complejidad, en función de cómo escalan los recursos de un cálculo con el
tamaño de los datos. En aquellos tiempos no se creía que está clasificación tuviera
relación alguna con el tratamiento físico de la información, por lo que se podía
estudiarse completamente la teoría de computadoras sin referencia a su
implementación física. Sin embargo, está creencia cambio su enfoque con al aparición
de la computación cuántica.

Sin embargo, la creación de éste procedimiento no aseguro la solución completa del


planteamiento de Hilbert; ya que Turing encontró que existían máquinas para las cuales no
podía comprobarse la culminación de su ejecución; es decir, no podía asegurarse que dichas
máquinas llegarán a un punto decisorio final.

La búsqueda de un algoritmo que pudiera terminar con la ejecución continua de


dichas máquinas no produjo frutos por lo cual Turing concluyo que no puede haber un
algoritmo general para decidir todas las cuestiones matemáticas. Por lo que el problema
decisorio de Hilbert no tiene solución.

Teoría de la Computación 154


Instituto Tecnológico de Celaya Máquina de Turing

GLOSARIO

♦ Máquina de Turing. Formalmente una máquina de Turing se define como una 7-


tupla M = (Q, ? , ?, s, ?, F , d) donde
- Q conjunto finito de estados
- ? es el alfabeto de entrada
- ? es el alfabeto de la cinta
- s es el estado inicial de la pila
- ? es un símbolo en blanco ? ∉ ?
- d es una función parcial de transición definida por d : Q x ? ? Q x ? x {L,
R}
♦ Lenguajes recursivamente enumerable. La palabra enumerable proviene de que las
cadenas de dichos lenguajes pueden ser listadas (enumeradas) por una máquina de
Turing. (Kelley, 1995, Pág. 180)
♦ Decidibles. Termino que es utilizado para indicar si un problema cuenta con una
solución, es decir se puede decidir o explicar.
♦ Lenguajes recursivos. Un lenguaje L es recursivo sobre de un alfabeto ?, si para
cada cadena que perteneces ? * existe un procedimiento decidible.
♦ Algoritmos irresolubles. Se definen así a aquellos problemas que no pueden ser
resueltos por una secuencia determinada de operaciones. (Brena, 2003, Pág.191)
♦ Computar. Contar o calcular por medio de números alguna operación, evento,
problema.
♦ Computable. Que se puede computar.
♦ Complejidad. La complejidad computacional hace referencia a la cantidad de
recursos computacionales requeridos para resolver un problema.

Teoría de la Computación 155


Instituto Tecnológico de Celaya Máquina de Turing

EJERCICIOS

1. Defina de manera general cual es el funcionamiento de las máquinas de Turing.

2. Defina formalmente una MT.

3. Explique cada una de las variantes que presentan las máquinas de Turing y busque un
ejemplo de cada una de ellas.

4. Mencione cuales son los bloques básicos para la construcción de una MT.

5. ¿Quién fue Alan Turing?

6. Turing introdujo el concepto de MT como herramienta para estudiar la computación


desde dos puntos de vista básicos. ¿Cuáles son estos?

7. ¿Quién fue David Hilbert y cual es el problema que el planteo, dando origen al
planteamiento de la máquina de Turing?

Teoría de la Computación 156


Instituto Tecnológico de Celaya Máquina de Turing

PROBLEMAS

1. Construya una maquina de Turing que permita reconocer el siguiente lenguaje.


a. L = {xn ym zn ¦ n,m = 0}
b. L = {zn am zn am by zn by zn ¦ n = 1, m,y ≥ 0}
c. L = {an b2n ¦ n >0}
d. L = { xn yn+2 zn+3 ¦ n = 0}
e. L = { an bm cn+m ¦ n >0 ,m = 0}

2. Haciendo uso de las variantes de las MT construya una MT que reconozca los lenguajes
mostrados en la pregunta anterior y además que reconozca los mostrados a
continuación.

a. L = {zn am zn am by zn by zn ¦ n = 1, m,y ≥ 0}
b. L = {w ¦ w es una cadena cuyo número de x´s es mayor al número de y´s por las
que esta formada}

3. Construya la gramática que represente la siguiente MT.

a.

Teoría de la Computación 157


Instituto Tecnológico de Celaya Máquina de Turing

LECTURA COMPLEMENTARIA

Biografías de los pioneros de la computación: el enigmático Alan Turing

Por: Carlos Artemio Coello Coello

El matemático inglés Alan Turing fue uno de los pioneros más importantes en el
delineamiento de lo que eventualmente se convertiría en la Teoría de la Computación. El
misterio fue un común denominador a lo largo de la vida de Turing, entre otras cosas, por
su participación en el servicio británico de inteligencia durante la Segunda Guerra Mundial.
El repudio de la sociedad británica debido a su homosexualidad, y su trágico suicidio,
siguen siendo motivo de las más enconadas controversias.

Su infancia y juventud

Alan Mathison Turing fue el segundo y último hijo de Julius Mathison y Ethel Sara
Turing. El inusual apellido Turing lo colocaba en el árbol genealógico de una familia que,
aunque no era rica, pertenecía a la clase media alta inglesa. Su padre ingresó al servicio
civil de la India, y durante su estancia en ese país conoció a la que más tarde sería su
esposa: Ethel Sara Stoney. Ethel era la hija del ingeniero en jefe de los ferrocarriles de
Madras, y provenía de una familia Anglo-Irlandesa de un status socio-económico similar al
de Julius.

Aunque fue concebido en la India, probablemente en el pueblo de Chatrapur [1], Alan


Turing nació en un hospital de Paddington, Londres, en Inglaterra, el 23 de junio de 1912.
Alan y su hermano mayor John pasaron una infancia alejados de sus padres, siempre bajo el
cuidado de terceras personas en diversos hogares ingleses, hasta que su padre se retiró del
servicio en 1926. Se dice que la inteligencia de Alan Turing se manifestó a temprana edad,
pues a los tres años parecía mostrar una inusual capacidad para recordar nuevas palabras

Teoría de la Computación 158


Instituto Tecnológico de Celaya Máquina de Turing

[2]. A los 8 años se empezó a interesar en la Química y montó un laboratorio rudimentario


en el sótano de su casa. Al parecer, una de las influencias seminales de Turing en aquellos
días fue un popular libro llamado "Maravillas naturales que todo niño debiera conocer", el
cual le fue obsequiado por sus padres. Pese al temor de su madre de que no sería aceptado
en una escuela pública inglesa, el joven Turing ingresó en Sherborne cuando contaba con
13 años de edad. A los 14 años ya era capaz de comprender cuestiones relativamente
avanzadas de cálculo, pese a que no había estudiado el tema detalladamente.

Asimismo, se dice que tenía una increíble capacidad para realizar cálculos mentales.
Fue en esta época también, en la que empezó a desarrollar una afición hacia el atletismo
que le acompañaría toda su vida. Pese a su mal desempeño en materias no relacionadas con
las ciencias, Turing logró sobrevivir Sherborne, y continuó estudiando matemáticas por su
cuenta. En 1928 se interesó en la teoría de la relatividad, y aunque se dice que sus notas
privadas sobre la materia bien podrían atribuirse a un estudiante de postgrado, casi se le
impidió tomar los exámenes para obtener el certificado de educación media. Fue en esos
días que Turing conoció al joven Christopher Morcom, un estudiante muy brillante que le
sirvió de compañero intelectual durante una época de intensa curiosidad científica, que se
vió abruptamente interrumpida por la prematura muerte de Morcom, el 13 de febrero de
1930. Según la narración del mismo Turing, cuando ambos se dirigían a Cambridge, se
detuvieron en Londres para visitar a la Sra. Morcom. Durante su estancia en su casa,
Christopher se comió una pera que extrajo de una caja de herramientas de Vanadio. Al
parecer, la pera había estado en suficiente contacto con el vanadio como para envenenarse y
causarle la muerte al joven Morcom, quien tan sólo un año antes había obtenido una beca
para estudiar en Cambridge (Turing aplicó para la misma beca, pero fue rechazado). La
muerte de Morcom dejó huella profunda en Turing, quien se prometió a sí mismo
completar la prometedora carrera científica que Morcom había apenas comenzado. A partir
de entonces, Turing inició una correspondencia frecuente con la mamá de Christopher, y
sus intereses se tornaron hacia los misterios que rodean al encapsulamiento de la mente en
la materia. Con el firme propósito de develar los secretos de la muerte con ayuda de la
ciencia, Turing comenzó a estudiar física cuántica. En su segundo intento por obtener una

Teoría de la Computación 159


Instituto Tecnológico de Celaya Máquina de Turing

beca a Cambridge, Turing finalmente logró ser aceptado en el King's College tras haber
fracasado dos veces consecutivas en su intento por obtener una beca del Trinity College.

En 1932, comenzó a estudiar el entonces reciente trabajo de Von Neumann en


mecánica cuántica, lo cual le permitió canalizar sus dudas espirituales por la vía de la
rigurosidad científica. Al mismo tiempo, la homosexualidad se volvió un rasgo distintivo de
su personalidad [3]. En esa época hizo amistad con un joven estudiante de matemáticas
llamado James Atkins, quien más tarde sería su amante. Pese a que los círculos más
frecuentados por los homosexuales en King's College eran los literarios, Turing prefería los
deportes, y era frecuente que practicara remo, carreras a campo traviesa, y veleo en un
pequeño bote. También aprendió a tocar el violín, pero nunca se hizo diestro con el
instrumento.

Las cosas empezaron a ir bien para Turing, pues se graduó de la licenciatura en


matemáticas con honores en 1934. En 1935, obtuvo otra beca del King's College por su
trabajo en el teorema del límite central en probabilidad (el cual redescubrió sin saber nada
sobre el trabajo previo en la materia). En 1936 obtuvo el Premio Smith por su trabajo en
teoría de la probabilidad, y comenzó a profundizar su estudio del Entscheidungsproblem,
propuesto originalmente por Hilbert, y que nadie había podido resolver. Básicamente, la
pregunta es si existe, al menos en principio, cualquier método o proceso definido mediante
el cual todas las cuestiones matemáticas pueden decidirse (es decir, determinar si existe
alguna manera de escribir un algoritmo para cualquier tipo de problema).

De Europa a América

El resultado del trabajo de Turing en el problema de Hilbert concluyó en abril de


1936, pero debido a que al mismo tiempo el lógico norteamericano Alonzo Church había
publicado un trabajo similar, Turing tuvo que posponer su artículo (ahora considerado
clásico) hasta agosto de 1936, que fue titulado "Sobre los números computables, con una
aplicación al Entscheidungsproblem". Tras la publicación del artículo de Turing, la
comunidad científica se dio cuenta de que la forma en la que éste abordó el problema era
muy distinta al enfoque de Church, y aunque Turing no lo sabía, el concepto de máquina de

Teoría de la Computación 160


Instituto Tecnológico de Celaya Máquina de Turing

Turing que él inventara en su artículo para ilustrar la idea moderna de un algoritmo se ha


vuelto uno de los cimientos más sólidos de la teoría de la computación en nuestros días. En
septiembre de 1936, Turing arribó a la Universidad Princeton, en los Estados Unidos, que
en ese entonces contaba con algunas de las figuras más prominentes del mundo científico.
Su artículo atrajo la atención precisamente de uno de estos destacados científicos, John Von
Neumann, quien le ofreció una beca en el Instituto de Estudios Avanzados de Princeton.
Turing obtuvo su doctorado en matemáticas en mayo de 1938, un mes antes de cumplir 26
años de edad. Su tesis se tituló "Sistema de Lógica Basado en Ordinales", y consistió
básicamente en una extensión de su trabajo original sobre computabilidad. Tras su
graduación, Von Neumann le ofreció una plaza como su asistente, pero Turing declinó la
propuesta para regresar al King's College, pese a no contar con una oferta firme de trabajo
en Inglaterra. Entre 1938 y 1939 vivió de una beca universitaria, mientras estudiaba
filosofía de las matemáticas y trataba de construir una máquina para calcular la función
Zeta de Riemann. De esta época se recuerda a un Turing extravagante, que tartamudeaba
frecuentemente, y tenía una risa nerviosa que hacía casi imposible poder sostener una
conversación con él. Era muy descuidado en su forma de vestir, y solía pasar largas
temporadas sin rasurarse, por temor a cortarse (se dice que se desmayaba cuando veía el
menor rastro de sangre). Cuando montaba su bicicleta, solía ponerse una máscara antígas,
en un intento por controlar sus agudos ataques de fiebre del heno.

Estalla la Segunda Guerra Mundial

La vieja afición de Turing por la criptografía lo convirtió en uno de los primeros 10


académicos ingleses en ser reclutados por su gobierno, en 1939, para trabajar en Bletchley
Park, una vieja casa solariega ub icada a la mitad del camino entre Cambridge y Oxford. Su
tarea era descifrar el complicado código enigma utilizado por los alemanes. Los ingleses
habían fracasado en sus intentos por descifrar este código, hasta que un joven polaco
llamado Robert Lewinski ofreció su ayuda tras haber sido expulsado de una fábrica
alemana por ser judío. Lewinski reconstruyó de memoria la máquina usada por los
alemanes para encriptar sus mensajes, cambiando radicalmente el curso de la Segunda
Guerra Mundial. El trabajo inicial de Turing fue construir unas máquinas llamadas

Teoría de la Computación 161


Instituto Tecnológico de Celaya Máquina de Turing

"Bombas", que se utilizaban para descifrar el código enigma. Aunque el descifrar los
mensajes de la fuerza aérea alemana se volvió cosa rutinaria para la inteligencia británica,
los mensajes de la marina seguían siendo considerados como imposibles de descifrar.
Turing se sintió feliz de poder trabajar en la ambiciosa tarea de descifrar tales mensajes, y
dio muestra de su genio una vez más cuando sus sofisticadas técnicas estadísticas
empezaron a producir frutos hacia fines de 1939, aunque no fue sino hasta mediados de
1941 que pudieron descifrar cotidianamente los mensajes de la marina teutona. Los
alemanes complicaron aún más los códigos de sus submarinos en febrero de 1942, y
repentinamente los ingleses fueron nuevamente incapaces de descifrarlos. En su deseo por
obtener mayores velocidades con sus máquinas descifradoras, la gente de Bletchley Park
comenzó a construir la primera computadora electrónica, llamada Colossus, que estuvo
bajo la supervisión de Turing. Eventualmente, se construirían diez de estas máquinas, y la
primera empezó a operar en diciembre de 1943, dos años antes que el ENIAC (la
computadora digital electrónica construida en la Universidad de Pensilvania, en Estados
Unidos). Aunque el Colossus también usaba un gran número de tubos de vacío e
interruptores digitales, esta máquina (a diferencia de su contraparte americana) se diseñó y
utilizó exclusivamente para descifrar mensajes.

Se dice que, en un cierto punto de la Segunda Guerra Mundial, Turing se llegó a convencer
tanto de que los alemanes invadirían Inglaterra, que convirtió todo su dinero a lingotes de
plata, y los transportó en una carriola al bosque que rodea a Bletchley Park, donde enterró
su tesoro en dos sitios distintos. Esta operación le costó a Turing no sólo lesionarse la
espalda, sino también la pérdida de sus ahorros, porque cuando la guerra terminó, no pudo
acordarse de ninguno de los dos sitios donde había enterrado los lingotes de plata.

Otra anécdota que se recuerda del llamado 'Prof' Turing es que le ofreció matrimonio
a una de sus colegas en Bletchley Park, llamada Joan Clark, la cual aceptó gustosamente.
Turing hubo de retractarse después de la oferta, diciéndole a su prometida acerca de su
homosexualidad. De los seis años que Turing pasó trabajando para el servicio de
inteligencia británico, lo que más se lamenta es que un hombre de su talla intelectual no

Teoría de la Computación 162


Instituto Tecnológico de Celaya Máquina de Turing

pudiera seguir publicando más trabajos científicos como los tres que logró publicar antes de
que estallara la guerra.

Por su trabajo en el Colossus, que para él no fue más que la representación física de la
máquina universal que diera a conocer en su artículo de 1937, recibió la Orden del Imperio
Británico en 1946.

Después de la Guerra

En 1944, Turing estaba cautivado con el potenc ial de la computadora que había
concebido teóricamente, y fue contratado por el Laboratorio Nacional de Física (NLP por
sus siglas en inglés) en Inglaterra para competir con el proyecto americano EDVAC, de
John Von Neumann, el cual irónicamente se había adelantado a Turing en la publicación de
la idea de una computadora electrónica. Turing fungió como Oficial Científico Principal en
el NLP, trabajando en el Automatic Computing Engine (ACE). Turing tuvo la visión de una
computadora con memoria que implementaría las funciones aritméticas mediante
programación en vez de con componentes electrónicos, y que podría desempeñar todo tipo
de tareas (por ejemplo, manejo de archivos, álgebra, jugar ajedrez, encriptamiento, etc.)
Hacia 1947, concibió la idea de las redes de cómputo y el concepto de subrutina y
biblioteca de software. Sin embargo, al percatarse que los ingenieros involucrados en su
proyecto no habían producido nada tangible de su máquina en un largo período, comenzó a
sentirse sumamente frustrado. En 1947 Turing pidió un año sabático en el que se fue al
King's College. En vez de publicar los principios fundamentales de cómputo que había
descubierto, se dedicó a estudiar fisiología y neurología, y en un reporte interno del NLP de
esa época, describe las ideas básicas de lo que hoy se conoce como una red neuronal.
Cuando Turing regresó al NLP en 1948 y se dio cuenta de que no se había realizado mayor
progreso en su proyecto, decidió renunciar.

Fue también en esos días en que Turing comenzó a correr largas distancias con
frecuencia, sintiendo que necesitaba el ejercicio. Se sabe que ganó los campeonatos de las 3
y 10 millas de su club (el Walton Athletic Club), y que quedó en 5o. lugar en un maratón de
aficionados de 1947. De hecho, se interesó en prepararse para el equipo británico de

Teoría de la Computación 163


Instituto Tecnológico de Celaya Máquina de Turing

atletismo con vistas a las Olimpíadas de 1948, pero sus planes se vinieron abajo debido a
una lesión en la cadera.

El regreso de Turing a Cambridge le ayudó a formar un círculo de amigos más


extenso, y le motivó a hablar más abiertamente acerca de su sexualidad. Un estudiante de
matemáticas del King's College, llamado Neville Johnson, fue su amante en aquellos días.

Tras su renuncia al NLP, Turing se fue a trabajar al laboratorio de cómputo de la


universidad de Manchester, donde su viejo mentor, Newman, había logrado construir la
máquina de sus sueños. Su trabajo fue el desarrollo de software, y nada realmente
memorable se produjo durante este período. Un poco más tarde, sin embargo, Turing
plasmó sus ideas sobre la filosofía de las máquinas y la mente en un artículo llamado
"Computing Machinery and Intelligence", que se publicó en 1950, y todavía se considera
un clásico en Inteligencia Artificial.

En 1950, comenzó a interesarse en los usos prácticos de las matemáticas, y desarrolló


un trabajo pionero en la teoría de la morfogénesis: la teoría del crecimiento y la forma en
biología. Turing se fue a vivir a Manchester, comprando su primera casa propia en
Wilmslow. En julio de 1951 fue electo "fellow" (miembro) de la Sociedad Real por sus
contribuciones científicas de 15 años atrás.

La humillación y su misteriosa muerte

En la navidad de 1951, Turing entabló amistad con un joven desempleado de


Manchester, que después sería su amante. A principios de 1952, su casa en Wilmslow fue
robada por un amigo de su amante, y Turing acudió a la policía, sin revelar su relación
homosexual. Cuando la policía averiguó la historia completa, decidió arrestar a Turing por
"indecencia mayor", y fue llevado a juicio el 31 de marzo de 1952. En la corte, Turing, no
negó su homosexualidad, y dijo que no veía nada malo en ella. Eso le valió ser condenado a
un año de prisión, y conmutó su condena por un año de tratamiento con hormonas
femeninas que le causaron impotencia, y le hicieron brotar senos, además de provocarle
depresiones agudas. Aunque eso no le impidió continuar con su trabajo en la morfogénesis

Teoría de la Computación 164


Instituto Tecnológico de Celaya Máquina de Turing

y en otras aplicaciones de matemáticas a la biología, se hizo para él cada vez más molesto
el cerco de aislamiento que le tendió el servicio de inteligencia británica, ante el temor de
que pudiera revelar secretos al enemigo. Se sabe, por ejemplo, que oficiales de seguridad
catearon su casa cuando un amigo noruego lo fue a visitar a Manchester en 1953.

Ni su siquiatra, sus amigos o familiares sintieron que Turing estuviera pasando por
ninguna crisis particularmente grave en 1954, pero el 8 de junio de ese año fue encontrado
muerto por su ama de llaves. El forense determinó que se había suicidado un día antes, con
una manzana que tenía cianuro, y que fue encontrada al lado de su cama. Su madre creyó
que la ingestión de cianuro pudo haber sido accidental, pues Turing solía realizar varios
experimentos de química en su casa, y se especuló que algo de este veneno pudo habérsele
impregnado en los dedos. Esa hipótesis, sin embargo, se cree poco probable, dado que
Turing tenía una vasta experiencia en la manipulación de sustancias químicas, pero la teoría
del suicidio parece también un tanto extraña. Hay quienes también especulan que se le
mandó a matar porque resultaba una incomodidad para el gobierno británico.
Independientemente de cuál sea la verdad sobre su muerte, lo único que podemos afirmar
es que el mundo perdió a un gran científico, que se encontraba en el punto máximo de su
producción intelectual. En su honor, la ACM (Association for Computing Machinery) llama
"Turing Award" a su premio más importante, el cual se otorga desde 1966 a los expertos
que han realizado las contribuciones más importantes al avance de la computación en el
mundo.

Referencias

[1] Hodges, Andrew. "Alan Turing: The Enigma", Simon and Schuster, New York, 1983.

[2] Slater, Robert. "Portraits in Silicon", The MIT Press, 1992.

[3] Lee, J. A. N. "Computer Pioneers", IEEE Computer Science Press, 1995.

Teoría de la Computación 165


Instituto Tecnológico de Celaya Máquina de Turing

BIBLIOGRAFÍA

1. Brena, verano 2003 Ramón Brena. Autómatas y Lenguajes. En:


http://lizt.mty.itesm.mx/~rbrena/AyL.html. Consultado por última vez en Abril del
2006.
2. Chesñevar I. Carlos, Maquitman Ana G. y otro. 2003. Tecnologías Informáticas en
un curso de Lenguajes Formales y Teorías de Autómatas: un enfoque
constructivista. En: http://fermat.eup.udl.es/~cic/2003/2003_cacic_construc.pdf
Consultado por última vez en marzo del 2006.
3. Coello Coello, Otoño- invierno 1999. Biografías de los Pioneros de la
Computación: El Enigmático Alan Turing. En:
http://www.lania.mx/biblioteca/newsletters/1999-otono- invierno/aturing.html.
Consultado por última vez Abril 2006.
4. Dean Kelley, mayo 1995 Dean Kelley. Teoría de autómatas y lenguajes formales.
Editorial: Prentice-Hall.
5. ENCARTA, 2006. Biblioteca de Consulta Microsoft Encarta. De 1993 a 2005.
Editado por Microsoft Corporation.
6. Gutiérrez, 1997; Claudio Gutiérrez. La informática como ciencia teórica. En:
http://www.claudiogutierrez.com/bid- fod-uned/bibliografia.html#Penrose%2089.
Consultado por última vez Abril 2006.
7. Salas, Sanz; octubre 2001 Pedro Salas y Angel Sanz. Tendencias Científicas. En:
http://www.webzinemaker.com/admi/m6/page.php3?page=2&total=63&num_web=
1604&rubr=4&id=10460. Consultado por última vez en Abril del 2006.

Teoría de la Computación 166


Instituto Tecnológico de Celaya Máquina de Turing

RETROALIMENTACIÓN

Retroalimentación a los ejercicios.

1. Una máquina de Turing es representada como una cinta infinita dividida en celdas de
almacenamiento, a las que se puede acceder en cualquier parte de la cinta; cada una
de las celdas puede almacenar un símbolo que es reconocido por una cabeza de
lectura/escritura que recorre la cinta en cualquier sentido (izquierda a derecha ó
derecha a izquierda). Tal cinta es representada en la siguiente figura.

3. Las máquinas de Turing suelen presenta en su construcción algunas variantes, entre


las cuales existen cuatro principales que son:

Permanencia. La variación de permanencia permite introducir un nuevo movimiento


(S) a la cabeza de lectura / escritura. Por lo cual la función de transiciones presenta la
siguiente forma.

d : Q x ? ? Q x ? x {L, R, S}

Permitiendo que la cabeza de lectura/escritura mantenga una posición fija al leer y


reescribir cualquier símbolo sobre la cinta.

Subceldas. Cada celda es dividida en varias subceldas capaces de contener un símbolo


de la cint a. La división de la cinta construye pistas por lo que ésta variación también
es llamada multipistas. Como puede observarse en la siguiente figura.

Teoría de la Computación 167


Instituto Tecnológico de Celaya Máquina de Turing

? a A
…. B b B ….
C c ?

Subceldas

El contenido de las celdas puede ser representado por n-tuplas ordenas, por ejemplo
(? , a, a), (b, b, b), (c, c, ? ).

Cintas finitas. Las MT básicas cuentan con la característica de crecimiento infinito de


su cinta, hacia izquierda y derecha de la misma, un tercera modificación a está
máquina restringe el crecimiento de esta cinta hacia su lado izquierdo, impidiendo el
movimiento de la cabeza hacia la izquierda de su primer símbolo en blanco.

Multicintas. Una máquina multicintas requiere de mayor complicación en


comparación con las variantes ya presentadas. Esté tipo de máquinas contiene varias
cintas cada una con su propia cabeza de lectura/escritura, que se mueva
independientemente al resto de la cabezas. En un solo movimiento una máquina de
esté tipo realiza las siguientes acciones.

1. Cambia de estado dependiendo del estado actual y del contenido de las


celdas de todas las cintas, que están analizando las cabezas.
2. Escribe un nuevo símbolo en cada una de las celdas barridas por las
cabezas de lectura/escritura.
3. Mueve cada una de sus cabezas en el sentido requerido

Lo cual cambia las funciones de transición a la forma

d : Q x ? n ? Q x ? n x {L, R}n

Teoría de la Computación 168


Instituto Tecnológico de Celaya Máquina de Turing

Esta función de transición puede traducirse de la siguiente manera:

d (q, (s 1 s 2 s 3 …..s n )) = (p, (a 1 a 2 a 3 …….a n ),(m1 m2 m3…….. mn ))

Significa que cambia del estado q al p, reemplazando s n por a n y mueve la cabeza de


la cinta n en la dirección mn .

5. Alan Mathison Turing (1912 - 1954). Nació en Londres (Gran Bretaña), estudio en la
universidad de Cambridge, en donde se graduó de la licenciatura de matemáticas con
honores en 1934. En abril de 1936, publicó el artículo "On computable numbers, with
an application to the Entscheidungsproblem" en el que introduce el concepto de
algoritmo y de máquina de Turing dando respuesta al problema de decisión
planteado por Hilbert en 1900. Estudia también en la universidad de Princeton
(EE.UU). Turign colaboró en la Segunda Guerra Mundial, descifrando los códigos
emitidos por la máquina Enigma utilizada por los alemanes. Y comienza la
construcción de la primera computadora electrónica, llamada Colossus. Otro de los
campos de investigación de Turing fue la inteligencia artificial, se puede decir que
esta disciplina nació a partir del artículo titulado "Computing Machinery and
Inteligence" publicado por Turing en 1950. En 1951, es nombrado miembro de la
Sociedad Real de Londres por sus contribuciones científicas.

7. David Hilbert (1862-1943), destacado matemático y filósofo alemán. Nació en


Königsberg, al este de Prusia (hoy Kaliningrado, Rusia). Hilbert trabajó en muchos
campos de las matemáticas, incluyendo la teoría de números y el cálculo de
variaciones, pero sus más importantes contribuciones las hizo en el terreno de la
geometría. Hilbert había concebido la idea de reducir la esencia de las matemáticas al
concepto de prueba o algoritmo. De acuerdo con este intento, propuso a los
matemáticos de su tiempo (primer tercio del siglo veinte) buscar un algoritmo que
pudiera solucionar todos los problemas matemáticos.

Teoría de la Computación 169


Instituto Tecnológico de Celaya Máquina de Turing

Retroalimentación a los problemas.

1. a.

c.

e.

Teoría de la Computación 170


Instituto Tecnológico de Celaya Máquina de Turing

2. a.

c.

e.

Teoría de la Computación 171


C
A DECIBILIDAD
P
I OBJETIVO

T
U
Definir los lenguajes decidibles, los
problemas que presentan y la relación que

L
tiene la computación con la lógica

V
Instituto Tecnológico de Celaya Decibilidad

Lenguajes
recursivamente
enumerables

Que forman parte de

Lenguajes decibibles El Problema de Halting

Define a Presenta

Decidibilidad

Se relaciona

Decidibilidad de Teorías
Lógicas

Figura 5.1 Diagrama temático de la unidad V

Teoría de la Computación 173


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Decidibilidad

5. DECIBILIDAD

5.1 INTRODUCCIÓN

La toma de decisiones es un aspecto muy importante y cotidiano en la vida de todo


ser humano, desde elegir que se va a comer hasta definir si comprar nuevas acciones para la
empresa, son operaciones vitales y de gran importancia para la sobrevivencia del hombre;
el enfocar su mente al análisis de un problema para encontrar una solución apta a él, ha
generado que al paso del tiempo el ser humano haya evolucionado.

Hoy en día la toma de decisiones permite que un sistema de cómputo mejore nuestra
vida diaria. Estos sistemas creados por el hombre, han sido basados en las denominadas
tablas de verdad, cuyos orígenes se remontan a los años de 281 al 206 A.C. período en el
que vivió Crisipo de Soli, quien fue criticado y humillado por el planteamiento de estas
tablas, cuando ahora son la base de los sistemas computacionales con los que se cuentan. El
análisis del “verdadero” y “falso” se extiende a la clasificación de lenguajes. Se dice que un
lenguaje que es reconocido por una MT es un lenguaje computable, por ende, sí los
sistemas computacionales son basados en la toma de decisiones, los lenguajes reconocidos
por un sistema de este tipo deben de ser decidibles. Es decir, puede tener dos posibles
soluciones, el ser aceptado por el sistema o algoritmo, o bien, el ser rechazado; lo que
dependerá de sus características. Éste es el primer enfoque que se visualiza en la presente
unidad, posteriormente se analiza la posibilidad de que alguno de estos lenguajes o bien
problemas no encuentre una solución, lo cual ha sido denominado como problema de
Halting. Finalmente, se analiza la relación de la lógica con la computación y se definen
conceptos de teorías lógicas decidibles.

Teoría de la Computación 174


Instituto Tecnológico de Celaya Decidibilidad

5.2 LENGUAJES DECIDIBLES

El termino decidible proviene del concepto decisión o decidir; es decir dar solución a
algo. Un sistema formal5 es decidible sí existe un algoritmo que afirme en tiempo finito, sí
una cadena cualquiera es un teorema o no lo es. (http://es.wikipedia.org/wiki/Sistema
_formal, Abril 2006) Dicho en otras palabras, el concepto decidibilidad, también conocida
como resolubilidad, es aplicado sobre aquellos problemas para los que existen algún
algoritmo cuyo resultado de computación sea verdadero o falso (si o no).

En la unidad pasada se estudio una de las máquina s abstractas reconocedoras de


lenguajes. Dicha máquina es considerada como la más poderosa, capaz de reconocer desde
un lenguaje regular hasta un lenguaje recursivamente enumerables.

Las Máquinas de Turing (MT) estudiadas, han definido únicamente un estado de


aceptación; cuando una cadena entra a la máquina y llega a éste estado, se dice, que la
cadena ha sido aceptada, mientras que el resto de las cadenas suelen quedarse sobre algún
estado intermedio, deduciéndose que la cadena no es válida. Ahora considere una MT que
define dos estados; uno de aceptación y uno de rechazo, cuando una cadena no es valida
para el lenguaje, la MT suele llevar a un estado de rechazo o de parada, indicando de
manera formal que la cadena no es aceptada.

De la clasificación anterior se puede definir dos tipos de lenguajes, los lenguajes


aceptables y los lenguajes decidibles. Los primeros son aquellos para los cuales existe una
máquina de Turing que acepta todas las cadenas pertenecientes al lenguaje, estos lenguajes
son los denominados lenguajes recursivamente enumerables. Los segundos son aquellos
lenguajes para los cuales existe una máquina de Turing que brinde un valor de aceptación o
de rechazo, estos lenguajes son también denominados como lenguajes recursivos, y como
en el caso de los lenguajes regulares, dependientes e independientes del contexto forman
parte de los lenguajes recursivamente enumerables, es decir son un subconjunto de éste.

5
Un sistema formal o un sistema axiomático es un artificio matemático compuesto de símbolos que se unen
entre sí formando cadenas que a su vez pueden ser manipuladas según reglas para producir otras cadenas.
(http://es.wikipedia.org/wiki/Sistema_formal, Abril 2006)

Teoría de la Computación 175


Instituto Tecnológico de Celaya Decidibilidad

Los lenguajes recursivamnete enumerables o aceptables son aquellos para los que
existe una MT cuya ejecución obtiene un estado de parada para cada cadena que entra en él.
Formalmente se define a un lenguaje aceptable como :

Un lenguaje L es Turing-aceptable si hay una MT que lleva a un estado halt (de


parada) para toda w ? L.

(Brena, 2003, Pág.179)

Los lenguajes recursivos pueden verse como aquellos para los cuales existe una
función recursiva que puede ser calculada por una MT (f(x) = y). En otras palabras se dice
que un lenguaje es decidible si la secuencia de cadenas que lo forman son también
decidibles; de manera formal un lenguaje recursivo se define como:

Se dice que un lenguaje L es Turing-decidible si hay una MT que entregue un


resultado 1(sí) si la entrada w ? L, y un 0(no) en caso de que la entrada w ∉ L.

(Brena, 2003, Pág.182)

Por ejemplo, si considere el problema de reconocer palabras cuyo número de b´s sea
el doble que de a´s (abb, aabbbb,…), si la cadena es correcta la MT decidible arrojara un 1,
en caso contrario arrojará como 0.

Cabe hacer resaltar que para que un lenguaje pueda ser considerado como decidible,
debe comprobarse primero como aceptable, es decir

Un lenguaje L es Turing-decidible solamente si en Turing-aceptable.

(Brena, 2003, Pág.182)

Teoría de la Computación 176


Instituto Tecnológico de Celaya Decidibilidad

Sí un lenguajes no es decidible, entonces es indecidible o irresoluble, sin ésta una


desventaja ya que los lenguaje no decidibles o no computables sobrepasen a los decidibles.
(http://www.filosoficas.unam.mx/~morado/LogicaHoy/alvarado.htm, Mayo 2006)

Debe entenderse que una MT suele considerarse como un algoritmo computable ya


que su ejecución es considerada como un conjunto de procesos e instrucciones cuya entrada
es un lenguaje decidible; por lo que la computabilidad de dichos procesos es indiscutible.

5.3 EL PROBLEMA DE PARADA (HALTING PROBLEM)

El problema de parada o Halting problem, se presenta en aquellas MT cuya


secuencia de análisis no encuentra un estado de parada. Es decir, las MT decidible suelen
llevar a un estado de aceptación o bien a un estado de no aceptación; pero ¿que ocurre sí
una MT nunca puede llegar a ninguno de estos dos estados?, se encontraría en un ciclo
constante para el que no se sabe si existe un momento de parada. Tal situación involucra
que dicho lenguaje sea no computable ya que al no haber una MT que pueda resolver dicho
problema, no habrá un algoritmo que pueda hacerlo. Tal situación puede ser probada a
través de la siguiente suposición.

Presúmase que se crea una MT A que determina si cualquier otra, MT B se va a


detener o no; es decir, termina con un 1, si B se detiene, y con un 0 si B no se detiene;
además de que podrá comprobar su propio estado de parada, es decir, su propia
codificación. (Domínguez, 2004, Pág.47)

Además se cuenta con una tercer máquina, C, la cual se detendrá si A no se detiene, y


viceversa. Lo que implica la creación de un ciclo infinito. Ahora, ¿qué sucede si C trata de
comprobar su estado actual, es decir, sí C trabaja sobre su propia codificación? La respuesta
a esta pregunta tiene la siguiente lógica, C se detendrá si no se detiene, y no se detiene sí, y
sólo sí, se detiene. “Esto es una contradicción total. Lo que quiere decir que tal máquina no

Teoría de la Computación 177


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Decidibilidad

puede existir; lo que a su vez equivale a decir que el problema que estamos estudiando es
indecible.” Tal proceso es representado gráficamente en la figura 5.2.
(http://www.monografias.com /trabajos16/automatas-y- gramaticas/automatas- y gramaticas
.shtml, Abril 2006)

Para a w 1
w B
No para a w 0

A Para a B(w) 1
Para a w 1
w B
No para a w 0
No para B(w) 0

C No para a A(w) 0
Para a B(w) 1
B(w) A
No para a B(w) 0
Para a A(w) 1

Figura 5.2. Problema de Parada

Los lenguajes que presentan el problema de Halting son denominados como


problemas irresolubles. (Kelley, 1995, Pág. 242)

El problema de paro ha sido de gran importancia, ya que fue el primer problema


considerado como irresoluble; y es la base para probar la irresolubilidad de nuevos
problemas. (Brena, 2003, Pág. 191) Para tal fin, suele suponerse que el problema de parada
es soluble, si existe un algoritmo (una MT) que resuelva el problema en cuestión (Kelley,
1995, Pág. 243).

Teoría de la Computación 178


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Decidibilidad

5.4 DECIDIBILIDAD DE TEORÍAS LÓGICAS

La lógica es considerada como una disciplina y rama de la filosofía que estudia los
principios formales del conocimiento humano (Microsoft, 2003, Lógica). La lógica se basa
en la creación de premisas o proposiciones cuyo estudio lleva a la construcción de
conclusiones validas.

A través de varios siglos la lógica formal ha pasado por varios periodos, desde sus
inicios con los griegos, entre los que sobresalen Platón, Euclides, Arquímedes, Aristóteles,
Leibniz, Crisipo de Soli cuyo planteamiento de las tablas de verdad son fundamentales hoy
en día para la creación de una PC; pasando por los matemáticos británicos George Boole y
Augustus De Morgan, el alemán Gottlob Frege, los matemáticos británicos Bertrand
Russell y Alfred North Whitehead hasta nuestros días con la colaboración de cientos de
personas distinguidas en estos ámbitos de estudio . La evolución de la lógica con la
aportación de todos estos científicos y filósofos llevó cientos de años por lo cual la historia
de la lógica puede dividirse en varios periodos, la lógica tradicional de 500 A. C. a 1847
D.C.; la lógica en edad media de 1847 a 1880; la lógica en edad moderna de 1880 a 1960 y
la lógica en una edad contemporánea a partir de 1960 hasta nuestros días, de la cual surge
la Lógica Computacional que hoy en día fluye y se expande por todo el mundo,
permitiendo a la humanidad construir sistemas tan poderosos y serviciales que seguramente
Platón nunca imagino.

A través de todo este estudio puede concluirse que la lógica ha tenido como objetivo
el de mecanizar tareas en las que interviene la capacidad deductiva. Esto a través del
planteamiento de proposiciones que llevan a una deducción lógica, creando teorías estables.

En nuestros días la lógica ha tomado otro enfoque. La computación, cuyo poder


deductivo se encuentra ligado a los alcances lógicos que se han encontrado; concluye que
todo aquello que involucra una deducción lógica valida, es computable. Una de estas
nociones computables son, como ya se sabes, las tan mencionadas Máquinas de Turing,
cuyo poder permite el reconocimiento de lenguajes y teorías lógicas.

Teoría de la Computación 179


Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
Instituto Tecnológico de Celaya For Evaluation Only. Decidibilidad

Una teoría lógica (TL) se define a partir de un conjunto de enunciados dados,


llamados axiomas6 , unas reglas de inferencia y un esquema de derivación. A partir de los
axiomas y aplicando las reglas de inferencia y el esquema de derivación se infieren los
teoremas de la teoría. El conjunto de teoremas de la teoría forman un lenguaje formal.
(http://www.filosoficas.unam.mx/~morado/LogicaHoy/alvarado.htm, Mayo 2006.)

De la definición anterior se puede deducir que si esta teoría construye lenguajes y los
lenguajes son aceptados por una MT de manera que puedan definirse como decidibles,
entonces por ende los teoremas de los que provienen también serán decidibles. De tal
manera que podría utilizarse los términos de teorías lógicas y lenguajes decidibles de
manera indistinta.

El uso lógica provee de grandes beneficios para el hombre en todos los rubros, por
ejemplo, la lógica difusa (fuzzy logic), es utilizada en la manufactura de dispositivos tales
como hornos de microondas, lavadoras, planchas, etc., hasta los grandes sistemas como
aviones y satélites aeroespaciales. La Lógica Modal, cuyo lenguaje, es una extensión del
lenguaje de la Lógica de Primer Orden, hace posible el estudio formal, simbólico de
conceptos tales como conocimiento (Lógica Epistémica), creencia (Lógica Doxástica),
temporalidad (Lógica Temporal), normatividad (Lógica Deóntica), etc.; cuyos desarrollos
son producto de la así llamada Inteligencia Artificial ó Computacional, cuyo objetivo es la
implementación en una computadora de procesos que emulen o reproduzcan conductas
inteligentes, tales como el aprendizaje, el razonamiento, la adaptación, entre otros. (
http://www.filosoficas.unam.mx/~ morado/LogicaHoy /alvarado .htm, Mayo 2006)

6
Proposición tan clara y evidente que se admite sin necesidad de demostración. Cada uno de los principios
fundamentales e indemostrables sobre los que se construye una teoría.

Teoría de la Computación 180


Instituto Tecnológico de Celaya Decidibilidad

RESUMEN

Las Máquinas de Turing (MT) estudiadas en la unidad pasada, han definido


únicamente un estado de aceptación; cuando una cadena entra a la máquina y llega a este
estado, se dice, que la cadena ha sido aceptada, mientras que el resto de las cadenas suelen
quedarse sobre algún estado intermedio, deduciéndose que la cadena no es valida. Ahora
considere una MT que define dos estados, el de aceptación y el de rechazo cuando una
cadena no es valida para el lenguaje, la MT suele llegar a este estado de rechazo o de
parada, indicando de manera formal que la cadena no es aceptada. Dichas máquinas suelen
obtener un resultado de aceptación o de rechazo sobre las cadenas que recibe como entrada,
cuando esto ocurre se dice que las entradas recibidas por dicha máquina son decidibles.

Los lenguajes decidibles son clasificados así, si existe una función recursiva que
puede ser calculada por una MT; de tal manera que se considera que los lenguajes
denominados como recursivos son decidibles.

Los leguajes aceptables son aquellos cuyas cadenas han sido aceptadas por una MT,
un lenguaje no puede ser decible si no es aceptable; sin embargo un lenguaje aceptable si
puede ser no decidible.

Los lenguajes o problema que no es reconocido por una MT se denomina como


irresoluble, un ejemplo clásico y podría clasificarse como el principal, es el denominado
“Problema de Parada” o “Halting Problem”.

El problema de parada o Halting problem, se presenta en aquellas MT cuya


secuencia de análisis no encuentra un estado de parada. Es decir, las MT decidible suelen
llevar a un estado de aceptación o bien a un estado de no aceptación; pero ¿que ocurre sí
una MT nunca puede llegar a ninguno de estos dos estados?, se encontraría en un ciclo
constante para el que no se sabe si existe un momento de parada. Tal situación involucra
que dicho lenguaje sea no computable ya que al no haber una MT que pueda resolver dicho
problema, no habrá un algoritmo que pueda hacerlo.

Teoría de la Computación 181


Instituto Tecnológico de Celaya Decidibilidad

El problema de paro es de gran importancia, ya que fue el primer problema


considerado como irresoluble; y es la base para probar la irresolubilidad de nuevos
problemas. Para tal fin, suele suponerse que el problema de parada es resoluble, si existe un
algoritmo (una MT) que resuelva el problema en cuestión.

La lógica es considerada como una disciplina y rama de la filosofía que estudia los
principios formales del conocimiento humano (Microsoft, 2003, Lógica). La lógica se basa
en la creación de premisas o proposiciones cuyo estudio lleva a la construcción de
conclusiones validas.

Una teoría lógica (TL) se define a partir de un conjunto de enunciados dados


llamados axiomas, unas reglas de inferencia y un esquema de derivación. A partir de los
axiomas y aplicando las reglas de inferencia y el esquema de derivación se infieren los
teoremas de la teoría. El conjunto de teoremas de la teoría forman un lenguaje formal.

De la definición anterior se puede deducir que si ésta teoría construye lenguajes y


los lenguajes son aceptados por una MT de manera que puedan definirse como decidibles,
entonces por ende los teoremas de los que provienen también serán decidibles.

Teoría de la Computación 182


Instituto Tecnológico de Celaya Decidibilidad

GLOSARIO.

♦ Decibilidad. El termino decidibilidad, también conocido como resolubilidad, es


aplicado a problemas para los cuales exista un algoritmo computable.
♦ Lenguaje decid ibles. Un lenguaje es decidible, sí existe una MT que entregue un
resultado falso o verdadero (0,1) para una entrada dada.
♦ Lenguajes aceptables. Un lenguaje aceptado por una MT es el conjunto de palabras
aceptadas por ella.
♦ Lenguajes no decidible. Todos aquellos para los que no existe un algoritmo que
puede resolverlos.
♦ Problema de parada. Es el primer problema irresoluble detectado, y se caracteriza
por ser un problema cuya ejecución nunca finaliza.
♦ Teorema. Proposición demostrable lógicame nte partiendo de axiomas o de otros
teoremas ya demostrados, mediante reglas de inferencia aceptadas.
♦ Proposición. Enunciación de una verdad demostrada o que se trata de demostrar
♦ Teoría. Serie de las leyes que sirven para relacionar determinado orden de
fenómenos. Hipótesis cuyas consecuencias se aplican a toda una ciencia o a parte
muy importante de ella.
♦ Inferencia. Sacar una consecuencia o deducir algo de otra cosa.

Teoría de la Computación 183


Instituto Tecnológico de Celaya Decidibilidad

EJERCICIOS.

1. Conteste correctamente las siguientes preguntas.


a. Explique con sus propias palabras, el termino decibilidad.

b. ¿Cual es la diferencia entre un lenguaje decidible y un lenguaje aceptable?

c. ¿Cómo suele identificarse a un lenguaje decidible o computable?

d. ¿De que manera se modifican las MT para poder reconocer un lenguaje


decidible?

e. Explique con sus propias palabras el problema de parada o de Halting

f. ¿Defina el termino resolubilidad?

g. ¿Que diferencia hay entre los lenguajes recursivamente enumerables y los


numerables?

h. Explique por que el problema de parada es irresoluble.

i. Defina el concepto de teoría lógica.

2. Afirme o rechace al siguiente suposición.

Un L es Turing-aceptable si es Turing-decidible

Teoría de la Computación 184


Instituto Tecnológico de Celaya Decidibilidad

LECTURA COMPLEMENTARIA

La importancia de la Lógica en las Ciencias de la

Computación

Por: Miguel Carrillo Barajas

Los temas de computación son muy populares en esta época. La televisión exhibe
propaganda de los procesadores de computadora “último modelo”. El acceso a Internet se
ofrece hasta en los teléfonos móviles. Pero, a pesar de esta popularidad, casi nadie sabe que
detrás del origen y del desarrollo de la computación hay una precursora anónima: la lógica.

El papel más sencillo de la lógica se observa cuando, al usar el lenguaje, intentamos


dotar de un “sentido lógico” a las ideas que expresamos. Algo similar se observa en
computación cuando se usa la lógica en los lenguajes de programación para dotar de
“sentido lógico” a las instrucciones de los programas de computadora, mediante
construcciones de la forma if... then... Pero la importancia de la lógica en la computación va
mucho más allá de su uso. Para empezar, basta decir que la lógica se ocupa de temas de
computación antes de que las computadoras existieran.

Aquí exponemos, sin recurrir a tecnicismos, a una descripción breve de la lógica y


de su papel en la computación, resaltando algunos de sus éxitos y fracasos. Al final,
especulamos sobre el posible impacto de la lógica en el futuro de la computación.

¿Qué es la lógica?

Si se quiere evitar entrar en cualquier tipo de complicación, puede decirse que la


lógica es la materia que se encarga del estudio de los mecanismos del pensamiento
deductivo.

Teoría de la Computación 185


Instituto Tecnológico de Celaya Decidibilidad

En el contexto de la cultura occidental, el origen de la lógica (y de casi todo) se


remonta a la época de los griegos (2). Dos figuras de influencia fundamental son:
Aristóteles (3) (384 a.C. – 322 a.C.) y Euclides (4). Aristóteles colocó a la lógica en un
lugar distinguido del Conocimiento y Euclides fue el principal promotor del Método
Axiomático mediante el texto de “Los Elementos”, considerado como la obra de mayor
influencia en la historia de las matemáticas. En esta época, la lógica no se concebía como
una ciencia sino como un “conjunto de herramientas” aplicables a la ciencia. Estas
herramientas consistían, básicamente, en esquemas de razonamiento, tales como: (i) todo
griego es una persona; (ii) toda persona es mortal; (iii) por lo tanto, todo griego es mortal.

Después de los griegos, otra figura que resalta en la historia de la lógica es Gottlob
Frege (5) (1848 – 1925). A Frege se le considera el fundador de la Lógica Simbólica
Moderna, mejor conocida como Lógica Matemática. La participación de Frege en la
historia de la lógica ha quedado curiosamente marcada por un error que cometió al
proponer (y publicar) un sistema axiomático para la aritmética, que resultó ser
“inconsistente”, es decir, permitía deducir proposiciones falsas. Los errores no son
generalmente bien vistos, nadie quisiera mencionarlos (sobre todo los propios), pero suelen
ser muy importantes, a veces más que los éxitos. Este error de Frege fue señalado por otro
gran personaje, Bertrand Russell (6), y se convirtió en un factor importante en la generación
de un ambiente de duda alrededor de la idea de fundamentar las matemáticas mediante
sistemas axiomáticos. En esta época inicia la corriente del Logicismo, cuya tesis principal
consiste en afirmar que todas las matemáticas son reducibles a la lógica.

Quizás ahora es difícil imaginar la ilusión y el entusiasmo que, con el Logicismo


sentían los matemáticos en el inicio del siglo XX, pero es indudable que esa ilusión y
entusiasmo le dieron un gran impulso a la lógica. La ilusión comenzó con el programa de
David Hilbert (7) (1862-1943). Este programa pretendía, como dicta el Logicismo,
fundamentar las matemáticas mediante un sistema axiomático pero, para asegurar que dicho
sistema fuera consistente (que no permitiera deducir proposiciones falsas), o para al menos
eliminar las dudas sobre su consistencia, Hilbert introdujo una restricción: en la
construcción de dicho sistema se permitiría usar solamente “métodos finitarios”. Una vez

Teoría de la Computación 186


Instituto Tecnológico de Celaya Decidibilidad

construido dicho sistema, Hilbert creía que se podría demostrar la consistencia del mismo;
sin embargo, Kurt Gödel demostró que esto era imposible. Ello significó el fin del
programa de Hilbert, pero también dio inicio a investigaciones más profundas sobre la
naturaleza de las matemáticas, aunque eso es parte de otra historia.

La relevancia de los métodos finitarios es que entre ellos se encuentra uno que
consiste en ejecutar una lista de instrucciones precisas que produzca, independientemente
de quién las ejecute, y después de un tiempo finito, un objeto determinado. El concepto que
se puede abstraer de este método es el de algoritmo. El hecho de que el resultado de la
ejecución de las instrucciones sea independiente del ejecutante significa que éstas pueden
ser ejecutadas por una máquina. Los conceptos de algoritmo y máquina maduraron durante
las primeras décadas del siglo XX y personas destacadas en su concepción fueron Alan M.
Turing (8) y Alonzo Church (9). A Turing se debe el modelo abstracto de máquina más
conocido: la máquina de Turing, y a ambos se debe el enunciado de la “tesis Church-
Turing” (10). Las máquinas de Turing son máquinas abstractas que realizan operaciones
extremadamente simples, como escribir o leer un símbolo sobre una cinta y moverse a la
izquierda o la derecha de la misma. Sorprendentemente, a pesar de su simplicidad, se cree
que las máquinas de Turing son capaces de realizar cualquier cómputo, es decir, la tesis (de
Church-Turing) es que cualquier tarea computable se puede realizar con una máquina de
Turing. Se trata de una tesis, porque con “tarea computable” se hace referencia a lo que se
entiende intuitivamente por computable, por ejemplo: computable en forma clara por un ser
humano abstracto (sin limites de tiempo o espacio), pero en matemáticas es imposible
demostrar una afirmación que se refiere a conceptos intuitivos. Lo importante a resaltar es
que toda esta teoría, que formaliza los conceptos de máquina y tarea computable, surgió
antes de que se realizara la primera computadora.

Esta parte de la historia de la lógica culmina, a mediados del siglo XX, con la
consolidación de sus principales disciplinas, entre ellas la Teoría de las Funciones
Recursivas, que estudia precisamente los temas relacionados con lo computable. A partir de
entonces, como en toda la ciencia, el desarrollo de la lógica ha sido a un ritmo muy
acelerado.

Teoría de la Computación 187


Instituto Tecnológico de Celaya Decidibilidad

Pasado inmediato y futuro

El pasado inmediato de la influencia de la lógica en Ciencias de la Computación


puede resumirse, en forma no exhaustiva, con la siguiente lista que enumera áreas de la
lógica, y su respectivo uso en Ciencias de la Computación. Cada uno de los elementos de
esta lista, desarrollado en amplitud, forma un área de estudio de la lógica en Ciencias de la
Computación:

• Álgebra de Boole, en el diseño y fabricación de circuitos.


• Lógica de Predicados, específicamente Álgebra Relacional, en los Lenguajes de
Consulta de Bases de Datos.
• Lógicas Temporales, en la verificación de sistemas con concurrencia
• Lógicas Modales en Lenguaje Natural y Representación de Conocimiento.
• Restricciones de Lógica de Primer Orden, en Programación Lógica.
• Calculo Lambda, en Programación Funcional.
• Teoría de Tipos, en diseño y construcción de Lenguajes de Programación.
• Semántica Formal, en el diseño y estudio de Programas y Lenguajes de
Programación.
• Lógica de Hoare, en Verificación de Programas.
• Teoría de Modelos Finitos, en Bases de Datos y en Complejidad Estructural.
• Deducción Automática, en Verificación de Programas.
• Lógicas de Punto Fijo, y otras extensiones y restricciones de la Lógica de Primer
Orden, en Complejidad Estructural.

En lo que se refiere al futuro de la lógica, casi cualquier afirmación lleva implícito el


riesgo de equivocarse, cualquier predicción es aventurada. Pero aun así, no deja de ser
interesante especular sobre el futuro. Tres predicciones (11), por ejemplo, son:

• Que el problema P versus NP (12) será resuelto, en el marco de la lógica, antes del
2020.

Teoría de la Computación 188


Instituto Tecnológico de Celaya Decidibilidad

• Que durante el siglo XXI, se logrará un avance significativo, aunque limitado, en


Razonamiento Automatizado, que permitirá el desarrollo de algunas áreas de
Inteligencia Artificial en dominios de conocimiento restringidos.
• Como consecuencia del avance significativo en Razonamiento Automatizado,
durante el siglo XXI, el desarrollo sis tematizado en matemáticas, mediante grandes
bases de conocimiento matemático, tendrá un gran impacto (en las matemáticas),
que se revertirá en el resto de las ciencias.

Podemos concluir estas especulaciones sobre el futuro papel de la Lógica con una analogía
que apoyan muchos de sus partidarios: el papel de la Lógica en Ciencias de la Computación
durante el siglo XXI puede ser similar al papel que tuvo el Análisis en Física durante el
siglo XX. Y para finalizar, una frase atribuida a A. Turing: “podemos ver muy poco hacía
adelanté, pero ahí podemos ver mucho por hacer”. (13)

Referencias:

1. El texto es un juego de palabras algo difícil de traducir.


“I know what you’re thinking about,” said Tweedledum; “but it isn’t so, nohow.”
“Contrariwise,” continued Tweedledee, “if it was so, it might be; and if it were so, it
would be; but as it isn’t, it ain’t. That’s logic.”
2. “A Short History of Rigour in Mathematics”,
http://www.rbjones.com/rbjpub/maths/math003.htm.
3. “Aristotle”,http://wwwgroups.dcs.stand.ac.uk/~history/Mathematicians/Aristotle.ht
ml.
4. “Euclid of Alexandria”,
http://wwwgroups.dcs.stand.ac.uk/~history/Mathematicians/Euclid.html.
5. “F. L. Gottlob Frege”,
http://wwwgroups.dcs.stand.ac.uk/~history/Mathematicians/Frege.html.
6. “Bertrand A. W. Russell”, http://www-groups.dcs.st-
and.ac.uk/~history/Mathematicians/Hilbert.html.
7. “Alan Mathison Turing”, http://www- groups.dcs.st-
and.ac.uk/~history/Mathematicians/Turing.html.

Teoría de la Computación 189


Instituto Tecnológico de Celaya Decidibilidad

8. “Alonzo Church”, http://www- groups.dcs.st-


and.ac.uk/~history/Mathematicians/Church.html.
9. Douglas Hofstadter, “Gödel, Escher, Bach: una eterna trenza dorada”. Conacyt
1979. Traducción de “Gödel, Escher, Bach: an Eternal Golden Braid”, NY: Basic
Books.
10. Samuel R. Buss et al, “The Prospects for Mathematical Logic in the Twenty-First
Century”, Journal of Symbolic Logic 7 (2001) 169-196. Disponible en
http://www.math.ucsd.edu/~sbuss/ResearchWeb/FutureOfLogic/.
11. El problema P-NP es un problema cuya solución tendría importantes consecuencias
teóricas y prácticas, vea, por ejemplo:
http://www.claymath.org/Millenium_Prize_Problems/P_vs_NP/
12. A. Turing: We can see a short distance ahead, but we can see plenty there that needs
to be done.

Teoría de la Computación 190


Instituto Tecnológico de Celaya Decidibilidad

BIBLIOGRAFÍA

1. Alvarado, Matías Alvarado. Lógica y Computación. En:


http://www.filosoficas.unam.mx/~morado/LogicaHoy/alvarado.htm. Fecha de
consulta: 1 de mayo del 2006.
2. Brena, verano 2003 Ramón Brena. Autómatas y Lenguajes. En:
http://lizt.mty.itesm.mx/~rbrena/AyL.html Consultado por última vez en Abril del
2006.
3. Carrillo Barajas, verano del 2003, Miguel Carrillo Barajas. La importancia de la
Lógica en las Ciencias de la Computación. En:
http://www.lania.mx/biblioteca/newsletters/2003-primavera-
verano/importancia.html. Fecha de última revisión: mayo del 2006.
4. Carrión Viramontes, 2000, Jorge Eduardo Carrión Viramontes. Lenguajes y
Autómatas. Primera edición. Editorial: ACD.
5. Dean Kelley, mayo 1995 Dean Kelley. Teoría de autómatas y lenguajes formales.
Editorial: Prentice-Hall.
6. Domínguez Olmos, 2004, Martha Elizabeth Domínguez Olmos. Principios
fundamentales de autómatas y gramáticas. En:
http://www.monografias.com/trabajos16/automatas-y- gramaticas/automatas- y-
gramaticas.shtml Fecha de última revisión: Abril 2006.
7. ENCARTA, 2006. Biblioteca de Consulta Microsoft Encarta. de 1993 a 2005.
Editado por Microsoft Corporation.
8. John Martin. 2004, John C. Martin. Lenguajes formales y teoría de la
computación. Editorial: Mc Graw Hill.
9. Wikipedia, Abril del 2006, Wikimedia Foundation, Inc. Sistemas Formales. En:
http://es.wikipedia.org/wiki/Sistema_formal Fecha de última revisión: abril del
2006.

Teoría de la Computación 191


Instituto Tecnológico de Celaya Decidibilidad

RETROALIMENTACIÓN.

1. Conteste correctamente las siguientes preguntas.

a. El concepto de la decidibilidad, también conocida como resolubilidad,


es aplicado sobre aquellos problemas para los que existe algún
algoritmo que pueda resolverlo.

c. Los lenguajes decidib les o computables son aquellos para los cuales,
existe una función recursiva que puede ser calculada por una MT

e. El problema de Halting o problema de parada, se presenta en aquellas


MT cuya secuencia de análisis no encuentra un estado de parada.

g. Los lenguajes recursivamente numerables son denominados como la


clase de lenguajes que son reconocidos por una MT, ya que se pueden
numerar.

i. Una teoría lógica (TL) se define a partir de un conjunto de enunciados


dados, llamados axiomas, unas reglas de inferencia y un esquema de
derivación.

2. Falso

Teoría de la Computación 192


C
A REDUCIBILIDAD
P
I OBJETIVO

T Apoyar al estudiante a comprender los

U esquemas de inferencias lógicas que pueden


construirse aplicando la reducibilidad, a los

L problemas insolubles.

VI
Instituto Tecnológico de Celaya Reducibilidad

Un problema simple
Reducibilidad de Turing
insoluble

Hace uso
Contiene problemas base

Reducibilidad

Muestra Muestra

Problemas insolubles para la


Funciones computables
teoría de lenguajes

Figura. 6.1 Diagrama temático de la unidad VI

Teoría de la Computación 194


Instituto Tecnológico de Celaya Reducibilidad

6. REDUCIBILIDAD.

6.1 INTRODUCCIÓN

En el estudio de la computación existen factores que colocan en duda la eficiencia


de un proceso, algunos de estos factores son: el tiempo, que tarda un computador en
realizar algún cálculo o bien el espacio de memoria que ocupa para ello, entre otros; el
exceso de estos eventos afecta la eficiencia de sistema etiquetándolo como
inapropiados.

El estudio de la factibilidad de un sistema, es denominado como complejidad


computacional, la cual clasifica los problemas en dos categorías: los solubles y los
insolubles.

La insolubilidad de un problema puede ser probada por medio de inferencias


lógicas, es decir, no es imprescindible el aplicar algún cálculo matemático riguroso que
muestre la solubilidad o insolubilidad de un problema, ya que al contar con un problema
básico insoluble, como es el problema de parada, puede deducirse la solubilidad o
insolubilidad de un segundo problema . Lo que hace suponer que existe un lazo entre lo
que se llama complejidad computacional y la lógica, a dicho lazo se le denomina
reducibilidad la cual será tratada en la presente unidad. Dando paso a algunos
problemas insolubles ya comprobados.

Teoría de la Computación 195


Instituto Tecnológico de Celaya Reducibilidad

6.2 PROBLEMAS INSOLUBLES PARA LA TEORÍA DE LENGUAJES.

El estudio de los procesos computacionales (complejidad), clasifica a los


problemas en dos clases: los problemas con solución (solubles) y los problemas sin
solución (insolubles), (Cortéz, 2004, Pág. 103). Pero, ¿como probar la solubilidad o
insolubilidad sin tener que invertirle tiempo en pasarlo a un lenguaje de programación y
ejecutarlo sobre un sistema de cómputo, para medir su tie mpo y la memoria utilizada?
Para tal fin, se puede establecer una liga entre la complejidad computacional
comprobada, sobre algunos sistemas y la lógica; a tal liga se le conoce como
reducibilidad.

La solubilidad de los problemas ha sido establecida de acuerdo a la


implementación de la MT, cuyo poder de decisión permite establecer sí un problema es
decidible o no lo es.

Como se observo en la unidad pasada, el proble ma de parada ya es considerado


como un problema insoluble, permitiendo ser la base para probar la insolubilidad de
otros problemas. Esto puede lograrse basándose en la lógica básica, generando
supuestos sobre la solubilidad o insolubilidad del problema, ta l como se muestra en el
siguiente planteamiento.

Considere contar con dos problemas de decisión P1 y P2, los cuales se relacionan
con el supuesto de poder reducir P1 a P 2. Sí P2 es soluble se podría decir que P1
también lo es, o bien si P 2 es insoluble P 1 también lo será.

(Martin, 2004, Pág. 411)

La reducibilidad basada en el ejemplo anterior, podría ser definida como la


posibilidad de encontrar dos MT equivalentes que permitan solucionar los problemas P1
y P2 de manera semejante. De tal conjetura se obtiene n las dos siguientes definicio nes.

Teoría de la Computación 196


Instituto Tecnológico de Celaya Reducibilidad

Si P1 y P2 son problemas de decisión, se afirma que P1 es reducible a P2 (P1 ≤ P2 )


(Martin , 2004, Pág. 412) si existe un procedimiento algorítmico que permita,
encontrar una solución para los P2 en función de los valores que tomen los
problemas de P 1.

La insolubilidad de un problema, puede ser definida como la ausencia de un


sistema algorítmico que encuentre una solución validad para los casos de un
problema.

Pueden existir procedimiento que den solución a uno, dos, tres,…..., etc.; casos de
un problema P, pero no para todos los casos de dicho problema, en ésta situación se
puede definir al problema P como un problema insoluble.

6.3 UN PROBLEMA SIMPLE INSOLUBLE.

Dentro de la clasificación de los problemas insolubles existe un gran número de


problemas, sin embargo cabe destacar el problema de Auto aceptación como uno de los
primeros problemas de éste tipo. El problema de Auto aceptación, plantea la siguiente
situación

Problema de Auto aceptación

Dada una MT T, ¿acepta T ala cadena e(T)?

(Martin, 2004, Pág. 410)

Para determinar la insolubilidad de un problema como éste, suele plantearse una


función de codificación, al cual ob tendrá sus resultados con base en los valores que
tomen los diferentes casos presentados por el problema en cuestión. En el caso de los
lenguajes se diría que la función de codificación esta representada por g(c) donde se
evalúan cada una de las cadenas generadas por un alfabeto ? . Si para cada caso de g(c),
Teoría de la Computación 197
Instituto Tecnológico de Celaya Reducibilidad

existe la solubilidad del problema sobre de una alfabeto ? * se dice que el lenguaje es
recursivo y soluble.

Existen varios problemas insolubles entre los que se pueden mencionar el


problema de Auto aceptación, el de Aceptación, el de Detención entre otros, los cuales
plantean las siguientes situaciones.

Aceptación: Dada una MT T y una cadena w, ¿w ? L(T)?


Detención: Dada una MT y una cadena w, ¿se detiene T con la entrada w?
Acepta e: Dada una MT T ¿es e ? L(T)?
AceptaAlgo: Dada una MT T, ¿es L(T) un lenguaje no vació ?
AceptaTodos: Dada una MT T con alfabeto de entrada ? , ¿es L(T) = ? * ?
Subconjuntos: Dadas dos MT T1 y T2 ¿es L(T1) ⊆ L(T2)?
EscribirSímbolo: Dada un MT T y un símbolo a en su alfabeto de cinta, ¿a caso
T llega a escribir a sí comienza con la cinta en blanco?

(Martin, 2004, Pág. 409, 413, 414, 418)

Cada uno de estos problemas puede ser resuelto probándolos contra otro problema
insoluble ya estab lecido, como son el problema de parada o el problema de Auto
aceptación. Un ejemplo de este tipo de inferencia es: “si B es el denominado problema
AceptaTodos y es considerado como soluble, entonces A (problema de parada) es
también soluble ”. Como bien se sabe el problema A es insoluble y por lo tanto B
también es insoluble. (Figura 6.2)

A
No para a A(w) 0
C’
Para a B(w) 1
B(w) B’(w) A’
No para a B(w) 0

Para a A(w) 1
“Problema de parada”

Figura 6.2. Inferencia de insolubilidad

Teoría de la Computación 198


Instituto Tecnológico de Celaya Reducibilidad

6.4 FUNCIONES COMPUTABLES.

Una función matemáticamente se define como una cantidad numérica cuyo valor
depende o se encuentra en función de otra variable, dentro de la computabilidad, una
función puede definirse como todo programa que obtiene una cadena de salida a partir
de una cadena de entrada. Tal definición puede ser trasladada a una MT, donde para
cada entrada de ? , puede computar una función cuyo dominio es un subconjunto de ? * .
(Martin, 2004, Pág. 328) Las máquinas construidas en la última unidad solo indican la
llegada a un estado de aceptación para aquellas cadenas que son reconocidas por la
máquina , sin prove er de una opción para las cadenas que no son reconocidas por dichas
máquinas. Una máquina de Turing que compute una función debe de proveer de un
resultado válido para cualquier cadena que pase por ella, sea aceptada o no aceptada,
por el autómata ; de tal manera que pueda decirse que para cada cadena de entrada que
recibe, existe una cadena de salida.

Así podría definirse una MT M y una función parcial (subconjunto) F en ? * con


valores en ? * (alfabeto de la cinta) f = ? * ? ? *. Una máquina se considera como
reconocedora de una función F sí, para cada cadena (x) que pertenece a ? * existe un
valor definido por f(x).

Una función puede ser considerada como computable 7 sí sus datos fuente son
tuplas de enteros no negativos. Las funciones pueden ser clasificadas jerárquicamente
en 4 grupos, funciones iniciales, funciones recursivas primitivas, funciones µ-recursivas
(o de Ackermann) y las funciones primitivas parciales. (Figura 6.3)

Las funciones iniciales forman la base de la jerarquía que se muestra en la teoría


de funciones recursivas. (Glenn, 1993, Pág. 207)

Las funciones recursivas primitivas son todas aquellas funciones que pueden
construirse a partir de funciones iniciales aplicando tres técnicas diferentes, las
combinaciones, las composiciones y las recursividades primitivas. (Glenn, 1993, Pág.

7
Son llanadas así a todas aquellas funciones que pueden se calculadas por medio de algoritmo s (Glenn,
1993, Pág. 204)
Teoría de la Computación 199
Instituto Tecnológico de Celaya Reducibilidad

210) La combinación de dos funciones f 1 y f2 es la función f1 * f2:Nk? N m+n , la cual


toma entradas en forma de k-tuplas y produce salidas m+n-tuplas cuyos primeros m
elementos forman la salida de f 1 y los n son la salida de f 2. (Glenn, 1993, Pág. 207)

F. I. F. R. P. F. A F. R. PA. F.

Funciones iniciales
Funciones recursivas primitivas
Funciones µ-recursivas (Ackermann)
Funciones recursivas parciales
Funciones

Figura. 6.3. Jerarquía de funciones

Las funciones recursivas Ackermann son del tipo A :N2? N, las cuales son
funciones computables totales 8, pero no son funciones recursivas primitivas. (Glenn,
1993, Pág. 217)

Finalmente las funciones recursivas parciales es la clase de funciones parciales


que son creados aplicando un conjunto de técnicas sobre funciones como es la
combinación, composición, recursividades recursivas y minimalización9 (Glenn, 1993,
Pág. 219)

8
Una función total de X es una función parcial de X cuyo dominio es todo el conjunto X.( Glenn, 1993,
Pág. 205)

9
Para obtener mayor explicación acerca de éstas técnicas favor de consultar el libro: Teoría de la
computación, lenguajes formales, autómatas y complejidad. Autor: J. Glenn Brookshear. Editorial:
Addison-Wesley

Teoría de la Computación 200


Instituto Tecnológico de Celaya Reducibilidad

6.5 REDUCIBILIDAD DE TURING

A lo largo de éste libro de texto, se ha trabajado con cuatro tipos de lenguajes


clasificados de acuerdo a Chomsky.

Chomsky englobo los cuatro tipos de lenguajes en uno solo, los lenguajes
recursivamente enumerable, de los cuales solo una parte se convierten en lenguajes
computables o decidibles, a tales lenguajes se les clasifica también como lenguajes
recursivos. Se dice que un lenguaje L es recursivo, si existe una MT T que reconozca a
L. (Martin, 2004, Pág. 365) Y podría usted preguntarse ¿Cómo comprobar que dicho
lenguaje es recursivo? Bien la respuesta a esta cuestión hace énfasis a la enumeración de
un lenguaje. La palabra enumerar, enunciar o listar sucesiva y ordenadamente las partes
de un conjunto. De tal manera que se existe una MT que enumere los elementos de un
lenguaje , dicho lenguaje se considera como un lenguaje recursivo. Ahora bien, se sabe
que por medio de deducciones e inferencias lógicas se logra probar el estado de algún
objeto, de tal manera que podría comprobarse el estado de recursividad de un lenguaje
L2 en base a la existencia de un lenguaje L1 cuya recursividad ya ha sido comprobada. A
tal comprobación se le conoce como reducibilidad de Turing. Tal concepto es
planteado de manera formal en la siguiente definición.

Si L1 y L2 son lenguajes de un alfabeto ∑1 y ∑ 2 , se afirma que L1 es reducible a


L2 (L1 ≤ L2 ), si existe una función computable con MT f : ∑ 1* → ∑ *2 tal que,
para cada x ? ∑1* , se tiene:

x ? L1 si y solo si f ( x) ∈ L2

(Martin, 2004, Pág. 412)

Tal definición persiste en que para que un lenguaje pueda ser reducible a otro debe
existir un elementos x que pertenezca a L y cuya función pertenezca también a un
segundo lenguaje. De tal manera que si se tiene una MT M que tiene como entrada x y
calcula la función f(x) donde x pertenece a L1 se dice que L(M) = L1 y por lo tanto L1 es
Turing-reducible en L2.

Teoría de la Computación 201


Instituto Tecnológico de Celaya Reducibilidad

RESUMEN

El estudio de los procesos computacionales (complejidad), clasifica a los


problemas en dos clases: los problemas con solución (solubles) y los problemas sin
solución (insolubles). La clasificación de los lenguajes en alguna de estas dos categorías
puede hacer uso de la reducibilidad, la cual establece un lazo entre la complejidad de un
sistema y las inferencias lógicas.

A través de la reducibilidad se puede comprobar la solubilidad o insolubilidad de


un problema en base a problemas ya definidos como solubles o insolubles, como es el
caso del siguiente enunciado.

Considere contar con dos problemas de decisión P1 y P2, los cuales se relacionan
con el supuesto de poder reducir P1 a P2 . Sí P2 es soluble se podría decir que P1
también lo es, o bien si P2 es insoluble P1 también lo será.

La reducibilidad basada en el ejemplo anterior, podría ser definida como la


posibilidad de encontrar dos MT equivalentes que permitan solucionar los problemas P1
y P2 de manera semejante. De tal conjetura se obtienen las dos siguientes definiciones:

Si P1 y P2 son problemas de decisión, se afirma que P1 es reducible a P2 (P1 ≤ P2 )


(Martin , 2004, Pág. 412) si existe un procedimiento algorítmico que permita,
encontrar una solución para los P2 en función de los valores que tomen los
problemas de P 1.

La insolubilidad de un problema, puede ser definida como la ausencia de un


sistema algorítmico que encuentre una solución validad para los casos de un
problema.

Dentro de la clasificación de los problemas insolubles existe un gran número de


problemas, sin embargo cabe destacar el problema de Auto aceptación como uno de los

Teoría de la Computación 202


Instituto Tecnológico de Celaya Reducibilidad

primeros problemas de éste tipo. El problema de Auto aceptación, plantea la siguiente


situación

Problema de Auto aceptación : Dada una MT T, ¿acepta T ala cadena e(T)?

Para determinar la insolubilidad de un problema como éste, suele plantearse una


función de codificación, la cual obtendrá sus resultados en base a los valores que tomen
los diferentes casos presentados por el problema en cuestión.

Una función matemáticamente se define como una cantidad numérica cuyo valor
depende o se encuentra en función de otra variable, dentro de la computabilidad, una
función puede definirse como todo programa que obtiene una cadena de salida a partir
de una cadena de entrada. Una máquina de Turing que compute una función debe de
proveer de un resultado valido para cualquier cadena que pase por ella, sea aceptada o
no aceptada, por el autómata; de tal manera que pueda decirse que para cada cadena de
entrada que recibe, existe una cadena de salida. Así podría definirse una MT M y una
función parcial (subconjunto) F en ? * con valores en ? * (alfabeto de la cinta) f = ? * ?
? *. Una máquina se considera como reconocedora de una función F sí, para cada cadena
(x) que pertenece a ? * existe un valor definido por f(x). Las funciones computables son
clasificadas en cuatro grupos, las funciones iniciales, las funciones recursivas
primitivas, las funciones Ackermann y las funciones recursivas parciales.

Se sabe que por medio de deducciones e inferencias lógicas se logra probar el


estado de algún objeto, de tal manera que podría comprobarse es estado de recursividad
de un lenguaje L2 en base a la existencia de un lenguaje L1 cuya recursividad ya ha sido
comprobada. A tal comprobación se le conoce como reducibilidad de Turing. Tal
concepto es planteado de manera formal en la siguiente definición.

Si L1 y L2 son lenguajes de un alfabeto ∑1 y ∑ 2 , se afirma que L1 es reducible a


L2 (L1 ≤ L2 ), si existe una función computable con MT f : ∑ 1* → ∑ *2 tal que,
para cada x ? ∑1* , se tiene:

x ? L1 si y solo si f ( x) ∈ L2

Teoría de la Computación 203


Instituto Tecnológico de Celaya Reducibilidad

GLOSARIO

♦ Reducibilidad. Acción de reducir un problema a otro. La reducibilidad permite


el comprobar el estado de un problema en base al estado de un segundo
problema.
♦ Complejidad Computacional. La teoría de la complejidad estudia los recursos
requeridos para resolver un problema mediante la ejecución de un algoritmo.
♦ Función. Aquella en que el valor de la variable dependiente es directamente
calculable a partir de los valores que toman la variable o variables
independientes.
♦ Función Parcial. Una función parcial del conjunto X es aquella cuyo dominio
constituye un subconjunto de X.
♦ Función total. Es una función parcial del conj unto X cuyo dominio constituye
un todo el conjunto X.
♦ Las funciones iniciales. Forman la base de la jerarquía que se muestra en la
teoría de funciones recursivas.
♦ Las funciones recursivas primitivas. Son todas aquellas funciones que pueden
construirse a partir de funciones iniciales aplicando tres técnicas diferentes, las
combinaciones, las composiciones y las recursividades primitivas. La
combinación de dos funciones f 1 y f 2 es la función f1 * f2:Nk? Nm+n , la cual
toma entradas en forma de k-tuplas y produce salidas m+n-tuplas cuyos
primeros m elementos forman la salida de f 1 y los n son la salida de f 2.
♦ Las funciones recursivas Ackermann. Son del tipo A :N 2? N, las cuales son
funciones computables totales 10, pero no son funciones recursivas primitivas.
♦ Finalmente las funciones recursivas parciales es la clase de funciones parciales
que son creados aplicando un conjunto de técnicas sobre funciones como es la
combinación, composición, recursividades y minimilización

10
Una función total de X es una función parcial de X cuyo dominio es todo el conjunto X.( Glenn, 1993,
Pág. 205)
Teoría de la Computación 204
Instituto Tecnológico de Celaya Reducibilidad

EJERCICIOS

1. Conteste correctamente las siguientes preguntas.


a. ¿A que se refiere el termino reducibilidad?
b. ¿Cuál es la clasificación de los procesos computables?
c. ¿Que es una función computable?
d. Mencione algunos problemas insolubles
e. ¿A que hace referencia la reducibilidad de Turing?
f. ¿Cuál es la clasificación de las funciones?

Teoría de la Computación 205


Instituto Tecnológico de Celaya Reducibilidad

LECTURA COMPLEMENTARIA

La máquina universal de Turing

Turing, gran matemático inglé s planteo la famosa Máquina de Turing, que ha sido
considerada como el sistema más potente en el reconocimiento de lenguajes. Tales
máquinas cuentan con diversas modificaciones una de ellas es la Máquina de Turing
Universal (MTU).

La MTU no es solo una máquina con uso específico, como las que se han mostrado a
lo largo de éste texto; la MTU es un algoritmo capaz de realizar cualquier cálculo. Dichas
máquina tiene como valores de entrada las cadenas obtenidas por otra máquina de uso
específico, la MTU procesa estas cadenas y obtiene un resultado. Es decir la MTU permite
ejecutar cualquier otra máquina de Turing cuyo uso sea específico. Tal característica
permite citar el siguiente concepto.

Cualquier cálculo que se pueda realizar de forma mecá nica puede ser procesado
por una Máquina de Turing.

Originado en la denominada tesis de Church-Turing.

Los actuales computadores son casi máquinas universales de Turing; sólo les falta
tener memoria ilimitada para serlo del todo. El primer computador (o "cerebro
electrónico", como entonces se decía) universal (no diseñado para una tarea específica)
fue el ENIAC, que hizo su primera demostración pública en Philadelphia en 1946.

Teoría de la Computación 206


Instituto Tecnológico de Celaya Reducibilidad

BIBLIOGRAFÍA

1. Dean Kelley, mayo 1995 Dean Kelley: Teoría de autómatas y lenguajes


formales. Editorial: Prentice-Hall.
2. Barreiro, febrero de 1997, Álvaro Barreiro García. Máquinas de Turing. En:
http://www.dc.fi.udc.es/os/~barreiro/cogdocen/cctema03/node3.html Fecha de
última revisión: Abril de 2006.
3. ENCARTA, 2006. Biblioteca de Consulta Microsoft Encarta. DE 1993 a
2005. Editado por Microsoft Corporation.
4. Glenn. 1993. J. Glenn Brookshear. Teoría de la computación, lenguajes
formales, autómatas y complejidad. Editorial: Addison-Wesley
5. John Martin, 2004, John C. Martin. Lenguajes formales y teoría de la
computación. Editorial: Mc Graw Hill.

Teoría de la Computación 207


Instituto Tecnológico de Celaya Reducibilidad

RETROALIMENTACIÓN

a. La liga entre la complejidad computacional y la lógica; es conocida como


reducibilidad.

c. Una función se considera computable, si existe una MT T que la compute. Una


máquina de Turing que compute una función debe de proveer de un resultado
valido para cualquier cadena que pase por ella, sea aceptada o no aceptada, por el
autómata; de tal manera que pueda decirse que para cada cadena de entrada que
recibe, existe una cadena de salida

d. La reducibilidad de Turing permite la comprobación del estado de recursividad de


un problema en base a deducciones e inferencias lógicas. Por ejemplo: Si L1 y L2
son lenguajes de un alfabeto ∑1 y ∑ 2 , se afirma que L1 es reducible a L2 (L1 ≤

L2 ), si existe una función computable con MT f : ∑*1 → ∑*2 tal que, para cada x

? ∑1* , se tiene:

x ? L1 si y solo si f ( x) ∈ L2

Teoría de la Computación 208


A
N
E
X
O
S
Instituto Tecnológico de Celaya Anexo I

TEMARIO OFICIAL

1.- DATOS DE LA ASIGNATURA

2.- HISTORIA DEL PROGRAMA


Instituto Tecnológico de Celaya Anexo I

3.- UBICACIÓN DE LA ASIGNATURA

a). Relación con otras asignaturas del plan de estudio

b). Aportación de la asignatura al perfil del egresado

Comprende la base teórica para la construcción de sistemas formales y


utiliza técnicas de programación para modelarlos.

4.- OBJETIVO(S) GENERAL(ES) DEL CURSO

El estudiante comprenderá la base teórica para la construcción de s


sistemas formales y utilizará técnicas de programación para modelarlos.
Instituto Tecnológico de Celaya Anexo I

5.- TEMARIO
Instituto Tecnológico de Celaya Anexo I

5.- TEMARIO (Continuación)

6.- APRENDIZAJES REQUERIDOS

• Conocer la teoría vista en matemáticas discretas, como base conjuntos,


funciones y relaciones.
• Conocer y manejar las estructuras de datos, su representación y
programación.
• Conocer y manejar lenguajes de programación de alto nivel.

7.- SUGERENCIAS DIDÁCTICAS

• Investigación previa a la clase de los conceptos de la asignatura, por


equipos analizarlos y discutirlos
• Propiciar el trabajo por equipos, exposición, discusión grupal, entre otros
• Plantear y analizar casos típicos
• Desarrollar prácticas en laboratorio para modelar casos tipo
• Realizar ejercicios como reforzamiento de temas
• Realizar dinámicas de grupo que permitan reforzar la teoría

8.- SUGERENCIAS DE EVALUACIÓN

• Evaluación teórica
• Elaboración de ejercicios
• Prácticas de laboratorio para modelar a través de lenguajes
computacionales
• Prácticas en laboratorio de electrónica para la programación de PLC’s o
utilizar un simulador
• Visitas a laboratorios de Ingeniería Industrial para conocer el
funcionamiento de un CIM o a través de un simulador
• Trabajos de investigación (artículos, libros, Internet, etc.)
• Elaboración de ensayos y artículos sobre Teoría de la Computación
Instituto Tecnológico de Celaya Anexo I

9.- UNIDADES DE APRENDIZAJE

UNIDAD 1.- Introducción.

UNIDAD 2.- Lenguajes regulares.


Instituto Tecnológico de Celaya Anexo I

UNIDAD 3.- Lenguajes libres de contexto.

UNIDAD 4.- Máquina de Turing.


Instituto Tecnológico de Celaya Anexo I

UNIDAD 5.- Decibilidad.

UNIDAD 6.- Reducibilidad.


Instituto Tecnológico de Celaya Anexo I

10. FUENTES DE INFORMACIÓN

1. Martin, John C. Introduction to Languages and the Theory of


Computation. Prentice Hall.
2. Sipser, Michael. Introduction to the Theory of Computation. PWS
Publishing Company.
3. Cohen, Daniel I.A. Introduction to Computer Theory. Ed. Wie Wiley.
4. Davis, Martín D., Weyuker, Elaine. Computability, Complexity and
Languages Fundamentales of Teorical Computer Science. Academic
Press.
5. Denning, Peter J. Machines, Langueges and Computation.Prentice Hall.
6. Hopcroft, John, Ullman, Jeffrey. Introduction to Automatas Theory,
Languages and Computation. Addison-Wesley.
7. Kelley, Dean. Teoría de Automatas y Lenguajes Formales.Prentice Hall.
8. Lewis, Larry, Papadimitrion, Chistos H. Elements of the Theory of
Computation. Prentice Hall.
9. Rayward-Smith, V.S. A First Course in a Formal Language Theory.
Mc Graw Hill.
10. Jeffey E.F. Friedl. Mastering Regular Expressions. O’reilly & Associates,
Inc.
11. Brookshear. Teoría de la Computación, Lenguajes Formales, Autómatas
y Complejidad. Addison Wesley.
12. Isasi, Martínez y Borrajo. Lenguajes, Gramáticas y Autómatas. Addison
Wesley.
Instituto Tecnológico de Celaya Anexo II
RETÍCULA OFICIAL

Teoría de la Computación
Instituto Tecnológico de Celaya

CONCLUSIONES

El desarrollo del presente libro de texto nombrado “Teoría de la Computación”, ha sido


una experiencia retadora y muy enriquecedora.

El reto se genero al tratar de construir un libro confiable y amigable en conceptos, para la


asignatura en que se basa, ya que el estudio teórico de la computación muchas veces suele ser
algo confuso; por lo cual el desarrollar un libro de texto que se acerque al estudiante con
conceptos básicos y entendibles, sin alterar los conceptos formales de los que procede, es todo un
reto.

Por otra parte, la elaboración de éste libro ha sido muy enriquecedora ya que ha permitido
ampliar y reafirmar los conocimiento personales que he adquirido con respeto a esta materia y
que para un ingeniero en sistemas son fundamentales. Además de poder desarrollar método de
redacción y estructuración de contenido de una manera más amplia y formal.

Otro aspecto de entusiasmo en la redacción de este libro, es el hecho de proveer a los


estudiantes de otro medio de estudio para el desarrollo de la materia Teoría de la Computación.
Sin embargo se debe estar consiente que este libro puede no abarcar temas que pudieran ser del
interés del alumno, por lo que se sugiere buscar otras fuentes de información que logren
complementar su formación.

Finalmente, se concluye este trabajo con una gran satisfacción; considerando que los
objetivos planteados han sido logrados en un alto porcentaje. Agradeciendo el apoyo brindado, y
considerando nuevas metas; seguir construyendo y enriqueciendo el conocimiento de las ciencias
computacionales, sin dejar, a un lado el aspecto humano y alegre que ha sido dado al hombre, ya
que la compañía de un monitor, no suele ser tal agradable como la de otro ser humano.

Teoría de la Computación

También podría gustarte