Está en la página 1de 38

Lenguajes Formales y Autmatas

Profesor: Jorge Osio

CONTENIDO
Funciones: propiedades, comparacin del tamao de

conjuntos, cantidad de funciones [2_2.3], funciones de


cifrados, funciones hash [2_2.3], funciones recursivas
[2_3.2]. Lgica como modelo de computacin [1_1.5].
Lenguajes Formales: caractersticas, descripciones,
operaciones, usos [1_8.4]. Conjuntos contables [2_2.4].
Diagonalizacin [2_2.4]. Lmites de la computabilidad
[2_2.4.3].
1. GERSTING, JUDITH L. Mathematical Structures
for Computer Science: A Modern Approach to
Discrete Mathematics. W H Freeman & Co, 2006.
2. HEIN, JAMES. Discrete Structures, Logic and
Computability. Jones and Bartlett Publishers 1995

propiedades de funciones
Sea f: AB una funcin. Diremos que f es inyectiva si

y slo si
x,yA xy f(x) f(y).
Es decir, a elementos distintos del conjunto de partida
le corresponden elementos distintos del codominio,

o lo que es lo mismo x,y A f(x) = f(y) x=y

Propiedades de Funciones
Sea f: AB una funcin. Diremos que f es sobreyectiva

si y slo si y B x A : f(x) = y.
Es decir, la imagen de f es igual al codominio de la
funcin.

Propiedades de Funciones
Una funcin es biyectiva si es inyectiva y

sobreyectiva a la vez.

Si f es biyectiva, entonces su inversa f-1 es tambin una

funcin y adems biyectiva.

Propiedades de Funciones
Ejemplo:
La funcin f : R Z definida como f(x) = x+1
- es sobreyectiva porque para cualquier y Z existe un
nmero en R, y 1 tal que f(y 1) = y.
- Pero, f no es inyectiva porque, por ejemplo,
f(2.5) = f(2.6).

Propiedades de Funciones
Ejemplo:
La funcin f : Z Z definida como
f(x) = x+1
Es sobreyectiva porque para cualquier y Z existe un
nmero en Z, y 1 tal que f(y 1) = y.
Adems, f es inyectiva porque, x,y A
xy f(x) f(y).
Por lo tanto, Concluimos que f es biyectiva.
La inversa de f, f-1: Z Z se define como f -1 (y) = y-1.

La funcin mdulo e inversa


Lema:

Sea n > 1 y sea f : Nn Nn definida como sigue, donde a y b


son enteros:
f(x) = (ax + b) mod n.
Entonces f es una biyeccin si y slo si el mcd(a,n)= 1.
Cuando esto ocurre, la funcin inversa f-1 se define como
f-1 (x)=(kx+c) mod n donde,
c es un entero tal que f(c)=0
k es un entero tal que 1 = ak + nm para algn entero m.

Principio del palomar


Si m palomas vuelan a un palomar

que contiene n celdas donde m> n


Entonces una celda tendr dos o
ms palomas
- Si A y B son conjuntos finitos con |A| > |B|, entonces
toda funcin de A a B mapea al menos dos elementos
de A a un nico elemento de B.
- Esto es lo mismo que decir que no se puede definir una
funcin inyectiva de A a B.

principio del palomar


Ejemplos:

El juego de la silla, cuando juegan m


personas y quedan m-1 sillas.
2. En un grupo de 8 personas dos deben haber
nacido el mismo da de la semana.
3. En un conjunto de n+1 enteros existen (al
menos) dos que tendrn el mismo resto al
ser divididos por n.
1.

Funciones de cifrado
Funcin de cifrado para traducir letras de un alfabeto,

donde cada letra se codifica con un nmero del 0 al 26:


f(x)=(x+5) mod 27
La funcin f corre la letra 5 posiciones.
Ejemplo:
Codificamos la palabra hola como mtpf

Funciones de cifrado
Preguntas:

Es f una biyeccin?
Cmo decodificamos el mensaje?
f1(x) = (x 5) mod 27.
Sabemos f(26)=4
f 1(4) = (4 5) mod 27 =(1) mod 27 =26

Criptoanlisis
Criptoanlisis (del griego krypts,

"escondido" y analein, "desatar")


Es el estudio de los mtodos para
obtener el sentido de una informacin
cifrada, sin acceso a la informacin
secreta requerida para obtener este
sentido normalmente.

Funciones de cifrado
La funcin f(x)=(x+5) mod 27 es un ejemplo de funcin

de cifrado aditiva.
Las funciones de cifrado aditivas son monoalfabtica:
un caracter del alfabeto es siempre reemplazado por
un mismo caracter del alfabeto.
Dado mtpf podemos deducir fcilmente que codifica
la palabra hola.
Otras funciones de cifrado monoalfabticas son las
funciones de cifrado multiplicativas.
Ejemplo: g(x) = 3x mod 27
Es g una biyeccin?

Funciones de cifrado
Otro ejemplo de funciones de cifrado monoalfabticas

son las funciones de cifrado afines


Utilizan un par de claves: (M,A)
Ejemplo:
clave (4,5)
f(x) =(4x + 5) mod 27.
Pregunta: Cmo desciframos los mensajes?

Funciones de cifrado y Punto fijo


Lema

Sea n > 1 y sea f : Nn Nn definida como sigue,


donde a y b son enteros f(x) = (ax + b) mod n.
Entonces f no tiene puntos fijos si y slo si mcd(a 1, n)
no divide a b.
Aclaracin: Se dice que hay un punto fijo cuando f(x)=x

Funciones de cifrado y Punto fijo


Ejemplo
La funcin de cifrado f(x)=(4x + 5) mod 27 no tiene
puntos fijos porque:
mcd(4-1,27)=mcd(3,27)=3, y 3 no divide a 5
Por otra parte, la funcin de cifrado f(x)=(4x + 6) mod
27 tiene puntos fijos. Cules son?

Funciones Hash
Una funcin hash es una funcin que mapea un

conjunto S de claves a un conjunto finito de ndices 0,


1, . . . , n 1 de una tabla.
Una tabla cuya informacin se encuentra utilizando
una funcin de hash se denomina tabla hash.

Funciones Hash
Ejemplo:
Mapear las abreviaturas de los meses del ao
utilizando la funcin de hash f:
S {0,1,,11}
f(XYZ) = (ord(X)+ord(Y)+ord(Z)) mod 12,
donde ord(X) es el cdigo ASCII de X.

Funciones Hash
Colisiones:

Cmo asignar un nuevo valor?


Sondeo Lineal: Buscar hasta encontrar un espacio

libre:
(k + 1) mod n, (k + 2) mod n, , (k + n) mod n.

Funciones Hash
Preguntas:
Es posible encontrar una funcin inyectiva de tal manera

que no existan colisiones?


Si incrementamos el tamao de la tabla, sera ms
simple encontrar una funcin inyectiva?
Si el tamao de la tabla es incrementado, podemos
dispersar los elementos de tal manera que las colisiones
puedan ser resueltas en menor tiempo?

Funciones Hash
Sondeo lineal utilizando huecos (gaps)

Buscar hasta encontrar un espacio libre:


(k + g) mod n,(k + 2g) mod n,...,(k + ng) mod n.
Ejemplos:

Para n = 12 y g = 4, con k = 7 se obtiene los siguientes valores:


11, 3, 7, 11, 3, 7, 11, 3, 7, 11, 3, 7.
Para n = 12 y g = 5 con k=7 :
0, 5, 10, 3, 8, 1, 6, 11, 4, 9, 2, 7.
Si queremos encontrar una biyeccin necesitamos
mcd(g,n)=1 con (1g<n)

Funciones Hash
Aplicaciones de las funciones hash:

- Acceso rpido a archivos. El acceso a los datos suele ser


muy rpido si se cumplen que la razn de ocupacin sea
inferior al 75%. Adems, se usa una funcin resumen que
distribuya uniformemente las claves.
- Identificar archivos (por ejemplo, usado en sistemas
P2P). La principal funcin de un HASH es AUTENTICAR
LO RECIBIDO CONTRASTANDO QUE AL APLICAR EL
MISMO CLCULO STE OFRECE EL MISMO RESUMEN
ANUNCIADO REMOTAMENTE.
- Corroborar que un archivo no haya cambiado (test de
integridad). Comnmente usado para determinar si un
archivo fue infectado por un virus

funciones recursivas sobre


naturales
Sea suc la funcin sucesor

suc es tal que suc(x) = x+1.


Definicin recursiva de suma. Podemos definir la

funcin suma recursivamente como sigue:


- suma(m,0) = m
- suma (m, n+1) = suc (suma (m, n))

funciones recursivas sobre


naturales
Definicin recursiva de producto:

prod(n,0) = 0
prod(m, n+1) = suma (m,prod(m, n))
Definicin recursiva de exponenciacin:

exp(m,0) = 1
exp(m, n+1) = prod(m,exp(m, n))
Nota: usaremos +,* y para denotar suma,

producto y exponenciacin, respectivamente.

funciones recursivas sobre naturales


Suma de nmeros impares

f(n)=1 + 3 + + (2n + 1)
=(1 + 3 + + (2n 1)) + (2n + 1)
=(1 + 3 + + 2(n 1) + 1) + (2n +1)
= f (n 1) + 2n + 1.
Definicin recursiva de f

f (0) = 1,
f (n + 1) = f (n) + 2n + 3.

funciones recursivas sobre


naturales
Definicin recursiva de fibonacci

fib(0) = 0,
fib(1) = 1,
fib(n+2) = fib(n+1) + fib(n)

Funciones recursivas sobre cadenas


Al trabajar con cadenas, asumiremos que nuestro

alfabeto est compuesto slo por los smbolos a y


b.
Sea complemento una funcin definida sobre cadenas
tal que transforma las as en bs y viceversa.
Definicin recursiva de complemento

comp(a.w) = b.comp(w)
comp(b.w) = a.comp(w)

Funciones recursivas sobre listas


Notacin
L = [] representa la lista vaca
L = x :: T representa la lista L con cabeza (primer

elemento) x y cola T.
Definicin recursiva de longitud
longitud ([] ) = 0
longitud (a::T) = 1 + longitud (T) .

Funciones recursivas sobre listas


pares([a, b, c], [1, 2, 3]) = [(a, 1), (b, 2), (c, 3)]
Definicin recursiva de pares

pares ([ ] ,[ ] ) =[ ] ,
pares (a :: T, b :: T) = (a, b) :: pares(T,T) .

lenguajes formales: definiciones


bsicas
Un alfabeto (o vocabulario) es un conjunto finito

no vaco de smbolos.
Una cadena sobre es una secuencia finita de
smbolos de .
* es el conjunto de todas las cadenas sobre .
Un lenguajes sobre es un subconjunto de *.
Una gramtica para un lenguaje puede ser descripta
definiendo su proceso generativo.

Gramtica para lenguajes formales


Una gramtica estructura de frase
(tipo 0) es una 4-tupla
G= (VN, V T, S, P), donde
VN = conjunto de smbolos no terminales.
V T = conjunto de smbolos terminales.
S = smbolo inicial de la gramtica.
P = conjunto finito de producciones de la forma ,
donde es una cadena sobre VN UV T , (con al menos
un smbolo de VN), y es una cadena sobre VN UV T.
(usamos cuando es la cadena nula)

derivaciones
Sea G=(VN,VT, S, P) y sean w1 y w2 cadenas sobre VN

U V T.
Decimos que w1 deriva directamente w2, y lo
notamos w1 w2 si
es una produccin en P,
w1 contiene una instancia de ,
w2 es obtenida a partir de w1 reemplazando esa
instancia de con .

derivaciones
Si w1,w2,...,wn son cadenas sobre VN UV T y w1 w2, w2

w3,... wn1 wn, entonces w1 genera (deriva) wn,


Se escribe w1 + wn (por convencin, w1 * w1)

Lenguaje formal
Dada una gramtica G, el lenguaje L generado por G,

denotado L(G), es el conjunto L = {w VT *| S + w}.


En otras palabras, L es el conjunto de todas las cadenas de
terminales generadas a partir de S.
Observacin: Una vez que una cadena w de terminales

ha sido obtenida, ninguna produccin puede ser aplicada


a w, y w no puede generar otras palabras.

Ejemplo de derivacin
Sea L = {0n1n | n 1}. Una gramtica para L es

G=(VN,VT, S, P) donde VN = {S}, VT = {0, 1}, y P


consiste de las siguientes producciones:
1. S 0S1
2. S 01
Podemos generar 0313 como sigue:
S 0S1
00S11
000111

Ejemplo de derivacin
Sea L = {anbncn | n 1}. Una gramtica para L es

G=(VN,VT, S, P) donde VN = {S, B, C}, VT = {a, b, c}, y P


consiste de las siguientes producciones:
1. S aSBC
2. S aBC
3. CB BC
4. aB ab
5. bB bb
6. bC bc
7. cC cc

Ejemplo de derivacin
Podemos generar la cadena a2b2c2 como sigue

S aSBC
aaBCBC
aaBBCC
aabBCC
aabbCC
aabbcC
aabbcc

También podría gustarte