Está en la página 1de 118

Informtica

Informtica Terica
Terica
INF
INF 155
155

INF
INF 155
155
YO: Andrs Moreira
amoreira@inf.utfsm.cl
Oficina N 138, en el DI
Horario de Consulta: martes 15-18

INF
INF 155
155
Medio oficial de comunicacin:

moodle
Certmenes:
22 de septiembre
27 de octubre
3 de diciembre
+ 3 tareas
Ayudante: Manuel Figueroa

INF
INF 155
155
Bibliografa:
John Hopcroft et al., Introduction to Automata
Theory, Languages and Computation [2 ed, 2001]
Michael Sipser, Introduction to the Theory of
Computation [3 ed, 2012]
Papadimitriou, Elements of the Theory of
Computation [2 ed, 1998]

INF
INF 155
155
Estarn disponibles adems:
Audio de las clases
Algunos links y software
Powerpoint
Ejercicios

INF155:
INF155: Informtica
Informtica Terica
Terica
AKA: TALF

Teora de Autmatas
y Lenguajes Formales

No hay nada ms prctico


que una buena teora
(K. Lewin)

Teora de Autmatas
y Lenguajes Formales
Mquinas
(formales)
Informacin
(digital)

Preguntas de fondo de la inf. terica


Qu es un computador?
Qu puede y qu no puede hacer? Cunto
tiempo/memoria le cuesta hacerlo?
Cmo definimos formalmente un modelo de
computacin? Cmo comparamos dos modelos
distintos?
Cmo evaluamos la capacidad computacional de un
sistema fsico?
Cmo caracterizamos la complejidad de la
informacin?

Temario
0. Repaso lgica, conjuntos, relaciones
1. Strings, lenguajes, operaciones entre lenguajes
2. Lenguajes regulares, autmatas finitos
3. Expresiones regulares (REGEXP), aplicaciones,
autmatas deterministas y no-deterministas
4. Gramticas formales, jerarqua de Chomsky
5. Lenguajes de libre contexto, autmatas de pila
6. Mquinas de Turing
7. Computabilidad, complejidad computacional

Adems (bonus)
En la clase del mircoles, en los primeros ~25
minutos...
Transparencia con fondo negro (para evitar
confusiones)...

Adems (bonus)
En la clase del mircoles, en los primeros ~25
minutos...
Transparencia con fondo negro (para evitar
confusiones)...
Asistencia en ese rato es 100% voluntaria (y
contenido no evaluado). Por cultura general, y
contexto.

Historia de la idea de computacin

La idea de computacin ???


Algoritmos y mquinas.
Se busc entender cmo pensamos, y una vez
entendido, reconstruirlo.
Otra forma de decirlo: es la historia de la
formalizacin del pensamiento abstracto.

La idea de computacin ???

formalizacin del pensamiento abstracto


Por eso que se entrelazan dos hebras:
- la que llev a entender las bases y
los lmites de las matemticas
- la que llev a los computadores y a
la inteligencia artificial

Temario ah (aproximado)
-Lulio
-Leibniz
-Boole
-Cantor
-Frege
-Hilbert
-Gdel
-Turing
- ... ? (segn tiempo)
Bibliografa: Martin Davis, Engines of Logic
(tambin disponible como pdf)

Qu es un algoritmo?

A la derecha, don Algoritmo,


o mejor dicho, Muhammad ibn Ms alKhwrizm.

Escribi un libro en 825


que se tradujo en el siglo XII como
"Algoritmi de numero Indorum".

Eso significaba "al-Khwrizm hablando


sobre los nmeros hindes"

Qu es un algoritmo?

pero se entendi como "Algoritmos


sobre los nmeros hindes".

Como el libro se trataba de mtodos de


clculo, se supuso que los tales
"algoritmos" eran esos mtodos.

Y as don "Al-Goritmo" nos hizo dos


aportes: uno queriendo y el otro sin
querer. Ambos importantes.

Qu es un algoritmo?

Es vital en matemticas tener una

buena notacin (fue una virtuosa


obsesin de otros personajes que
vendrn luego, como Leibniz y Boole).

Las matemticas jams podran haber


avanzado como lo hicieron, si no se
hubiera reemplazado los nmeros
romanos (I,II,III) por los hindes
(1,2,3). Merci, Muhammad.

Qu es un algoritmo?

Pero adems obtuvimos no slo una


palabra, sino un concepto clave:
algoritmo.

Tener palabras precisas para conceptos


no triviales, le toma siglos a las
civilizaciones. Merci, traductores malos
del siglo XII.

Informalmente, un algoritmo es un procedimiento

claramente definido que nos permite resolver un


problema en una cantidad de tiempo finita.

Formalmente: 8 siglos despus (para nosotros, en junio).

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Lgica
Expresiones verdaderas o falsas (V,F)
Sus valores de verdad se combinan usando operaciones.
El resultado de las operaciones podemos representarlo
mediante tablas de verdad.
Tambin las tablas pueden servir para demostrar
identidades simples.

NOTA: En informtica solemos usar 1 y 0 en vez de V y F

Lgica
Operaciones elementales:
x

xy

xy

Disjuncin, o

Conjuncin, y

Negacin

Lgica
Algunas propiedades bsicas:
Asociatividad:
(xy)z = x(yz)

(xy)z = x(yz)

Distributividad:
x(yz) = (xy)(xz)

x(yz) = (xy)(xz)

Leyes de Morgan:
(xy) = (x y)

(xy)= x y

Lgica
Una expresin importante: PQ.
La idea es que no se d el caso en que P es cierto, pero Q
es falso.
Es decir, se quiere la negacin de PQ.
Por ley de Morgan, se quiere PQ.
As que se define la implicancia PQ como PQ.

Lgica
La equivalencia (PQ) se define mediante (PQ
QP). Uno esperara que PQ signifique que P y Q valen
lo mismo. En efecto,
P

PQ QP PQ

Lgica
A partir de una expresin de implicancia PQ aparecen
otras expresiones relacionadas:
QP
la recproca:
P Q
la contraria:
la contrarrecproca: Q P
La recproca y la contraria son equivalentes entre s.
La contrarrecproca es equivalente a la implicancia
original.
Por eso a veces se demuestra QP, cuando lo que
uno quiere demostrar es PQ.

Lgica
Otra estrategia frecuente es la reduccin al
absurdo : uno supone que la conclusin es falsa, y
llega a una contradiccin.
Es decir, para demostrar P Q, suponemos
que P es cierto y que Q es falso (es decir, que
Q es cierto).
Desde ah llegamos a algo falso: PQ =0, que
por Morgan equivale a PQ =1, o sea, PQ.

Lgica
Si PQ y QR, entonces PR.
Una consecuencia es que cuando uno quiere
demostrar, por ejemplo, PQRS, basta con
demostrar PQRSP.

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Conjuntos
Conjuntos: informalmente, una coleccin bien definida
de objetos.
Bien definida definicin sin ambigedad
Coleccin? Objetos?
En principio uno tendera a decir que toda propiedad P
define un conjunto: sean todos los x tales que P(x) es
cierto, o bien sean todos los x tales que P(x) es
falso.

Conjuntos
Por ejemplo, P(x)=x es un nmero primo.
Entonces el conjunto R(P) ser el conjunto de todos los
nmeros naturales primos.
Pero cul sera el conjunto de los x que no cumplen P?
Los naturales, salvo los primos?
Los reales, salvo los primos?

Para tener un punto de referencia, se suele trabajar


dentro de un conjunto, el universo o conjunto
universal U. Tambin evita paradojas, y permite que
las propiedades definan conjuntos.

Conjuntos
Se define el complemento con respecto a ese U:
AC = {xU: xA}
Todo conjunto admite el subconjunto vaco, . El
conjunto vaco es nico.
El conjunto potencia de un conjunto A, es el conjunto
P(A) formado por todos sus subconjuntos.
Si |A|=n, entonces |P(A)|=2n
Si A B, entonces P(A) P(B).

Conjuntos
Inclusin de la interseccin:
ABAyABB

Inclusin en la unin:

AAByBAB

Transitividad de la inclusin:
(A B B C) A C

Conjuntos vs Lgica:
x
x
x
x

XYxXxY
XYxXxY
X\Y x X x Y
Xc x X

Conjuntos
De ah se heredan la conmutatividad,
asociatividad y distributividad de y
Adems se tienen:
AU=A y AU=U
(Ac)c = A
AA=A y AA=A
(A B)c = Ac Bc y (A B)c = Ac Bc
A (A B) = A y A (A B) = A

Conjuntos disjuntos
Un par de conjuntos se dicen disjuntos si su
interseccin es vaca (no tienen elementos en comn).
Dados un conjunto A y una coleccin de conjuntos no
vacos {A1,Ak} se dice que la coleccin:
Es mutuamente disjunta si cualquier par de
conjuntos de la coleccin es disjunto.
Es un recubrimiento de A si A = A1A2... Ak.
Es una particin de A si es un recubrimiento y
adems es mutuamente disjunta.

Conjuntos

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Induccin
La induccin se usa para demostrar que una proposicin
P que depende de un nmero natural n, es decir, P(n),
es cierta para todo n por sobre algn umbral n0.
Lo que se hace es demostrar:
Caso base: P(n0) es cierta
Paso inductivo: Si P(n) es cierta
para un n n0, entonces P(n+1)
tambin es cierta

Induccin
En una variante, que a veces se llama induccin fuerte,
el paso inductivo demuestra que si P(k) es cierta para
todo n0 k n, entonces lo es para n+1.
Es decir, al demostrar el paso
inductivo no se usa slo el caso
anterior, sino todos los anteriores.

Una generalizacin ms interesante


es la induccin estructural. Sirve
sobre conjuntos definidos de
manera recursiva.

Induccin estructural
En una construccin recursiva, se tienen:
Objetos bsicos (primitivos)
Reglas de construccin, para definir nuevos objetos
a partir de un conjunto de objetos ya definidos.

Entonces se demuestra que la propiedad en cuestin:


Es cierta para los objetos bsicos.
Se hereda a travs de las reglas de construccin.
y se concluye que es cierta para todos los objetos.

Induccin estructural
Ejemplo clsico: consideremos la siguiente definicin
recursiva de un rbol conexo.
Un nodo solo, es un rbol.
Si T1, T2, , Tk son rboles disjuntos, entonces
n

A
T1

A
T2

tambin es un rbol.

...

A
Tk

Induccin estructural
Propiedad a demostrar: la cantidad de nodos siempre
es igual a la cantidad de aristas + 1.
Caso base: ok.
Sean ni y ai las cantidades de nodos y aristas en los
rboles Ti, para i de 1 hasta k. Sean n y a esas
cantidades para el nuevo rbol.
Hiptesis inductiva: ni ai 1 i
Paso inductivo:
k

n 1 ni 1 ( ai 1)
i 1

i 1

1 k ai 1 a
i 1

A
T1

A
T2 ...
...

A
Tk

Induccin estructural
Otro ejemplo tpico: expresiones aritmticas.
Smbolos elementales: letras, +, *, (, )
(1) Las letras son E.A.
(2) Si E y F son E.A., entonces E+F, E*F y (E)
tambin son E.A.
Ejemplos: x+y, x*y+x*(z+b), ((a)), etc
Ejercicio: demostrar que en una expresin aritmtica,
el nmero de ( es igual al nmero de ).

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Tuplas y producto cartesiano


n-tupla ordenada : secuencia de n elementos,
(x1,,xn).
{1,2} = {2,1} (conjuntos)
(1,2) (2,1) (tuplas)

(x1,,xn)= (y1,,yn) x1=y1, , xn=yn

Tuplas y producto cartesiano


Producto cartesiano de n conjuntos A1,...,An :
es el conjunto formado por las n-tuplas de la
forma (x1,,xn), donde xiAi, 1 i n :

A1 A2 An { ( x1 , , xn ) : xi Ai 1 i n }
Un caso de particular inters es el producto
cartesiano de slo dos conjuntos: AB.

Relaciones
Una relacin es un subconjunto R AB.
Ntese que:
no necesariamente A=B
cualquier subconjunto RAB es vlido

Con A={1,2,3},B={,}, las siguientes


son todas relaciones vlidas:

R2

R1={(1,),(1,),(3,)}
R2=AB \ {(1,)}
R3={(2,)}

R3

R1

Relaciones: funciones
Las funciones son relaciones en que para cada xA,
existe un nico yB tal que (x,y)R.
Las tres relaciones en la
transparencia anterior son
contraejemplos : no son funciones.

R2

R3

R1

Relaciones: funciones
En cambio, R4 s lo es.

R4

R5

Y R5?
No es una funcin.

Si miramos la relacin inversa (que invierte


todos los pares ordenados) obtenemos R6,
que s es una funcin... de B en A.

3
R6 2
1

Relaciones: notacin
Cuando una relacin RAB es una
funcin, y se tiene (x,y)R, solemos
escribir R(x)=y. Por ejemplo, R4(1)=.

R4

En el caso general (en que R es una relacin


cualquiera), cuando (x,y)R se suele escribir xRy.
Ejemplos tpicos: E, 73...
NOTA: En lo que sigue, consideraremos relaciones
dentro de un mismo conjunto S (o sea, A=B=S).
Anotamos S2=SS.

Relaciones: propiedades
Decimos que una relacin RS2 es:
Refleja: si para todo aS, aRa.
Transitiva: si cada vez que aRb y bRc, se tiene
adems aRc.
Simtrica: si aRb bRa
Antisimtrica: si cada vez que aRb y bRa,
necesariamente a=b.
Total: para cualesquiera a,bS, se tiene que
aRb o bien bRa (o ambas).

Relaciones: orden
Una relacin de orden parcial cumple con ser
refleja, transitiva y antisimtrica.
Ejemplo: Sea A un conjunto finito, S=P(A) [el
conjunto potencia de A], y R definida por
(B,C) R BC
(es decir: es la relacin de inclusin entre
subconjuntos de A).
NOTA: esto es lo que se llama un orden no estricto. En
rdenes estrictos, como < y , se prohibe la igualdad,
exigiendo que la relacin sea antirrefleja: a (a,a)R

Relaciones: orden
Si adems es total, entonces es una relacin de
orden total.
El ejemplo anterior es un caso de orden parcial que
no es total. Para ver por qu, consideremos A={1,2},
B={1}, C={2}. Claramente, ni B est includo en C, ni C
est includo en B.
Consideremos S=Z (los nmeros enteros), y la
relacin habitual. Ese s es un caso de relacin de
orden total.

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Relaciones: equivalencia
Una relacin de equivalencia cumple con ser refleja,
transitiva y simtrica.
Ejemplo:
Sean Z los nmeros enteros, y sea mN, m0.
Definiremos la relacin Rm (ojo, depende del
m) como
a Rm b a mod m = b mod m
[a mod m : es el resto de dividir a por m]

Relaciones: equivalencia
Sea R una relacin de equivalencia en S.
Para cada elemento aS, definimos su clase de
equivalencia
[a] = { bS: aRb }

El conjunto de las clases de equivalencia forma


una particin de S.

Relaciones: equivalencia
Ejemplo: consideremos (Z,R3), con la relacin de
igualdad mdulo 3 definida antes. Entonces
[0] = { ..., -6, -3, 0, 3, 6, 9,... }
[1] = { ..., -5, -2, 1, 4, 7, ... }
[2] = { ..., -4, -1, 2, 5, 8, 10, ... }
y entre ellas incluyen a todo Z.
Ntese que tambin podramos decir que las clases de
equivalencia de R3 son [42],[5] y [-2]. Los
representantes dan lo mismo.

Relaciones: equivalencia
Sea RSS de equivalencia. Se define el conjunto
cuociente S/R como el conjunto de clases de
equivalencia.
En el ejemplo, Z/R3 = { [0], [1], [2] }
(o, equivalentemente, Z/R3 = { [42], [2], [-2] } ).

El ndice de una relacin de equivalencia es el cardinal


del conjunto cuociente. Para R3, es 3.
Naturalmente, en un mismo conjunto puede definirse
ms de una relacin de equivalencia, y cada una dar
una particin distinta.

Relaciones: equivalencia
Ejemplo: Sea S una baraja de naipe [ingls],
S={ 1, 2, ..., K, 1, 2, ..., K,
1, 2,..., K, 1, 2, ..., K}
y consideremos las relaciones
Rp : si dos naipes son de la misma pinta
Rn : si dos naipes son del mismo nmero
Rc : si dos naipes son del mismo color
R2 : si el nmero de dos naipes tiene la misma paridad.
Cul es el ndice de cada una de estas relaciones?

Relaciones: equivalencia
Nota:
El nexo entre relaciones de equivalencia y
particiones es recproco: dada una particin, siempre
podemos definir una relacin de equivalencia cuyas
clases de equivalencias correspondan a esa particin.

.
. .
c

aRb, pero aRc


/
/ ni bRc

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Relaciones: refinamientos
Sean R,QS2 dos relaciones de equivalencia en S.
Decimos que R es ms fina que Q, y escribiremos
RQ, si se tiene
aRb aQb, a,bS
Es decir, R distingue entre elementos de S al menos
tan bien como Q.

Relaciones: refinamientos
RQ: aRb aQb, a,bS
Ejercicio: demostrar que si RQ,
entonces las clases de equivalencia
de Q son uniones de clases de
equivalencia de R.

Relaciones
En el ejemplo de los naipes, RpRc , y RnR2.
Si consideramos la relacin de igualdad mdulo m,
qu deben cumplir m1 y m2 para que Rm1 Rm2 ?
Otro ejemplo: Sea otra vez A un conjunto finito
cualquiera, y S=P(A) su conjunto potencia.
Consideremos las relaciones R y Q dadas por:
aRb a=b
aQb |a| = |b|
Entonces RQ.
[Recurdese que en este caso a y b son subconjuntos de
A. |a| es el cardinal de a.]

Relaciones
Nota: en realidad siempre se tiene que la relacin de
identidad (=) es ms fina que cualquier otra relacin de
equivalencia.

Consideremos ahora el conjunto (S) de todas las


relaciones de equivalencia posibles sobre el
conjunto S.
Entonces es una relacin en (S) !!
Qu tipo de relacin es?
Ejercicio: conteste y demustrelo.

Relaciones: representacin
Hay (al menos) 3 formas de representar una relacin:

{ (a,b), (b,c), (c,b) }

b
a
c

a b c
a 0 1 0
b 0 0 1
c 0 1 0

Pensar:
Cmo se ven, en un grafo o en una matriz, las
posibles propiedades de una relacin?
Cmo se ve una relacin de orden, o una relacin
de equivalencia?

Relaciones: cerradura transitiva


Volvamos al caso general (de relaciones cualquiera, no
necesariamente de orden o de equivalencia).
Sea R una relacin en S, no necesariamente transitiva.
Definimos su cerradura transitiva como la menor
relacin R tal que
RR
R es transitiva
Idea: parchamos R agregando los elementos que
falten para la transitividad.

Relaciones: cerradura transitiva


Ejemplo:
S = ciudades del mundo
aRb existe un vuelo directo de a hasta b
aRb se puede llegar de a hasta b en avin
Cmo encontrar la cerradura transitiva (S finito)?
Algoritmo de Warshall (visto en ED)

Relaciones: cerradura transitiva


Pensemos en la relacin como una
matriz binaria, que dicepuedo ir
de a hasta c usando un solo arco
o no puedo.

R
a
b
c

a b c
0 1 1
0 1 1
0 1 1

b
a
c

R
a
b
c

a b c
0 1 0
0 0 1
0 1 0

Queremos ahora una matriz


que exprese puedo ir de i a j
(usando 1 o ms arcos).

Relaciones: cerradura transitiva


Definamos A0=R
Aplico |S| veces lo siguiente.
En el paso k-simo, Ak[i,j] me dice acaso hay un camino
entre i y j que pase por nodos de ndice k menor.

Ak [i, j ] Ak 1[i, j ] Ak 1[i, k ] Ak 1[k , j ]


ya haba camino, o ahora existe un camino porque
existen caminos de i a k, y de k a j

Relaciones: cerradura transitiva


Algoritmo de Warshall:
Inicializacin:
A = matriz binaria representando R
Iteracin:
Para k=1,...,N
Para todo i,j
A[i,j] = A[i,j] (A[i,k] A[k,j])
R = relacin representada por versin final de A
[Se habla del algoritmo de Floyd-Warshall, porque esto es una
variante del de Floyd para caminos ms cortos en grafos.]

Repaso
1. Lgica
2. Conjuntos
3. Induccin
4. Relaciones
5. Clases de equivalencia
6. Refinamientos y cerradura transitiva
7. Cardinales

Cardinal
Volvamos a las funciones. Si fAB es una funcin,
escribiremos que f:AB.
Decimos que una funcin f:AB es inyectiva cuando
preserva las diferencias: si ab, entonces f(a)f(b).

Intuitivamente se ve que, para que esto sea posible,


tiene que haber al menos tantos elementos en B
como en A.

Cardinal
Esa intuicin se convierte en definicin :
decimos que el conjunto A tiene cardinalidad
menor o igual que B si existe una funcin
inyectiva f:AB. Escribimos |A||B|
Si se tiene |A||B| y adems |B||A| (es decir, existen
funciones inyectivas en ambas direcciones), escribimos |
A|=|B|, y decimos que tienen la misma cardinalidad (o el
mismo cardinal).
Nota: una funcin biyectiva es
inyectiva hacia los dos lados, y se
puede usar para probar igualdad de
cardinal. Pero a veces es ms cmodo
usar dos funciones distintas.

Cardinal

Para conjuntos finitos la cardinalidad es simple:


identificamos |A| con la cantidad de elementos que
contiene, y |A||B| A tiene menos elementos que B.
Para el vaco, ={ }, se tiene ||=0.
Un singleton es un conjunto de cardinal 1. Por
ejemplo: {2}, { {2,3} }, {{}}.

Cardinal
La gracia es que la definicin funciona tambin para
conjuntos infinitos.
Ejercicio: sea A finito y B infinito. Demostrar
que |A|<|B|, es decir, que |A||B|, pero |B||A|.
Ejercicio: Sea AB. Demostrar que |A||B|.
El conjunto infinito ms chico es N, los nmeros
naturales.

Cardinal
Los enteros (Z), los racionales (Q), los nmeros pares
(2Z), tienen todos el mismo cardinal que N.
Ese cardinal se anota 0 (aleph 0). Se dice que son
contables.
Los reales (R) no tienen el mismo cardinal
que N. Su cardinal, 1, es llamado el
cardinal del continuo, y es el mismo
cardinal de [0,1], R2, R3, etc.
Hablaremos ms sobre esto en
transparencias negras, al llegar a
Georg Cantor.

Fin del repaso

Lenguajes
Informacin digital Secuencia de smbolos

input

Computador

output

CPU con estados internos (finitos!)


Memoria tambin es informacin digital!

Por lo tanto, necesitamos algunas nociones sobre cmo


trabajar formalmente con secuencias de smbolos.

Alfabetos y palabras
ALFABETO:
Es cualquier conjunto finito, no vaco, de smbolos.
(Por lo general lo llamaremos )
Ejemplos:

= {0,1}
= {a,e,i,o,u}
= {a,...,z,A,...,Z, } ese es un espacio en blanco
= {(,)}
los smbolos aqu son ( y )

Alfabetos y palabras
PALABRA:
Es una secuencia finita de smbolos de .
Ejemplo: con alfabeto = {0,1,3}, algunas palabras son
1101
001101
1
0003000001111111
Algunas palabras con alfabeto = {(,)}:
(()(()))
(()
)

Alfabetos y palabras
Palabra vaca (o nula):
Es la palabra formada por 0 smbolos.
Por lo general la representaremos con la letra .
A veces se usan tambin .
Ojo: no es lo mismo que nada. ES una palabra, pero
sin letras.

Alfabetos y palabras
Formalmente, podemos ver las palabras como tuplas.
Ya sabemos lo que es 2= . Ms en general,
escribiremos

k veces

Podemos identificar las palabras de largo k con el


alfabeto con las tuplas de k.

Alfabetos y palabras
La nica diferencia es que al escribir palabras no
ponemos las comas ni parntesis de las tuplas.
Ejemplo:

={0,1}, palabras de largo 2?


00, 01, 10, 11
que corresponde a las tuplas

2 = { (0,0), (0,1), (1,0), (1,1) }


Abusando un poco de la notacin, se acostumbra
escribir simplemente 2 = { 00, 01, 10, 11 }

Alfabetos y palabras
Definimos (a dedo) 0= {} y 1 =

El conjunto de todas las palabras con el alfabeto


lo llamamos *, y lo podemos escribir como

* k
k 0

A veces uno quiere excluir a la palabra vaca; en ese


caso se anota

k
k 1

Alfabetos y palabras
Dada una palabra w*, usaremos
|w|
para denotar la cantidad de smbolos que la
componen (es decir, su longitud).
Por definicin, ||=0.
Si se necesita evitar ambigedad, en lugar de |w|
usaremos length(w), len(w), o simplemente (w).

Comentarios
Ntese que * es un conjunto infinito (pero
contable) de palabras, cada una de las cuales tiene
una cantidad finita de caracteres.
Los smbolos son indivisibles; por lo tanto, no
tendremos alfabetos del tipo { c, h, ch, i, l, e }.
NOTACIN: por lo general se usan letras minsculas del comienzo
del abecedario para denotar smbolos, mientras que las letras
minsculas del final del abecedario suelen denotar palabras.
Adems, usaremos subndices para referirnos a smbolos dentro
de una palabra. Si w=aabbba, entonces w1=a, w3=b, etc.

Alfabetos y palabras
La concatenacin de dos palabras consiste en
escribir una despus de la otra. Por lo tanto, si
u=u1u2...un,
v=v1...vm,
entonces w=uv ser
w = u1u2...un v1...vm
Dados dos conjuntos de palabras A y B, la
concatenacin de los conjuntos ser
AB = { w: w=uv, uA, vB }

Alfabetos y palabras
={0,1,2}, A = { 00, 21, 2, 220}, B = { 1, 0, }
AB = ?
{ 001, 211, 21, 2201, 000, 210, 20, 2200, 00, 2,
220 }
Esto permite escribir

Ntese que, por otro lado,

{ }
*

Adems se tiene la recursin

k 1

Alfabetos y palabras
Sean u,v*. Decimos que
u es un sufijo de v x*: v=xu
u es un prefijo de v x*: v=ux
u es una subpalabra de v x,y*: v=xuy
Si los x ( y) respectivos no son nulos, entonces se
dice que u es un sufijo (o prefijo o subpalabra)
propio de v.
Si u es subpalabra de v, se anota a veces
o tambin u v.

u v

Alfabetos y palabras
Transposicin: es una operacin unaria sobre palabras,
que invierte el orden: si
u = u1u2...un
entonces su transposicin es
uR = unun-1...u1
Un palndromo es una palabra que se lee igual al revs o
al derecho: u = uR. Por ejemplo: radar, abba, 1111.

Alfabetos y palabras
Otra operacin unaria consiste en duplicar una
palabra (concatenarla consigo misma): dada
u = u1u2...un
definimos
u2 = uu = u1u2...unu1u2...un
Anlogamente para potencias superiores:
u3 = uuu = uu2
...y en general, recursivamente
un = uuu...u = uun-1
n veces

Lenguajes
Lenguaje L sobre un alfabeto : ser cualquier
subconjunto

L *.

Por ejemplo, con alfabeto = {a,b}, podemos definir


L0 = =a, b, aa, ab, ba, bb,
aaa, aab, aba, abb, baa, bab, bba,
bbb, aaaa, aaab, }

lenguaje
completo

L1 = {a, aa, aab}


L2 = {anbn : n>0} = {ab, aabb, aaabbb, }

Lenguajes:operaciones
Nota: L={} y L=
son siempre lenguajes (distintos), para todo .
Operaciones usuales de conjuntos:
L1L2 = { u: uL1 uL2 }
L1L2 = { u: uL1 uL2 }
LC = * \ L
_
a.k.a. L

Lenguajes:operaciones
Adems:
Transposicin: LR = { uR: uL }
Concatenacin: L1L2 = { uv: uL1, vL2 }
Tambin definimos
L0= {}
Lk = L Lk-1
y con eso

L L
*

k 0

L Lk
k 1

Lenguajes:operaciones

L* Lk
k 0

"Estrella de Kleene": palabras que se obtienen


concatenando 0 o ms palabras, cada una de las
cuales pertenece a L.
Ejemplo: con alfabeto ={a,b}
L = { aa, ab, ba, bb }
L* = ?
palabras de largo par (incluyendo )

Lenguajes
Ms ejemplos de lenguajes:

={a,b}
L1 = {w*: w contiene una cantidad
par de b}

Lenguajes
Ms ejemplos de lenguajes:

={0,...,9,k,.,-}
L2 = {w*: w es un RUT vlido}

Lenguajes
Ms ejemplos de lenguajes:

={ ( , ) }
L3 = {w*:

los parntesis estn bien balanceados}

Lenguajes
Ms ejemplos de lenguajes:

={0,1}
L4 = {w*: w en binario es un n primo}

Lenguajes
Ms ejemplos de lenguajes:

={0,1}
L5 = {w*: w= 1a01b01c01n, con n>2, a,b,c>0 y an+bn=cn}

Lenguajes
Ms ejemplos de lenguajes:

=ASCII
L6 = {w*: w es un programa en ANSI-C
que no se detiene nunca}

Lenguajes
={a,b}, L1={w*: w contiene una cantidad par de b}
={0,...,9,k,.,-}, L2={w*: w es un RUT vlido}
={(,)}, L3={w*: los parntesis estn bien balanceados}
={0,1}, L4={w*: w es un n primo}
={0,1}, L5={w*: w= 1a01b01c01n, n>2, a,b,c>0, y an+bn=cn}
=ASCII, L6={w*: w es un programa en ANSI-C que no
se detiene nunca}

Lenguajes

Hay lenguajes simples y complicados.


wL? puede ser pregunta interesante.
L=? Tambin puede serlo.

Lenguajes
Reconocer lenguajes puede ser equivalente a
resolver problemas:
Un problema de decisin es un problema que requiere
una respuesta del tipo s/no.
"wL?" es siempre un problema de decisin.
Todo problema de decisin se puede expresar
como wL, para algn lenguaje.
Cuando se estudia la dificultad de resolver
problemas (optimizar algo, calcular una funcin, lo que
sea) por lo general se estudia un problema de decisin
asociado. O sea, reconocer un lenguaje.

Lenguajes
A lo largo del curso veremos distintos modelos de
cmputo (distintos tipos de mquinas abstractas), que
pueden reconocer clases de lenguajes cada vez ms
complejas.
Hacia fines del semestre:
No todo lenguaje puede ser reconocido por un
computador.
En otros casos, hay cotas mnimas para el tiempo
necesario.

Lenguajes
Ejercicios:
Sean L1, L2 y L3 tres lenguajes sobre el alfabeto .
1) Demuestre que
L1 (L2 L3) = L1L2 L1L3
2) Demuestre que
L1 (L2 L3) L1L2 L1L3
y que esa inclusin es propia (i.e., existen casos
en que no se tiene =)..

Expresiones regulares (ER): una forma


compacta de describir lenguajes
Las ER se definen de manera recursiva. Sea un
alfabeto.
, , y todos los son ER (primitivas)
Si r1 y r2 son ER, entonces tambin lo son
(r1)
r1*
r1+r2
r1r2

Expresiones regulares
A una ER r le asociamos un lenguaje L(r), definido
recursivamente:
L() =
L() = {}
L() = {}

Precedencia

L(r1*) = L(r1)*

L(r1r2) = L(r1)L(r2)

L(r1+r2) = L(r1)L(r2)
L((r1)) = L(r1)

Expresiones regulares
Ejemplos:
(0+1)
(0+1)*

(0+1)*010

(0+1)*01(0+1)*

Expresiones regulares
Ejemplos:
((0+1)(0+1))*
((0+1)(0+1))*+((0+1)(0+1)
(0+1))*
Nota: cuando no haya confusin
posible, es posible usar exponentes:

((0+1)2)*+((0+1)3)*
((0+1)2+(0+1)3)*

Algo ms sobre expresiones regulares


Describen patrones en un texto.
Aparecen por muchos lados.
Sacan de apuros en muchos contextos.

No es difcil escribir ER.


La parte difcil: saberse la sintaxis exacta del
sistema que uno est usando.

Algo ms sobre expresiones regulares


tiles en:

comando grep en Unix


mdulo re en Python
java.util.regex
Perl
code.google.com
etc...

La sintaxis suele ser similar a la de Perl, excepto en


grep y otras herramientas Unix, que siguen el
estndar POSIX.
Lo ms simple es igual en casi todas las sintaxis:

. : comodn
x*: estrella de Kleene
x+: una o ms repeticiones de x
x?: x aparece una vez, o ninguna
xy: concatenacin
x|y: x+y
[abc] : agrupa caracteres
[a-c]: rango de caracteres
x{n}: xxx...x.
n veces

Ntese que todo se


podra haber escrito
con la notacin de ER
que definimos.

Algo ms sobre expresiones regulares


Ejemplo, patentes de autos
(incluyendo las patentes ms nuevas):
[A-Z]{2} ([A-Z]{2}|[0-9]{2})[0-9]{2}

Adems:
Abreviaturas (con "\", o con [:algo:] en posix) para conjuntos
de caracteres que se usan con frecuencia
Secuencias de escape para caracteres usados en la sintaxis,
como el "[".
Caracteres que indican "comienzo de string" o "fin de
string": en Perl, son ^ y $, respectivamente.

Algo ms sobre expresiones regulares


NO TODO LENGUAJE puede ser representado mediante
expresiones regulares.
Algunos (e.g., Perl) agregan cosas que permiten expresar
ms lenguajes.
Les siguen llamando expresiones regulares (regexp) a
esas expresiones extendidas.
Aqu usaremos el trmino slo para ER propiamente
dichas. Y slo usaremos la notacin estndar.

Identidades de expresiones regulares


Para simplificar ER pueden usarse algunas identidades
que siempre son ciertas, como:

Aqu las R, S y T representan cualquier ER.

Identidades de expresiones regulares


Ejercicio: simplificar las ER
((a*b*)* (b*a*)*)*
0(10)*1+(01)*
Una identidad til pero que slo es cierta si
L(R)L(S), es que en ese caso R+S=S.
Otro tipo de ejercicio es demostrar estas
identidades (o en general, demostrar que dos ER
son iguales, o que son distintas).
Ejercicio: demostrar algunas de las anteriores.

Sepan expresiones
regulares: son
nuestras amigas

También podría gustarte