Está en la página 1de 8

Teora de la Computaci on 2011-1

Nota de Clase 1
Favio E. Miranda Perea
Facultad de Ciencias UNAM
9 de agosto de 2010
1. Fundamentos de la computaci on
Los fundamentos de la computacion se dividen esencialmente en dos partes:
Teora de la Programacion: Dedicada a estudiar los lenguajes de programacion, los cuales
nos sirven para implementar procesos de computo.
Teora de la Computacion: Dedicada a entender la naturaleza del computo, sus posibilida-
des y limitaciones.
1.1. Teora de la Programaci on
Se divide en diversas disciplinas, como son:
Logica Computacional.
Teora de lenguajes de programacion: paradigmas (logico, funcional, imperativo, orientado
a objetos, etc), semantica operacional, tipado, etc.
Metodos formales: especicacion y vericacion
1.2. Teora de la Computaci on
Mediante la teora del computo, especicamente mediante la teora de automatas y lenguajes
formales, podemos tratar preguntas como:
Que es un dispositivo de computo?
Que se puede computar?
Que no se puede computar?
Cual es el costo de un computo?
Que se puede computar ecientemente?
Como clasicar un problema de acuerdo a su dicultad?
Al responder a estas preguntas, la teora de la computacion nos permitira entender cuales
son las capacidades y limitaciones fundamentales de una computadora, debido a la captura de
las nociones de computo y computabilidad efectiva mediante abstraccion matematica.
1
2. Abstracci on del Concepto de Computadora
Una computadora es una maquina que transforma ciertos datos de entrada dados en re-
sultados o datos de salida.
Podemos pensar que una computadora es una funcion que transforma sus argumentos de
entrada en resultados.
Cual sera el dominio de tal funcion? es decir, que tipos de datos se esperan como entrada:
n umeros, palabras, textos, imagenes, etc.
Como podemos representar los datos de entrada de manera uniforme ?
Cualesquiera datos de entrada para una computadora pueden ser codicados mediante una
cadena o sucesion de smbolos.
Que cadenas son aceptables como entrada ?
Que cadenas se obtienen como salida ?
Sera posible caracterizar de manera nita a estos conjuntos de cadenas, los cuales pueden
ser innitos?
3. Teora de cadenas
Las cadenas son fundamentales para la mayora de los sistemas formales. En esta seccion
revisamos las operaciones de importancia entre cadenas.
Los smbolos son los objetos mas simples con los que trataremos. Una denicion formal de
smbolo nos llevara al ambito de la losofa del lenguaje, as que para nuestros propositos basta
decir que
Denicion 1 Un smbolo o caracter es una entidad considerada indivisible.
Ejemplos:
#, %, $, , , a, 7
Por comodidad utilizaremos como smbolos:
a,b,c,d,e,. . .
0,1,2,3,. . . , 9
Denicion 2 Un alfabeto es un conjunto nito de smbolos.
Ejemplos:
El alfabeto del espa nol: a, b, c, d, e, f, . . . , z.
El alfabeto binario: 0, 1.
El alfabeto ASCII: a,. . . ,z,A,. . . , Z, $, %,#,. . .
Por lo general usaremos las letras griega y para denotar alfabetos.
2
Denicion 3 Una cadena, expresion o palabra es una sucesion nita de smbolos tomados de
un alfabeto dado .
En otros ambitos se permiten cadenas con un n umero innito de smbolos pero nunca en
nuestro curso.
Ejemplos:
En el alfabeto del espa nol: abc, def, feo, bonito, dsp, guajolote, uizcm.
En el alfabeto binario: 0, 101010, 00, 1100, 001, 11010.
Observese que los smbolos son a su vez cadenas que constan de un solo caracter. Mas a un
la cadena vaca (i.e. la sucesion vaca de smbolos) se denotara con el metasmbolo
1
. Este
metasmbolo no es ni una palabra ni un smbolo. Es decir estara prohibido considerar a como
smbolo de un alfabeto .
Denicion 4 Al conjunto innito de todas las cadenas sobre el alfabeto se le denota con

y se le nombra la estrella o cerradura de Kleene


2
de . Es decir

= {a
1
. . . a
n
| a
i
}.
Las herramientas matematicas fundamentales de nuestro curso son la recursion y la induccion
estructural. En el caso de

la denicion recursiva es:


Si a y w

entonces wa

Son todas.
Esta denicion recursiva genera el siguiente principio de induccion estructural:
Sea P

un conjunto de cadenas. Si P y a v P (va P) entonces


u

(u P)
Es decir,

= P.
3.1. Operaciones con Cadenas
Denicion 5 La longitud de una cadena w es el n umero de smbolos en w y se dene como
| | :

N, Si w = a
1
. . . a
n
entonces |w| = n. Recursivamente:
|| = 0 ; |wa| = |w| + 1
Denicion 6 La operacion basica entre cadenas es la concatenaci on :

y consiste
en pegar cadenas en orden de izquierda a derecha: Si v, w son cadenas entonces v w sera la
cadena obtenida al pegar v con w. Usualmente el operador no se usa y escribimos simplemente
uv en vez de u v
La concatenaci on puede denirse recursivamente como sigue: sean u, v

, a
u = u = u
1
Algunos autores denotan a la cadena vaca con o .
2
Stephen Cole Kleene, 19091994, prominente l ogico matem atico.
3
u(va) = (uv)a
Ejemplos:
La concatenacion de cala y baza es la cadena calabaza.
si v = broco y w = li entonces vw = brocoli.
si x = champu y y = rrado entonces yx = rradochampu.
Propiedades:
Asociatividad: (uv)w = u(vw).
Identidad: v = v = v.
Longitud: |vw| = |v| +|w|.
Ademas es claro que no es una operaci on conmutativa, por ejemplo jarrito = rritoja
Denicion 7 La reversa de una cadena u, denotada u
R
, se dene como sigue. Si u = a
1
a
2
. . . a
n
entonces u
R
= a
n
a
n1
. . . a
2
a
1
. La denicion recursiva es ()
R
:

R
=
(va)
R
= av
R
Se cumplen las siguientes propiedades, que deben probarse mediante induccion estructural:
(u
R
)
R
= u
(uv)
R
= v
R
u
R
3.2. Subcadenas, Prejos y Sujos
Decimos que v es una subcadena de u si existen cadenas x, y

tales que u = xvy.


Un prejo de u es una cadena v tal que u = vw para alguna cadena w

. Se dice que
v es un prejo propio si v = u.
Similarmente, un sujo de u es una cadena v tal que u = wv para alguna cadena w

.
Se dice que v es un sujo propio si v = u.
Observese que tanto como u son siempre sujos y prejos de u.
4. Los Conceptos Fundamentales
Los tres conceptos fundamentales en teora de la computacion son:
Lenguajes: conjuntos de cadenas.
Gramaticas: mecanismos para generar cadenas.
Automatas: mecanismos para procesar cadenas.
Nuestro objetivo principal es estudiar las relaciones entre estos tres conceptos.
4
4.1. Gramaticas
Un mecanismo relevante para generar un lenguaje es mediante el concepto de gramatica
formal.
Las gramaticas formales fueron introducidas por Chomsky en 1956
La intencion era tener un modelo para la descripcion de lenguajes naturales.
Posteriormente se utilizaron como herramienta para presentar la sintaxis de lenguajes de
programacion y para el dise no de analizadores lexicos de compiladores
Volveremos a ellas mas tarde.
4.2. Automatas
Un automata es una representacion abstracta de una maquina
Los aspectos relevantes para nosotros son el dise no y la especicacion de automatas.
La abstraccion captura unicamente el comportamiento de una maquina, es decir, las se-
cuencias de eventos que ocurren.
4.2.1. Un poco de historia
En su artculo On Computable Numbers, with an Application to the Entscheidungs-
problem de 1936,Turing reformula los resultados de Kurt Godel de 1931 acerca de las
limitaciones de pruebas y computos, reemplazando el lenguaje formal universal de Godel
con lo que hoy llamamos maquinas de Turing, que son un dispositivo formal y simple de
una computadora. El probo que tal maquina podra der capaz de llevar a cabo cualquier
computo matematico concebible si este se representaba mediante un algoritmo.
En el artculo A logical calculus of the ideas immanent in nervous activity Bull. Math.
Biophysics 5 (1943), pp. 115-133, el neurosologo Warren McCulloch y el logico Walter
Pitts, desarrollaron modelos de redes neuronales con ciclos de retroalimentacion basados
en su vision de la neurologa. Este fue un intento para modelar la estructura de los nervios.
El modelo de Pitts-McCulloch fue simplicado por el logico Stephen C. Kleene en 1956, en
el que se considera el primer artculo acerca de automatas nitos y expresiones regulares,
Representation of events in nerve nets and nite automata.
En 1959 Rabin y Scott presentan una maquina con un n umero nito de estados que
simplica a la maquina de Turing. For su artculo Finite Automata and Their Decision
Problem que introduce la idea de maquinas no deterministicas, un concepto invaluable.
Debido a este artculo ambos reciben el premio Turing en 1976.
En 1968 Ken Thompson usa la nocion de expresion regular denida por Kleene en el
sistema UNIX,
4.2.2. Aplicaciones
Los automatas tienen diversas aplicaciones en computacion, por ejemplo:
Software para hallar patrones en una gran cantidad de texto, por ejemplo en colecciones
de paginas web.
5
Dise no de circuitos digitales.
Analizadores lexicos para compiladores.
B usqueda de palabras clave en internet.
Vericacion de sistemas con un n umero nito de estados (por ejemplo protocolos de co-
municacion)
Vericacion de modelos, modelado y vericacion de sistemas empotrables (embebidos)
Aplicaciones en genetica, patrones regulares en proteinas
Aplicaciones en ling uistica, construccion de diccionarios grandes, correctores de ortografa.
Modelado de maquinas reales: relojes, telefonos, seguros de auto, etc.
Modelado de sistemas discretos en general.
Existen diversos tipos de automata, nosotros estudiaremos:
Automatas con un n umero nito de estados: determinsticos, no determinsticos.
Automatas de pila
Automatas Linealmente Acotados
Maquinas de Turing.
Otras clases de automatas que no estudiaremos aqu son los probabilsticos, celulares, paralelos,
de arbol, etc.
5. Lenguajes
Denicion 8 Un lenguaje L sobre un alfabeto es simplemente un conjunto de cadenas de .
Es decir L

.
Si = {m, u} entonces algunos lenguajes sobre son:
L
1
= {m, u} =
L
2
= {u, uu, uuu, uuuu, uuuuu, uuuuuu, . . .}.
L
3
= {mu, um, mum, umu, mmu, ummm, mumumum}.
L
4
= {mu, muu, muuu, muuuu, . . .}.
L
5
= {m, mmm, mmmmm, . . . , m. . . , uuum, m. . .}.
Observese que un lenguaje puede ser nito o innito, que es un lenguaje, llamado lenguaje
vaco y que

es un lenguaje llamado el lenguaje total. Ademas y {} tambien son lenguajes.


5.1. Operaciones con Lenguajes
Dado que los lenguajes son conjuntos todas las operaciones conjuntistas son aplicables a
lenguajes. Si L, M

entonces
L M, L M, L M,

L =

L
tambien son lenguajes.
6
5.1.1. Concatenacion de Lenguajes
Al igual que en el caso de cadenas, podemos denir la concatenacion entre lenguajes como
sigue:
LM = {uv | u L y v M}
Se cumplen las siguientes propiedades:
L = L =
L{} = {}L = L
L(MN) = (LM)N
L(M N) = LM LN (M N)L = ML NL
5.1.2. Reversa de un Lenguaje
La reversa de un lenguaje se dene como
L
R
= {u
R
| u L}
Se cumplen las siguientes propiedades:
(L
R
)
R
= L
(LM)
R
= M
R
L
R
(L M)
R
= L
R
M
R
(L M)
R
= L
R
M
R
5.1.3. Cerradura de Kleene
La cerradura o estrella de Kleene de un lenguaje se dene como
L

= {u
1
. . . u
n
| u
i
L n 0} =

i=0
L
i
donde L
i
es la potencia i-esima de L, denida como L = LL. . . L, i veces.
5.1.4. Cerradura Positiva
La cerradura positiva de un lenguaje se dene como
L
+
= {u
1
. . . u
n
| u
i
L n > 0} =

i=1
L
i
7
5.1.5. Propiedades de los operadores de cerradura
Se cumplen las siguientes propiedades
L

= L
+
{}
L

= L
+
si y solo si L.
(L

= L

= L

(L
+
)

= (L

)
+
= L

(L
+
)
+
= L
+
L
+
L
+
L
+
6. Lenguajes y Computadoras
Con el concepto de lenguaje podemos reformular las preguntas acerca de los datos de entrada
y salida en una computadora:
Cual es el lenguaje de entrada de una computadora dada?
Cual es el lenguaje de salida ?
Seran estos lenguajes describibles nitamente?
7. Ejercicios
Martin: 1.381.47, 1.691.71, 2.342.37, 2.392.43, 2.592.66,
8

También podría gustarte