Sunteți pe pagina 1din 51

Notas para un curso de

lenguajes formales y aut


omatas
Abdiel E. Caceres Gonzalez
Universidad Juarez Autonoma de Tabasco,
Carr. Cunduacan-Jalpa Km 1, Cunduacan Tab. Mex.
abdielc@acm.org
16 de septiembre de 2011

Indice general
I

Preeliminares matem
aticos

1. Teora de conjuntos

7
9

1.1. Conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1. El concepto de pertenencia . . . . . . . . . . . . . . .

11

1.1.2. Subconjuntos y subconjuntos propios . . . . . . . . . .

12

1.1.3. Igualdad entre conjuntos . . . . . . . . . . . . . . . . .

12

1.1.4. Operaciones b
asicas de conjuntos . . . . . . . . . . . .

13

1.2. Producto cartesiano . . . . . . . . . . . . . . . . . . . . . . .

15

1.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2. Relaciones y funciones

17

2.1. Relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.1.1. Dominio, codominio y rango . . . . . . . . . . . . . . .

19

2.2. Propiedades de las relaciones . . . . . . . . . . . . . . . . . .

22

2.2.1. Reflexividad . . . . . . . . . . . . . . . . . . . . . . . .

22

2.2.2. Simetra . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.2.3. Transitividad . . . . . . . . . . . . . . . . . . . . . . .

24

2.2.4. Antisimetra e irreflexibilidad . . . . . . . . . . . . . .

27

2.3. Relaciones de equivalencia . . . . . . . . . . . . . . . . . . . .

28

2.4. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

2.4.1. Funciones inyectivas . . . . . . . . . . . . . . . . . . .

31

2.4.2. Funciones sobreyectivas . . . . . . . . . . . . . . . . .

31

INDICE GENERAL

2.4.3. Funciones suprayectivas . . . . . . . . . . . . . . . . .

32

2.5. Composici
on de funciones . . . . . . . . . . . . . . . . . . . .

32

2.6. Permutaciones . . . . . . . . . . . . . . . . . . . . . . . . . .

35

2.7. Funciones vs. procedimientos . . . . . . . . . . . . . . . . . .

36

2.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3. Estructuras algebraicas

39

3.1. Grupoides y semigrupos . . . . . . . . . . . . . . . . . . . . .

39

3.1.1. Grupoides . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.1.2. Semigrupos . . . . . . . . . . . . . . . . . . . . . . . .

41

3.2. Idempotencia . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

3.3. Monoides . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

3.3.1. Conmutatividad . . . . . . . . . . . . . . . . . . . . .

45

3.3.2. Elemento identidad . . . . . . . . . . . . . . . . . . . .

47

3.3.3. Monoide . . . . . . . . . . . . . . . . . . . . . . . . . .

48

3.4. Grupos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

3.4.1. Elemento inverso . . . . . . . . . . . . . . . . . . . . .

48

INDICE GENERAL

Pre
ambulo
Estas notas corresponden a la parte introductoria del curso de Lenguajes
Formales y Aut
omatas, aunque tambien son u
tiles en un curso de Matematicas
Discretas y en cualquier otro curso que tenga como parte introductoria las
definiciones de conjuntos hasta relaciones y funciones.
En este curso se promueve el uso de Scheme para comprender las definiciones que en el lenguaje habitual de las matematicas quedan en el plano
descriptivo.
Las definiciones utilizadas el texto, estaran claramente se
naladas en un
cuadro con los n
umeros de lnea en el margen izquierdo, con fuente TrueType,
como en el siguiente ejemplo.
1

(define saluda "Hola Mundo!")


A su vez, las evaluaciones de las definiciones se escribiran en un recuadro
con color amarillo claro y con el mismo tipo de letra:
>saluda
Hola Mundo!

INDICE GENERAL

Parte I

Preeliminares matem
aticos

Captulo 1

Teora de conjuntos
1.1.

Conjuntos

Los conceptos de conjunto y elemento son fundamentales, se toman como


basicos y no se definen.
En Scheme, los elementos son llamados datos primitivos, y su evaluacion
es el mismo dato.
> 5
5
> 9
9
> a
a
El ap
ostrofe anterior al smbolo a es necesario para establecer que a es un
elemento primitivo y no debe tratarse de evaluar, pues no es una abstraccion
de otro valor (no es una variable con alg
un valor asignado).
Los siguientes conceptos tambien son usados:
{a|P }
{a1 , a2 , ...}

El conjunto de todos los elementos a (de cierto conjunto)


que satisfacen la propiedad P .
Una lista con todos los elementos de un conjunto.

En Scheme es posible definir conjuntos de ambas formas (extensional


e intensional), por ahora nos avocaremos a estudiar los conceptos de conjuntos utilizando definiciones de conjuntos de forma extensional, con una
9

CAPITULO 1. TEORIA DE CONJUNTOS

10

cardinalidad ciertamente peque


na, pero sumamente u
tiles para describir las
definiciones.
As como un primer ejemplo, diremos que A es el conjunto de los n
umeros
0, 1, 2, 3, 4, 5, 6, 7, 8 y 9, mediante la siguiente definicion:
1

(define A (0 1 2 3 4 5 6 7 8 9))
> A
(0 1 2 3 4 5 6 7 8 9)
En matem
aticas, nosotros podemos escribir algo como esto:
Sea A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} un conjunto.
De manera intencional, podemos definir el mismo conjunto como A =
{x : N|0 x 9}, sin embargo esta definicion es mas bien descriptiva, y
nos dice c
omo podemos reconocer a un elemento de este conjunto, pero no
nos dice c
omo construirlo.
Justamente esta es la diferencia entre las definiciones descriptivas utilizadas con frecuencia en matematicas y las definiciones procedurales efectivas utilizadas con frecuencias en ciencias computacionales.
Aprovechando el formato de lista, un conjunto descrito de esta manera
tiene un elemento al frente (el de mas a la izquierda) y el resto de los
elementos, esto lo podemos escribir como A = (a1 |A1 ), donde A1 es el resto
de los elementos de A, excepto el primero. A su vez, A1 = (a2 |A2 ), de
modo que A = (a1 |a2 |A2 ), y as sucesivamente hasta encontrar que A =
(a1 |a2 |a3 | . . . |).
La cantidad de elementos que tiene un conjunto se denomina bf cardinalidad. En smbolos, |A| = n dice que la cantidad de elementos del conjunto
A es n, un n
umero entero positivo.
Una definici
on efectiva es la siguiente:

1
2
3

(define (cardinalidad A)
(cond ((empty? A) 0)
(#t (+ 1 (cardinalidad (cdr A))))))
>(cardinalidad A)
10

1.1. CONJUNTOS

11

En smbolos,

|A| =

1.1.1.

0
si A = ;
1 + |A1 | e.o.c.

El concepto de pertenencia

Decimos que un elemento a pertenece a un conjunto A, escrito como


a A, si o bien:
1. cumple con las propiedades que dicta la definicion de un conjunto, o
2. se encuentra en la lista explcita de los elementos que definen el conjunto.
De lo contrario, entonces decimos que a no pertenece al conjunto A,
denotado por a 6 A.
Una definici
on procedural efectiva para determinar la pertenencia de un
elemento a un conjunto definido por extension, es decir, dado mediante una
lista de los elementos que lo componen, es la siguiente:
1
2
3
4

(define (pertenece? a A)
(cond ((null? Conjunto) #f)
((equal? a (car A)) #t)
(#t (pertenece? a (cdr A)))))
>(pertenece? 4 A)
#t
>(pertenece? 15 A)
#f
Donde a es un elemento y A es el conjunto. La idea subyacente de este
procedimiento es una definici
on de tres partes, suponiendo que el conjunto
A es definido en forma de lista como: A = {a1 , a2 , . . . , an }. La definicion
anterior (en tres partes) es:
1. a A es falso si A = .
2. a A es verdadero si a = a1 . (a1 es el primer elemento del conjunto
A en forma de lista).
3. En otro caso (a 6= a1 ), habra que determiniar la pertenencia en el resto
de los elementos.

CAPITULO 1. TEORIA DE CONJUNTOS

12

1.1.2.

Subconjuntos y subconjuntos propios

Sean A y B conjuntos. Si a A a B entonces decimos que A es un


subconjunto de B, que se denota por A B o B A. Para todo conjunto
A, A, A A.
1
2
3
4

(define (subconjunto? A B) ;A es subconjunto de B?


(cond ((empty? A) #t)
((pertenece? (car A) B) (subconjunto? (cdr A) B))
(#t #f)))
> (subconjunto? (0 2 4 6 8) A)
#t
> (subconjunto? (0 2 4 6 8 15) A)
#f
De nuevo, esta definicion esta construida en tres partes, suponiendo siempre que los conjuntos son listas de la forma (c|R), con un elemento a la
cabeza (la c) y una lista con el resto de los elementos (la R). En la siguiente definici
on consideraremos que A = (a1 |A1 ):

si A = ;
V
A1 B si a1 B;
AB=

F
e.o.c.
Un conjunto A es un subconjunto propio de B, y se denota como A B,
si todos los elementos de A son miembros del conjunto B, pero no todos
los elementos de B son miembros del conjunto A. Definitivamente esto nos
sugiere que la cardinalidad del conjunto B es mayor a la cardinalidad del
conjunto A, dicho en terminos matematicos, |B| > |A|.

1.1.3.

Igualdad entre conjuntos

Decimos que dos conjuntos A y B son iguales si se cumple que:


A = B si A B y B A
.
En espa
nol, esta definicion dice que dos conjuntos A y B son iguales si A
es un subconjunto de B y B es un subconjunto de A, que se puede traducir
de inmediato en Scheme como sigue:

1.1. CONJUNTOS
1
2
3

13

(define (conjuntos-iguales? A B)
(if (and (subconjunto? A B)
(subconjunto? B A)) #t #f))
> (conjuntos-iguales? (0 1 2 3 4 5 6 7 8 9) A)
#t
> (conjuntos-iguales? (0 1 2 3 4 5 6 7 8 9 10) A)
#f

1.1.4.

Operaciones b
asicas de conjuntos

A B denota la uni
on de los conjuntos A y B, que es el conjunto de
todos los elementos que pertenecen al conjunto A o al conjunto B, o a ambos
conjuntos.
A B = {a|a A o a B}
1
2
3
4

(define (union A B)
(cond ((null? A) B)
((pertenece? (car A) B) (union (cdr A) B))
(#t (cons (car A) (union (cdr A) B)))))
Hagamos ahora B = {a, e, i, o, u}, podemos agregar esta definicion a las
ya hechas.

(define B (a e i o u))
> (union A B)
(0 1 2 3 4 5 6 7 8 9 a e i o u)
> (union (a) (union (b) (union (c) (d))))
(a b c d)
La definici
on efectiva (la del procedimiento) puede ser establecida como:

si A = ;
B
A1 B
si a1 B;
AB =

crear la union con a1 y (A1 B)


e.o.c.
Recordemos una vez mas que A = {a1 , a2 , a3 , . . . , an } = (a1 |A1 ). A1 =
(a2 |A2 ). A2 = (a3 |A3 ) y as hasta An1 = (an |).

14

CAPITULO 1. TEORIA DE CONJUNTOS

A B es la intersecci
on de A y B, es el conjunto de todos los elementos
que pertenecen al conjunto A y al conjunto B simultaneamente.
1
2
3
4
5

(define (interseccion A B)
(cond ((or (null? A) (null? B)) ())
((pertenece? (car A) B)
(cons (car A) (interseccion (cdr A) B)))
(#t (interseccion (cdr A) B))))

si A = o B = ;

crear la interseccion con a1 y (A1 B) si a1 B;
AB =

A1 B
e.o.c.
Recordando que A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} y B = {a, e, i, o, u},
> (interseccion A (3 0 a i))
(0 3)
> (interseccion A B)
()
A B es el conjunto de todos los elementos en A que no son elementos
del conjunto B.
1
2
3
4
5

(define (diferencia A B)
(cond ((null? A) ())
((null? B) A)
((pertenece? (car A) B) (diferencia (cdr A) B))
(#t (cons (car A) (diferencia (cdr A) B)))))
Simb
olicamente podemos escribir esta definicion como:

si A = ;

A
si B = ;
AB =
crear la diferencia con a1 y (A1 B) si a1 B;

A1 B
e.o.c.
> (diferencia A (2 4 6 8))
(0 1 3 5 7 9)

1.2. PRODUCTO CARTESIANO

1.2.

15

Producto cartesiano

El conjunto de todos los pares ordenados (a, b) donde a A y b B


se llama Producto cartesiano de dos conjuntos A y B, y es denotado por
A B, aqu nada impide que los conjuntos A y B sean iguales.
A B = {(a, b)|a A, b B}
Proceduralmente no es tan directo como las definiciones anteriores, y la
idea es crear una lista con los elementos de las listas de pares creados con
un elemento de A y todos los elementos de B.
1
2
3
4
5
6
7

; crea una lista de pares, donde el primer conjunto es


; el elemento <a> y el segundo es cada elemento de la lista
; <Conjunto>
(define (crea-pares a Conjunto)
(cond ((null? Conjunto) ())
(#t (cons (vector a (car Conjunto))
(crea-pares a (cdr Conjunto))))))

8
9
10
11
12
13

; devuelve el producto cartesiano de dos conjuntos


(define (cart A B)
(cond ((null? A) ())
((null? B) ())
(#t (append (crea-pares (car A) B) (cart (cdr A) B)))))
La funci
on del procedimiento crea-pares es crear una lista de pares con
un elemento y una lista, como en el ejemplo siguiente:
> (crea-pares a (0 1 2 3))
(#(a 0) #(a 1) #(a 2) #(a 3))
Notemos la diferencia entre la notacion que hemos adoptado para conjuntos y para los pares ordenados. Mientras que (a b) representa el conjunto
{a, b}, utilizamos vectores en Scheme como #(a b) que representa el par
ordenado (a, b).
El procedimiento cart, por su parte, creara una lista de pares por cada
elemento de A, agregando los pares ordenados de cada lista creada a la lista
anterior, donde la base es la lista vaca () y de ese modo creara el producto
cartesiano de ambos conjuntos.

CAPITULO 1. TEORIA DE CONJUNTOS

16
> A
(0 1 2 3 4)
> B
(a e i o u)
> (cart A B)
(#(0 a) #(0 e)
(#(1 a) #(1 e)
(#(2 a) #(2 e)
(#(3 a) #(3 e)
(#(4 a) #(4 e)

1.3.

#(0
#(1
#(2
#(3
#(4

i)
i)
i)
i)
i)

#(0
#(1
#(2
#(3
#(4

o)
o)
o)
o)
o)

#(0
#(1
#(2
#(3
#(4

u))
u))
u))
u))
u))

Ejercicios

1. Escriba una definicion en Scheme que devuelva un #t si una lista dada


es un conjunto, y devuelve #f si una lista dada no es un conjunto.
Recordemos que en un conjunto no se permiten elementos repetidos.
2. Escriba una definicion en Scheme para determinar si un conjunto es
subconjunto propio de otro conjunto.
3. El conjunto potencia de un conjunto A, denotado por P(A), es el conjunto de todos los subconjuntos de A. Escriba una definicion que tenga
la funci
on de devolver el conjunto potencia de un conjunto dado.
4. Escriba un procedimiento que encuentre el producto cartesiano de una
lista de conjuntos de tama
no arbitrario.

Captulo 2

Relaciones y funciones
2.1.

Relaciones

Cualquier subconjunto de A B se llama relaci


on binaria entre A y B,
escrita como R : A B. La idea que subyace al concepto de relacion, es
que algunos, quiz
a todos los elementos de un conjunto A, junto con algunos
o quiz
a todos los elementos del conjunto B, hagan verdadero el valor de
verdad de un predicado, de modo que se diga que los elementos del conjunto
A se relacionan con los elementos del conjunto B.
Suponiendo claro el predicado P (A) definido para los elementos del conjunto A, diremos que R es el conjunto de pares de elementos, (a, b) con a A
y b B, para los cuales el predicado P (a) = b es verdadero. A este conjunto
de pares R le llamamos
on. Los elementos de R pueden ser escritos
 una relaci
como (a, b) R
o ab R o bien aRb.
Lo u
nico necesario para determinar si un conjunto R es una relacion de
A a B, es R A B.
1
2

(define (rel? R A B)
(subconjunto? R (cart A B)))
Como ejemplo, sea R1 : A B definida por R1 = {(0, a), (0, e), (1, i),
(1, o), (2, u), (2, a), (3, e), (3, i), (4, o), (4, u)}.

1
2
3

; R1: A ---> B
(define R1 (#(0 a) #(0 e) #(1 i) #(1 o) #(2 u) #(2 a)
#(3 e) #(3 i) #(4 o) #(4 u))

17

CAPITULO 2. RELACIONES Y FUNCIONES

18
>(rel? R1 A B)
#t

Utilizaremos frecuentemente las siguientes definciones para manipular


las tuplas ordenadas.
1
2
3
4
5
6
7
8
9
10

; Para manipular pares de la forma #(a b)


; obtiene el primer valor de la tupla
(define (car# parvector)
(vector-ref parvector 0))
; obtiene el segundo valor de la tupla
(define (cadr# parvector)
(vector-ref parvector 1))
; todos excepto el primer valor
(define (cdr# lista-vec)
(list->vector (cdr (vector->list lista-vec))))
La relaci
on inversa R1 esta definida por
bR1 a aRb.
R1 es una relaci
on de elementos del conjunto B con elementos del conjunto A. Los mismos conjuntos A y B para los que la relacion R existe.
Es necesario entonces, definir un procedimiento para obtener el par inverso de un par dado.

1
2
3
4
5

;invierte el orden de los elementos de un par.


; si par=(a b), entonces devuelve (b a)
(define (rap par)
(cond ((empty? par) ())
(#t (list (cadr par) (car par)))))
De este modo, determinar la relacion inversa de una relacion significa
leer cada par de la relacion y construir la relacion inversa con los inversos
de cada par.

1
2
3
4
5
6

; determina la relacion inversa de una relacion.


; devuelve R^-1: B-> A, suponiendo R:A->B.
(define (rel-1 R A B)
(cond ((empty? R) ())
((not (rel? R A B)) #f) ; si no es una relacion
(#t (cons (rap (car R)) (rel-1 (cdr R) A B)))))

2.1. RELACIONES
> A
(0 1 2 3 4)
> B
(a e i o u)
> (rel-1 R1
(#(a 0) #(e
#(i 3) #(o
> R1
(#(0 a) #(0
#(3 i) #(4

19

A B)
0) #(i 1) #(o 1) #(u 2) #(a 2) #(e 3)
4) #(u 4))
e) #(1 i) #(1 o) #(2 u) #(2 a) #(3 e)
o) #(4 u))

Las relaciones entre elementos de un mismo conjunto A tambien son


consideradas con bastante frecuencia; esas relaciones se dicen que son sobre
A. Si R es una relaci
on sobre A, tambien lo es R1 .

2.1.1.

Dominio, codominio y rango

El conjunto de los elementos de los cuales se cuestiona con quien esta relacionado se llama dominio, el dominio de la relacion establece la definicion
de la relaci
on, as que diremos que la relacion esta definida solamente en los
elementos de su dominio. El dominio es
Dom(R) = {a|b, aRb}.
El dominio es el conjunto de todas los elementos as para las cuales existe
al menos un elemento b tal que aRb.
1
2
3
4
5
6
7
8

;Elimina los elementos repetidos de una lista


;asi una lista se puede considerar un conjunto
(define (lista->conjunto lista)
(cond ((empty? lista) ())
((pertenece? (car lista) (cdr lista))
(lista->conjunto (cdr lista)))
(#t (cons (car lista)
(lista->conjunto (cdr lista))))))

9
10
11
12
13

; Devuelve los primeros elementos de cada par


; que define la relacion para una relacion R:A-->B
; R=((#(d1 r1) (#(d2 r2) ... (#(dn rn)))

20
14
15
16
17
18
19

CAPITULO 2. RELACIONES Y FUNCIONES

; devuelve (d1 d2 ... dn)


(define (Dom R A B)
(lista->conjunto
(cond ((empty? R) ())
((rel? R A B) (cons (car# (car R)) (Dom (cdr R) A B)))
(#t #f))))
> R1
(#(0 a) #(0 e) #(1 i) #(1 o) #(2 u) #(2 a) #(3 e) #(3 i)
#(4 o) #(4 u))
> (Dom R1 A B)
(0 1 2 3 4)
En una funci
on f : A B, los elementos de un conjunto A se relacionan
con elementos del conjunto B, al conjunto B se le ha llamado codominio,
simplemente por ser la contraparte del dominio.

1
2

; El codominio de la relacion R:A-->B


(define (Cod R A B) B)
Es posible que no todos los elementos del codominio B tengan alg
un
elemento del dominio en su relacion, de modo que el rango de la relacion
es el conjunto de elementos que estan siendo relacionados por elementos del
dominio de la relaci
on, de modo que el rango se define como
Ran(R) = {b|a, aRb}

1
2
3
4
5
6
7
8
9
10

;Devuelve los segundos elementos de cada par que


; define la relacion para una relacion R:A-->B
; R=((#(d1 r1) (#(d2 r2) ... (#(dn rn)))
; devuelve (r1 r2 ... rn)
(define (Ran R A B)
(lista->conjunto
(cond ((empty? R) ())
((rel? R A B) (cons (cadr# (car R))
(Ran (cdr R) A B)))
(#t #f))))
> R1
(#(0 a) #(0 e) #(1 i) #(1 o) #(2 u) #(2 a) #(3 e) #(3 i)
#(4 o) #(4 u))

2.1. RELACIONES

21

> (Ran R1)


(a e i o u)
Es natural querer saber con que elementos esta relacionado un elemento
del dominio de cierta relaci
on. Dado que un elemento del dominio puede
estar relacionado con m
as de un elemento del rango, entonces la respuesta del
requerimiento de determinar los elementos relacionados a cierto elemento
debe ser un conjunto. As,
1
2
3
4
5
6
7
8
9

(define (evaluaR relacion valor)


; se encarga de evaluar un subconjunto de valores
(define (evaluaSubC-R relacion subconjunto)
(cond ((empty? relacion) ())
((empty? subconjunto) ())
(#t (lista->conjunto
(append
(evalua-R relacion (car subconjunto))
(evaluaSubC-R relacion (cdr subconjunto)))))))

10
11
12
13
14
15
16
17
18

; evalua un valor y devuelve el conjunto de imagenes


(define (evalua-R relacion valor)
(cond ((empty? relacion) ())
((list? valor) (evaluaSubC-R relacion valor))
((equal? (car# (car relacion)) valor)
(cons (cadr# (car relacion))
(evalua-R (cdr relacion) valor)))
(#t (evalua-R (cdr relacion) valor))))

19
20
21
22
23
24
25

; si hay solo una imagen, devuelve solo el elemento


; si hay mas de una, devuelve una lista con las imagenes
(let ((evaluacion (evalua-R relacion valor)))
(if (= 1 (cardinalidad evaluacion))
(car evaluacion)
evaluacion)))
> R1
(#(0 a) #(0 e) #(1 i) #(1 o) #(2 u) #(2 a) #(3 e) #(3 i)
#(4 o) #(4 u))
> (evaluaR R1 0)
(a e)
> (evaluaR R1 (0 2))

CAPITULO 2. RELACIONES Y FUNCIONES

22
(e u a)

Los ejemplos anteriores corresponden a los conjuntos R1 (0) = {a, e} y


R1 ({0, 2}) = {e, u, a} de la relacion R1 .
Formalmente para cualquier relacion R,
R(a) = {b|aRb}.
Para A1 A,
R(A1 ) =

R(a)

aA1

2.2.
2.2.1.

Propiedades de las relaciones


Reflexividad

Una relaci
on R : A A es una relacion reflexiva si se cumple que
aRa, a A.
Es decir, en una relacion reflexiva, cada elemento del dominio de la
relaci
on est
a relacionado consigo mismo, un ejemplo claro de una relacion
con esta propiedad es la relacion (menor o igual que).
1
2
3
4
5
6
7
8
9

; Evalua #f si la relacion R no es reflexiva sobre A


; Evalua #t si la relacion R si es reflexiva sobre A
; Una relacion R:A-->A es reflexiva
; si para todo a en A, <a a> esta en R
(define (reflexiva? R A B)
(and (rel? R A B)
(andmap
(lambda (i) (pertenece? (vector i i) R))
A)))
En el c
odigo anterior, el procedimiento andmap aplica un predicado a
los elementos de un conjunto. El procedimiento se ha definido de manera
an
onima y verifica la pertenencia de un par a un conjunto, en la lnea 8.
El conjunto del cual se toman los valores para crear los pares que se deben
verificar es el dominio de la relacion, en la lnea 9.

2.2. PROPIEDADES DE LAS RELACIONES


1
2

23

; La funcion Identidad sobre A


(define I (#(0 0) #(1 1) #(2 2) #(3 3) #(4 4)))
> I
(#(0 0) #(1 1) #(2 2) #(3 3) #(4 4))
> (reflexiva? I A A)
#t

0 1 2
0 1 0 0
1 0 1 1
2 0 0 1
Desde el punto de vista matricial, un 1 en la posicion (i, j) dentro de la
matriz, significa que el par (ai , aj ) pertenece a la relacion, y un 0 significa
que no pertenece. La reflexividad se muestra cuando la diagonal principal
esta llena de 1s.
Sin embargo, en este otro ejemplo
> (reflexiva? (#(0 0) #(2 2) #(1 2)) (0 1 2) (0 1 2))
#f
En el ejemplo, se desea saber si la relacion {(0, 0), (2, 2), (1, 2)} es reflexiva,
cuando el dominio es {0, 1, 2}. El resultado de la evaluacion ha sido falso (#f)
porque no se encuentra enlistado el par (1, 1), considerando que el dominio
es {0, 1, 2}.

2.2.2.

Simetra

Una relaci
on simetrica R sobre un conjunto A, es aquella en la que se
encuentran los pares de la forma (b, a) siempre que los pares de la forma (a, b)
se encuentren en la relaci
on. De manera mas formal podemos establecer que
Si aRb = bRa, a, b A
Un procedimiento efectivo que determina si una relacion es simetrica es
la siguiente:

CAPITULO 2. RELACIONES Y FUNCIONES

24
1
2
3
4
5
6
7

; Una relacion R:A-->A es simetrica si para todo a y b en A,


; si (a b) esta en R, entonces (b a) tambien esta en R
(define (simetrica? R A B)
(and (rel? R A B)
(andmap
(lambda (i) (pertenece? (rap i) R))
R)))
> (simetrica? (#(0 0) #(2 2) #(1 2) #(2 1)) A A)
#t
Aunque la definici
on no lo establece, nosotros hacemos una verificacion
para determinar si el conjunto R pasado como parametro es una relacion en
el dominio A y codominio B tambien pasados como parametros.
Cuando se utiliza una matriz para representar una relacion, la simetra
se cumple cuando se verifica que para cada elemento en la posicion (i, j),
este presente el elemento en la posicion (j, i) en la misma relacion.

0
1
2
3
4

0
1
0
0
0
0

1
0
0
1
0
0

2
0
1
1
0
0

3
0
0
0
0
0

4
0
0
0
0
0

Este ejemplo corresponte a la relacion {(0, 0), (2, 2), (1, 2), (2, 1)} anterior;
esta relaci
on es simetrica pero no es reflexiva en el dominio de la relacion.

2.2.3.

Transitividad

Los amigos de mis amigos, son mis amigos.-An


onimo.
Una relaci
on R : A A es transitiva si el predicado que define la
relaci
on se puede extender hasta afectar a terceros. Formalmente decimos
que la relaci
on es transitiva si:
a, b, c A : (a, b) R (b, c) R = (a, c) R.

2.2. PROPIEDADES DE LAS RELACIONES

25

Esta propiedad no es directamente observable a simple vista en una


matriz de pertenencia1 . Si M es la matriz de pertenencia de la relacion R,
la relaci
on es transitiva si
M M 2 = M.
Para comprender mejor las implicaciones de la transitividad, supongamos que el par (a, b) R. Es necesario entonces, buscar en R todos los
pares que tengan como primer elemento b. En otras palabras, el conjunto de
elementos que est
an relacionados con b. Supongamos ahora que
R(a) = b; y R(b) = {c1 , c2 , . . . , ck },
porque
{(b, c1 ), (b, c2 ), . . . , (b, ck )} R.
Este conjunto se puede nombrar como el conjunto de los segundos
pares de a. Habr
a entonces que hacer una lista de pares de la forma (a, c)
donde cada c R(b). El conjunto que resulta de emparejar a con cada elemento de R(b) lo llamaremos el conjunto de los terceros pares de a A.
{(a, c1 ), (a, c2 ), . . . , (a, ck )}, cuando R(b) = {c1 , c2 , . . . , ck }.
La transitividad se demuestra cuando este procedimiento se realiza para
cada elemento a Dom(R).
Las siguientes definiciones describen procedimientos para encontrar los
segundos pares y los terceros pares, y para verificar la transitividad.
1
2
3
4
5
6
7

; hace una lista de los pares que tienen como primer elemento,
; el segundo elemento de un par bajo una relacion.
(define (segundosp par R)
(cond ((empty? R) ())
((equal? (cadr# par) (car# (car R)))
(cons (car R) (segundosp par (cdr R))))
(#t (segundosp par (cdr R)))))

8
9
10
11

; hace una lista de los pares que tienen como primer elemento
; el primer elemento de un par, y como segundo elemento,
; el segundo elemento de cada segundo par (ver segundos-pares)
1

Esta matriz establece la pertenencia de un par a la relaci


on. Es una matriz binaria
donde un 0 significa no pertenencia y un 1 significa pertenencia. Es equivalente a la matriz
de adyacencia en teora de grafos.

26
12
13
14
15

CAPITULO 2. RELACIONES Y FUNCIONES

(define (tercerosp par lista2s)


(cond ((empty? lista2s) ())
(#t (cons (vector (car# par) (cadr# (car lista2s)))
(tercerosp par (cdr lista2s))))))

16
17
18
19
20
21
22
23
24

; Una relacion es transitiva si los terceros pares


; de cada par de la relacion son un subconjunto de la relacion
(define (transitiva? R A B)
(and (rel? R A B)
(andmap
(lambda (i) (subconjunto?
(tercerosp i (segundosp i R)) R))
R)))
Para observar el comportamiento de cada una de estas funciones, hagamos

1
2
3

; T1: A-->A una relacion transitiva


(define T1 (#(0 0) #(0 1) #(1 0) #(1 1)
#(2 2) #(2 4) #(3 3) #(4 2) #(4 4)))
> T1
(#(0 0) #(0 1) #(1 0) #(1 1) #(2 2) #(2 4) #(3 3)
#(4 2) #(4 4))
> (segundosp #(2 4) T1)
(#(4 2) #(4 4))
> (tercerosp #(2 4) (segundosp #(2 4) T1))
(#(2 2) #(2 4))
> (transitiva? T1 A A)
#t
La anterior definicion de transitividad en una relacion, hace uso de un
procedimiento predefinido andmap y una expresion anonima .
El procedimiento andmap recibe como entrada un predicado y una lista.
digamos que el procedimiento es P y la lista es L = (l1 l2 . . . lk ).
El resultado de aplicar andmap al predicado P sobre la lista L es:

(andmap P L) =

#t si x L : P (x) = #t,
#f si x L : P (x) = #f.

2.2. PROPIEDADES DE LAS RELACIONES

27

Figura 2.1: Transitividad de la relacion T1 mostrada en el ejemplo.

El procedimiento an
onimo se utiliza para realizar diferentes procedimientos con un mismo valor. La variable i del procedimiento anonimo , toma
sus valores de cada elemento de relacion.
1
2
3
4
5
6

(define (transitiva?2 relacion)


(andmap
(lambda (i) ; un procedimiento sin nombre
(subconjunto?
(terceros-pares i (segundos-pares i relacion)) relacion))
relacion))

2.2.4.

Antisimetra e irreflexibilidad

Una relaci
on R sobre un conjunto A es antisim
etrica si

(a, b) R (b, a) R a = b, a, b A.
Es decir, todas las relaciones antisimetricas tambien son simetricas, pero
no todas las relaciones simetricas son antisimetricas.
En una matriz, una relaci
on antisimetrica tiene unos en la diagonal principal; y unos en los elementos (i, j) o en los elementos (j, i), pero no en
ambos; con ndices i, j v
alidos en la matriz.

CAPITULO 2. RELACIONES Y FUNCIONES

28
Por ejemplo,

0
1
2
3

0
1
1
1
0

1
0
1
0
1

2
0
1
1
0

3
0
0
1
1

N
otese, por ejemplo, que el par (2, 0) R, y que el par (0, 2) 6 R.
Por otro lado, una relacion R sobre A es irreflexiva si
a A : (a, a) 6 R.
En una matriz es facil distinguir esta propiedad, pues en la diagonal
principal hay solamente 0s, por ejemplo,

0
1
2
3

0
0
1
1
0

1
0
0
0
1

2
0
1
0
0

3
0
0
1
0

Dado que la definicion solamente menciona los elementos de la forma


(a, a) que se muestran en la diagonal principal, no es necesario evaluar todos
los elementos de la relacion. A pesar de que en la definicion del procedimiento
efectivo se tenga que analizar cada uno de ellos, aunque solamente sea para
determinar que no es de la forma (a, a). Vease el ejercicio 1 de la pagina 36.

2.3.

Relaciones de equivalencia

Las relaciones de equivalencia son especialmente importantes en en diferentes


areas de las ciencias computacionales. Este tipo de relaciones son muy
u
tiles cuando se necesita abstraer el concepto de igualdad entre los elementos
de un conjunto.
Una relaci
on de equivalencia R sobre A, subdivide los elementos del
conjunto A en subconjuntos llamados clases de equivalencia, una vez que
el concepto de igualdad subyace en el modo de separar los elementos, cada
elemento pertenecer
a a una y solo una de las clases de equivalencia.
Una relaci
on R : A A es una relaci
on de equivalencia si:

2.4. FUNCIONES

29

i) R es reflexiva,
ii) R es simetrica,
iii) R es transitiva.
1
2
3
4
5

(define (equivalencia? R A B)
(and (rel? R A B)
(reflexiva? R A B)
(simetrica? R A B)
(transitiva? R A B)))
La primera de las condiciones ((Rel? R A B)), establece que lo que se
va a evaluar debe ser una relaci
on con dominio en A y rango en B, es decir,
un subconjunto del producto cartesiando A B.

1
2
3
4
5
6

; EQ1: A--> A una


(define EQ1 (#(0
#(1
#(2
#(3
#(4

relacion de equivalencia
0) #(0 1)
0) #(1 1)
2) #(2 3)
2) #(3 3)
4)))

> (equivalencia? EQ1 A A)


#t
> (reflexiva? EQ1 A A)
#t
> (simetrica? EQ1 A A)
#t
> (transitiva? EQ1 A A)
#t

2.4.

Funciones

Las funciones son un tipo especial de relaciones. Esto significa que tambien se definen sobre un conjunto dominio y se relacionan con elementos
de un conjunto rango. Como son relaciones, tambien son subconjuntos del
producto cartesiano del conjunto dominio y el conjunto rango.
Una funci
on f de A a B, se escribe de igual modo que las relaciones
f : A B, y es una relaci
on de tal modo que para todos los elementos del

CAPITULO 2. RELACIONES Y FUNCIONES

30

dominio Dom(f ), |f (a)| = 1, esto es, el conjunto imagen2 del elemento a


bajo la funci
on f consiste de u
nicamente un elemento de B.
1
2
3
4
5
6
7

; decide si una relacion f es una funcion


; con dominio en A y rango en B
(define (fun? F A B)
(define (imagenes-unitarias? R)
(cond ((null? R) #t)
((list? (evaluaR R (car# (car R)))) #f)
(#t (imagenes-unitarias? (cdr R)))))

8
9
10

(and (rel? F A B)
(imagenes-unitarias? F)))
Definamos en primer lugar una funcion.

(define F1 (#(0 2) #(1 3) #(2 4) #(3 0) #(4 1)))


La definici
on recien creada establece que un conjunto de pares ordenados
es una funci
on si en primer lugar es una relacion y el conjunto de las imagenes
de la evaluaci
on para cada elemento del dominio, es de cardinalidad unitaria.
> F1
(#(0 2) #(1 3) #(2 4) #(3 0) #(4 1))
> (fun? F1 A A)
#t
Un aspecto destacado en la definicion anterior es la definicion de un
procedimiento dentro de la definicion de otro procedimiento. En particular la definici
on del procedimiento imagenes-unitarias? ocurre dentro del
ambito del procedimiento fun?.

Este estilo de definiciones es un tipo de encapsulamiento de procedimientos que son visibles u


nicamente dentro del ambito del procedimiento mas
externo, en este caso imagenes-unitarias? permanece invisible fuera del
ambito de fun?, y tratar de acceder a este procedimeinto ocasionara un

error.
> (imagenes-unitarias? R1)
. . reference to undefined identifier: imagenes-unitarias?
2

Recordemos que la evaluaci


on de una relaci
on es precisamente un conjunto, en las
funciones sucede siempre que la cardinalidad de este conjunto es exactamente 1. Formalmente deberamos escribir f (a) = {b} para referirnos a (a, b) f , sin embargo es aceptable
escribir f (a) = b, porque esto no representa ninguna confusi
on.

2.4. FUNCIONES

31

De vuelta con las funciones, la condicion para los elementos del dominio
en la cantidad de elementos relacionados, no impide que diferentes elementos
del dominio se relacionen con el mismo elemento del rango.
En una funci
on f : A B, el Dom(f ) = A y el Ran(f ) B. Lo siguiente
es una breve lista de acuerdos:
1. Si Dom(f ) = A, entonces decimos que f es una funcion de A en B.
2. Si Dom(f ) = A y Ran(f ) = B, entonces f es una funcion de A sobre
B.
3. La imagen de a bajo la funcion f se denota por f (a).

2.4.1.

Funciones inyectivas

Si f : A B es una funci
on, f 1 : B A no necesariamente existe, en
caso de que s exista, f se llama funci
on inyectiva o tambien funci
on 1-1
o de una manera mas abreviada podemos decir que una funcion f es 1-1.
Esto puede ser expresado en Scheme como sigue.
1
2

(define (1-1? F A B)
(and (fun? F A B) (fun? (rel-1 F A B) B A)))
En otras palabras, f es una funcion 1-1 de A en B, si f es una funcion de
A en B, y si para cualesquiera dos elementos distintos a1 y a2 en el dominio
de f se cumple que f (a1 ) 6= f (a2 ). En este caso f 1 es una funcion del rango
de f (un subconjunto de B) sobre el dominio de f (un subconjunto de A).

2.4.2.

Funciones sobreyectivas

Una funci
on es sobreyectiva o simplemente sobre, si si rango es igual a
su docominio, esto significa que todos los elementos del codominio han sido
relacionados por elementos del dominio.
1
2
3

(define (sobre? F A B)
(and (fun? F A B)
(conjuntos-iguales? (Cod F A B) (Ran F A B))))
Un comentario que resaltar de esta definicion es haber precindido de una
construcci
on if, esto es posible porque el procedimiento and ya eval
ua #t
o #f que es el comportamiento deseado.

32

CAPITULO 2. RELACIONES Y FUNCIONES

> (fun? (#(1 1) #(2 2) #(3 3) #(4 1)) (1 2 3 4) (1 2 3))


#t
> (sobre? (#(1 1) #(2 2) #(3 3) #(4 1)) (1 2 3 4) (1 2 3))
#t
> (1-1? (#(1 1) #(2 2) #(3 3) #(4 1)) (1 2 3 4) (1 2 3))
#f
La funci
on del ejemplo no es 1-1 porque (1) = (4) = 1. Recordemos
que se utiliza para establecer funciones anonimas.
Los conjuntos A y B tienen la misma cardinalidad si existe una funcion
1-1 de A sobre B.

2.4.3.

Funciones suprayectivas

Cuando una funcion es inyectiva y tambien es sobreyectiva, entonces


decimos que la funci
on es suprayectiva, tambien es valido decir que la
funci
on es supra.
1
2
3
4

(define (supra? F A B)
(and (fun? F A B)
(1-1? F A B)
(sobre? F A B)))
> (supra? (#(1 1) #(2 2) #(3 3)) (1 2 3) (1 2 3))
#t

2.5.

Composici
on de funciones

Si f : A B y g : B C son dos funciones que tienen en com


un que
el codominio de la primera es el dominio de la segunda, se puede crear una
tercera funci
on llamada la composici
on de f con g del siguiente modo.
f g :AC
Esto es, la nueva funcion f g (se lee composicion de f con g) tiene
como dominio el Dom(f ) = A y como codominio Cod(g) = C.
Las im
agenes de los elementos de f g se obtienen al hacer dos evaluaciones, primero invocando f y despues invocando g.

DE FUNCIONES
2.5. COMPOSICION

33

a A : [f g](a) = g(f (a));


El uso de los corchetes es simplemente para aclarar que f g es una sola
funcion y no significa f [g(x)], pero con la practica, su uso puede omitirse.
Hay autores [1] que prefieren denotar por g f a la composicion de f con
g, obligando la lectura de derecha a izquierda, pero haciendo coincidir esta
notaci
on con el orden de aplicaci
on de las funciones, as con esta notacion, la
composici
on est
a definida como a A : [g f ](a) = g(f (a)). En este texto
seguiremos la forma convencional de denotar la composicion de funciones,
es decir, [f g](a) = g(f (a)).
En Scheme la composici
on de funciones es natural, la funcion de un
procedimiento significa la evaluaci
on de procedimeintos en Scheme. Los
procedimientos pueden tener par
ametros formales que adquieren alg
un valor
dependiendo de la invocaci
on. Los parametros formales son los nombres de
los argumentos del procedimiento.
La composici
on de funciones se logra cuando un procedimiento con parametros formales es invocado con la invocacion de otro procedimiento como al
menos uno de sus par
ametros.
En Scheme se logra la composicion de funciones como en el siguiente
ejemplo:
1

((x) (g (f x)))
El ejemplo muestra una funcion anonima () cuya evaluacion es la funcion g con el par
ametro que resulta de la evaluacion del procedimiento f
aplicado al valor x.
Siguiendo la secuencia de nuestras definiciones, nuestra composicion tendra por nombre evaluaFoG, que recuerda claramente la composicion de una
funcion f con otra funci
on g. Este nuevo procedimiento tiene como formales
dos relaciones (recordemos que las funciones tambien son relaciones) y el
valor que debe ser evaluado, este valor tambien puede ser una lista.

1
2

(define (evaluaFoG f g valor)


(evalua-R g (evaluaR f valor)))
Tomemos como ejemplo las funciones
F = {(0, 0), (1, 4), (2, 8), (3, 2), (4, 6), (5, 1), (6, 5), (7, 9), (8, 3), (9, 7)}
y
G = {(0, 2), (1, 3), (2, 4), (3, 5), (4, 6), (5, 7), (6, 8), (7, 9), (8, 0), (9, 1)}

34

CAPITULO 2. RELACIONES Y FUNCIONES

Tomemos el caso de [F G](1). La evaluacion de la composicion de F


con G se logra al evaluar en primer lugar la funcion F con el argumento
1, y posteriormente evaluar la funcion G con el resultado de la primera
evaluaci
on.
[F G](1) = g(f (1)) = g(4) = {6}.
> F
(#(0 0) #(1 4) #(2 8) #(3 2) #(4 6) #(5 1) #(6 5) #(7 9)
#(8 3) #(9 7))
> G
(#(0 2) #(1 3) #(2 4) #(3 5) #(4 6) #(5 7) #(6 8) #(7 9)
#(8 0) #(9 1))
> (evaluaFoG F G 1)
6
Como segundo ejemplo, evaluemos f g con el conjunto {0, 1, 2}.
[F G]({0, 1, 2})=g(f (0)) g(f (1)) g(f (2))
=g(0) g(4) g(8)
={2} {6} {0}
={2, 6, 0}.
> (evaluaFoG F G (0 1 2))
(2 6 0)
En el tercer ejemplo, evaluaremos la funcion F G en todo el dominio
de F . Obtenemos {2, 6, 0, 4, 8, 3, 7, 1, 5, 9}.
> (evaluaFoG F G (Dom F D D))
(2 6 0 4 8 3 7 1 5 9)
Finalmente, evaluemos la funcion G F en todo el dominio de G.
> (evaluaFoG G F (Dom G D D))
(8 2 6 1 5 9 3 7 0 4)
> (conjuntos-iguales?
(evaluaFoG F G (Dom F D D))
(evaluaFoG G F (Dom G D D)))
#t

2.6. PERMUTACIONES

2.6.

35

Permutaciones

Una funci
on 1-1 de un conjunto A sobre s mismo se llama permutaci
on.
Las permutaciones son objetos de amplio estudio y uso en las ciencias computacionales, frecuentemente se les llama tambien reordenamientos.
1
2

(define (permutacion? F A B)
(and (conjuntos-iguales? A B) (1-1? F A B)))
> F2
(#(0 1) #(1 0) #(2 4) #(3 3) #(4 2))
> (permutacion? F2 A A)
#t
Observemos que una funci
on 1-1 sobre su propio dominio, asocia cada elemento de su dominio con alg
un elemento del mismo conjunto, posiblemente
el mismo.
Si f es una permutaci
on, entonces f 1 tambien lo es.
> (rel-1 F2 A A)
(#(1 0) #(0 1) #(4 2) #(3 3) #(2 4))
> (permutacion? (rel-1 F2 A A) A A)
#t
El n
umero de permutaciones de un conjunto con n elementos se puede
obtener mediante el principio de multiplicacion. El primer elemento de la
permutaci
on puede ser cualquiera de los n elementos del conjunto; el segundo
elemento puede ser cualquiera de los n 1 elementos restantes, el tercer
elemento se obtiene de cualquiera de los n 2 restantes, este procedimiento
contin
ua hasta que no hay mas elementos para reacomodar. Entonces, de
acuerdo con este razonamiento, el n
umero de permutaciones o reacomodos
es:
n (n 1) (n 2) 2 1.
Esta multiplicaci
on es el n
umero factorial de n 1, cuya definicion es:

1
si n = 1;
n! =
n (n 1)! si n > 1.

CAPITULO 2. RELACIONES Y FUNCIONES

36
1
2
3

(define (! n)
(cond ((= n 1) 1)
(#t (* n (! (- n 1))))))
Este procedimiento es recursivo que genera tambien un proceso recursivo,
una manera m
as eficiente que reduce la complejidad espacial es definir un
procedimiento recursivo que genera un proceso iterativo, en [2] se puede
estudiar a fondo este modo de pensamiento. Aqui se ha escrito esta definicion
por ser la que directamente se puede traducir a Scheme.

2.7.

Funciones vs. procedimientos

En ciencias computacionales, se puede pensar en las funciones como el


resultado que se obtiene de realizar alg
un procedimiento, as habra que hacer diferencia entre procedimientos y funciones. Se pueden tener diferentes
procedimientos que realicen la misma funcion, por ejemplo las dos versiones
de verificaci
on de la transitividad de una relacion ya vista en este texto
(p
aginas 25 y 27), as decimos que un procedimiento tiene cierta funcion.

2.8.

Ejercicios

1. Modifique la definicion evalua-R de la pagina 21 para que sirva en


el caso de evaluar subconjuntos del Dom(R), para alguna relacion R
sobre un conjunto A.
2. Defina procedimientos para verificar la antisimetra y la irreflexibilidad
de las relaciones.
3. Determine si las siguientes relaciones son de equivalencia.
a) Sea R una relacion sobre el conjunto {a, b, c, d}:

a
b
c
d

a
0
1
1
0

b
1
1
0
1

c
0
1
0
0

d
0
0
1
0

2.8. EJERCICIOS

37

b) Sea R una relaci


on sobre el conjunto {a, b, c, d}:

a
b
c
d

a
1
1
0
0

b
1
1
0
0

c
0
0
1
1

d
0
0
1
1

c) Si A =el conjunto de palabras reservadas de un lenguaje de programaci


on. aRb si y s
olo si a y b tienen el mismo significado.
4. Escriba un procedimiento que enliste todas las n! permutaciones de un
conjunto de n elementos.

38

CAPITULO 2. RELACIONES Y FUNCIONES

Captulo 3

Estructuras algebraicas
fundamentales
3.1.
3.1.1.

Grupoides y semigrupos
Grupoides

Sea G = (A; : A A A). Un conjunto y una funcion de A A


a A, forma un sistema multiplicativo parcial binario simplemente
valuado (o brevemente, un sistema binario parcial).
En otras palabras, A es un sistema binario parcial si hay una operaci
on
definida (por ejemplo la multiplicacion) en A, que combina algunos pares
ordenados de A para dar como resultado un elemento de A. Uno puede
escribir en lugar de (a1 , a2 ) simplemente
a1 a2 = a3 ; a1 , a2 , a3 A
Si la operaci
on est
a definida para todos los pares de A A entonces la
funcion es total, y A, con esa operacion, es un sistema binario (completo) o
grupoide.
La siguiente definici
on establece que para que una funcion sea una funci
on binaria total sobre un dominio, el conjunto del producto cartesiano del
dominio con el mismo, debe ser igual al dominio de la funcion.
1
2

(define (fBinariaTotal? F DomF)


(define DxD (cart DomF DomF))
39

CAPITULO 3. ESTRUCTURAS ALGEBRAICAS

40
3
4
5

(and (fun? F DxD DomF) ; es funcion AxA-->A


(conjuntos-iguales? DxD (Dom F DxD DomF)))) ;es total
De modo que para que un par de elementos formen un grupoide, se
requiere que el primer elemento sea un conjunto, y el segundo elemento sea
una funci
on binaria total sobre el conjunto propuesto.

1
2
3
4
5

(define (grupoide? G)
(and (list? G) ; si es una lista
(= 2 (cardinalidad G)) ; de 2 elementos
(conjunto? (car G)) ;el primer elemento sea un conjunto
(fBinariaTotal? (cadr G) (car G)))) ; y una F.B.T.
Un grupoide finito se puede describir convenientemente por una tabla
de multiplicar similar a la de la aritmetica elemental.
Como ejemplo, supongamos que T1 = {0, 1, 2, 3},

(define T1 (0 1 2 3))
y es de acuerdo a la siguiente tabla:
G1
0
1
2
3

1
2
3
4

(define f1 (#(#(0
#(#(1
#(#(2
#(#(3

0)
0)
0)
0)

0)
0)
0)
0)

0
0
0
0
0

1
0
1
2
3

2
0
2
0
2

#(#(0
#(#(1
#(#(2
#(#(3

1)
1)
1)
1)

0)
1)
2)
3)

3
0
3
2
1
#(#(0
#(#(1
#(#(2
#(#(3

2)
2)
2)
2)

0)
2)
0)
2)

#(#(0
#(#(1
#(#(2
#(#(3

3)
3)
3)
3)

0)
3)
2)
1)))

5
6
7

; grupoide prueba
(define G1 (list T1 f1))
> (fBinariaTotal? f1 T1)
#t
Como f1 : T1 T1 T1 es una funcion sobre todo T , entonces el par
formado por G1 = (T1 ; f1 ) es un grupoide.

3.1. GRUPOIDES Y SEMIGRUPOS

41

> (grupoide? G1)


#t
La funci
on puede ser representada de diferentes formas, una de ellas
en forma de tabla de multiplicar, como ya se ha hecho; otras formas son
como una lista de asociaciones, ya sea horizontal o vertical, por ejemplo:
(0, 0)0
(0, 1)0
(0, 2)0
(0, 3)0
(1, 0)0
(1, 1)1
(1, 2)2
(1, 3)3
=
(2, 0)0
(2, 1)2
(2, 2)0
(2, 3)2
(3, 0)0
(3, 1)3
(3, 2)2
(3, 3)1

3.1.2.

Semigrupos

La operaci
on en un grupoide puede estar sujeta a ciertos axiomas. En
particular, la asociatividad es muy usada:
Para todo a, b, c A
(ab)c = a(bc).
El siguiente procedimiento verifica la asociatividad para cada elemento
del dominio de la funci
on. Este procedimiento realiza una triple verificacion,
esto es, para cada valor de a, para cada valor de b y para cada valor de c,
los tres variando su valor a lo largo de todos los elementos del dominio de la
funcion. Este procedimiento tiene complejidad O(n3 ), con n la cardinalidad
del dominio de la funci
on.

CAPITULO 3. ESTRUCTURAS ALGEBRAICAS

42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

(define (asociativo?
(define T (car G))
(define F (cadr G))
(andmap
(lambda (x)
(andmap
(lambda (y)
(andmap
(lambda (z)
(define a
(define b
(equal? a
T))
T))
T))

G)

(evaluaBT F (evaluaBT F x y) z)) ;(xy)z


(evaluaBT F x (evaluaBT F y z))) ;x(yz)
b))

Un grupoide que cumple con el axioma de asociatividad se llama grupoide


asociativo, o semigrupo.
1
2
3

(define (semigrupo? G)
(and (grupoide? G)
(asociativo? G)))
Los enteros positivos forman un semigrupo bajo la suma y tambien bajo
la multiplicaci
on. Veamos los siguientes ejemplos.
G2
a
b
c

a
a
b
c
(a)

1
2
3
4
5

b
b
b
b

c
c
c
c

G3
0
1
2

0
0
1
2

1
1
2
0

2
2
0
1

(b)

(define T2 (a b c))
(define f2 (#(#(a a) a) #(#(a b) b) #(#(a c) c)
#(#(b a) b) #(#(b b) b) #(#(b c) c)
#(#(c a) c) #(#(b c) b) #(#(c c) c)))
(define G2 (list T2 f2) ; el ejemplo (a)
> (semigrupo? G2)
#t

3.1. GRUPOIDES Y SEMIGRUPOS


1

43

(define T3 (0 1 2))

2
3
4
5

(define f3 (#(#(0 0) 0) #(#(0 1) 1) #(#(0 2) 2)


#(#(1 0) 1) #(#(1 1) 2) #(#(1 2) 0)
#(#(2 0) 2) #(#(2 1) 0) #(#(2 2) 1)))

6
7

(define G3 (list T3 f3)) ; el ejemplo (b)


> (semigrupo? G3)
#t
Un semigrupo que es de particular importancia en este curso, es el que
ahora vamos a mostrar.
Sea = {0 , 1 . . . , m1 } un conjunto finito de smbolos llamado tambien el conjunto de letras; de acuerdo con esto, es el alfabeto.
Una palabra (tambien llamada cadena o cinta) sobre es una secuencia
finita de letras de escritas una despues de la otra sin smbolos intermedios.
(Por ejemplos, 1 2 , 2 1 , 0 3 m1 3 3 son palabras sobre . Note que
1 2 y 2 1 son palabras diferentes).
Tambien consideraremos la palabra vaca, es decir la palabra que no
tiene alguna letra; y la vamos a denotar por el smbolo . La longitud de
una palabra es el n
umero de letras que tiene. La longitud de la palabra vaca
es 0.
denota el conjunto de todas las palabras sobre (incluyendo la palabra vaca) con la operaci
on de concatenacion de palabras que combina los
smbolos de las dos palabras, tomando los smbolos de la primera palabra y
agregando los smbolos de la segunda palabras al final de la primera palabra.
Por ejemplo,
1 3 3 2 0 2 1 = 1 3 3 2 0 2 1
En el caso de se tiene por definicion, w = w = w para cualquier
palabra en .
As que, es un grupoide; y a
un mas es un semigrupo; porque la operacion anterior es evidentemente asociativa. Este semigrupo se llama semigrupo libre generado por , y al conjunto se le llama el conjunto generador
de .
Otro ejemplo importante de un semigrupo se da en las relaciones sobre
un conjunto A.

CAPITULO 3. ESTRUCTURAS ALGEBRAICAS

44

Sean R y S dos relaciones sobre A. La relacion T definida como sigue:


aT b c : aRc cSb
se llama la composici
on o el producto de R y S (en ese orden): T = RS.
Notemos que:
RS = Ran(R) Dom(S) = .
La composici
on de las relaciones es asociativa.
a(RS)T b
x(aRSx, xT b)
x y(aRy, ySx, xT b)
y(aRy, yST b) aR(ST )b.
Entonces, el conjunto de relaciones sobre A con la composicion forma un
semigrupo.
Tambien se puede multiplicar una relacion R : A B por una relacion
S : B C usando la misma definicion:
(a, c) RS b tal que (a, b) R y (b, c) S.
Aqu a A, b B, c C y RS : A C.
Notemos que:
Dom(RS) Dom(R); Ran(RS) Ran(S); (RS)1 = S 1 R1 .

3.2.

Idempotencia

Un elemento e en un grupoide que cumpla ee = e se llama elemento


idempotente.
1
2
3
4

; verifica que un elemento e sea idempotente en la funcion F


; de un semigrupo
(define (idempotente? e F)
(equal? (evaluaBT F e e) e))

3.3. MONOIDES

45

Una vez que se tiene la manera de distinguir un elemento idempotente, es


facil hacer un procedimiento que encuentre todos los elementos idempotentes
de un semigrupo dado por sus componentes, el conjunto y la funcion binaria
total sobre ese conjunto.
1
2
3
4
5
6
7

(define (idempotentes G)
; busca idempotentes en un semigrupo
(define (busca-idempotentes T F)
(cond ((empty? T) ())
((idempotente? (car T) F)
(cons (car T) (busca-idempotentes (cdr T) F)))
(#t (busca-idempotentes (cdr T) F))))

8
9
10

(if (semigrupo? G)
(busca-idempotentes (car G) (cadr G)) "no es semigrupo"))
Revisemos entonces los semigrupos que nos han servido de ejemplos. En
primer lugar revisemos el semigrupo G1 definido en la pagina 40.
G1
0
1
2
3

0
0
0
0
0

1
0
1
2
3

2
0
2
0
2

3
0
3
2
1

> (semigrupo? G1)


#t
> (idempotentes G1)
(0 1)

3.3.
3.3.1.

Monoides
Conmutatividad

Un axioma importante, es la conmutatividad: Para cualesquiera a, b en


un grupoide:
ab = ba.

CAPITULO 3. ESTRUCTURAS ALGEBRAICAS

46
1
2
3
4
5
6
7
8
9
10
11
12

; determina si un grupoide es conmutativo


(define (conmutativo? G)
(define T (car G))
(define F (cadr G))
(andmap
(lambda (x)
(andmap
(lambda (y)
(equal? (evaluaBT F x y)
(evaluaBT F y x)))
T))
T))
La conmutatividad de un grupoide se puede checar facilmente inspeccionando su tabla de multiplicacion. De hecho, el grupoide es conmutativo si
la tabla es simetrica con respecto a su diagonal principal.
Hay muchos ejemplos conocidos de grupoides y semigrupos conmutativos; los enteros forman un semigrupo conmutativo bajo la suma y tambien
bajo la multiplicaci
on.
Sin embargo, la composicion de relaciones en general no es conmutativa.
Por ejemplo, sea Ra = {(1, 2), (1, 3), (2, 2), (3, 1)} una relacion de {1, 2, 3} en
s mismo, y Rb = {(1, 3), (3, 2), (3, 3)} otra relacion con el mismo dominio y
codominio.
Ra Rb = {(1, 2), (1, 3), (3, 3)}
Pero
Rb Ra = {(1, 1), (3, 2), (3, 1)}
> (fog Ra Rb)
(#(1 2) #(1 3) #(3 3))
> (fog Rb Ra)
(#(1 1) #(3 2) #(3 1))
De manera que, los semigrupos de relaciones, los semigrupos de funciones
y los semigrupos de permutaciones en general no son conmutativos.
Algunos elementos de un grupoide pueden tener propiedades especiales
con respecto a la operacion, por ejemplo la idempotencia mencionada anteriormente.

3.3. MONOIDES

3.3.2.

47

Elemento identidad

Un elemento ei de un grupoide se llama elemento identidad izquierdo si


para cualquier elemento a en ese grupoide:
ei a = a.
1
2
3
4
5
6

;determina identidad izquierda de un elemento en un grupoide


(define (identidadIzq? e G)
(andmap
(lambda (x)
(equal? (evaluaBT (cadr G) e x) x))
(car G)))
Como ei e = e1 cualquier elemento identidad izquierdo es un idempotente
(pero no vice versa). De manera similar, uno define el elemento identidad
derecho ed .

1
2
3
4
5
6

;determina identidad derecha de un elemento en un grupoide


(define (identidadDer? e G)
(andmap
(lambda (x)
(equal? (evaluaBT (cadr G) x e) x))
(car G)))
Ahora ei ed = ed , pero ei ed = ei tambien, entonces ei = ed ; es decir, si
un grupoide tiene un elemento identidad izquierdo y un elemento identidad
derecho entonces deben ser el mismo. Este elemento - identidad izquierdo,
identidad dercho o el elemento identidad de ambos lados- se llama (si existe)
el elemento identidad del grupoide, y un grupoide solamente puede tener
un elemento identidad.

1
2
3
4

; encuentra el elemento identidad, si lo tiene


(define (identidad G)
(define C (car G))
(define F (cadr G))

5
6
7
8
9

(cond ((empty? C) #f)


((and (identidadIzq (car C) G)
(identidadDer (car C) G)) (car C))
(#t (identidad (list (cdr C) F)))))

CAPITULO 3. ESTRUCTURAS ALGEBRAICAS

48

El semigrupo de los enteros positivos bajo la suma no tiene elemento


identidad, pero el semigrupo de todos los enteros o todos los enteros no
negativos bajo la suma tiene identidades: el n
umero cero en ambos casos.
El semigrupo libre sobre un alfabeto tiene un elemento identidad:
la palabra vaca .
La relaci
on identidad IA sirve como una identidad en los semigrupos de
todas las relaciones sobre A, todas las funciones de A, y todas las permitaciones de A.

3.3.3.

Monoide

Un semigrupo con identidad se llama monoide.


1
2
3
4

; determina si un semigrupo es un monoide


(define (monoide? G)
(and (semigrupo? G)
(not (equal? (identidad G) #f))))
Dado un semigrupo G sin identidad, le agregamos un elemento e (suponiendo que e es un smbolo que no aparece entre los elementos de G) y necesitamos que:
ee = e y eg = ge = g para cualquier elemento g G
El conjunto G {e} es ahora un monoide con identidad e. Entonces
cualquier semigrupo sin identidad se puede convertir en un monoide agregando un elemento identidad.

3.4.
3.4.1.

Grupos
Elemento inverso

Sea G = (A, , e) un grupoide con conjunto base A, con la funcion


binaria total sobre A, y con elemento identidad e. Un elemento ai A se
llama elemento inverso por la izquierda de un elemento a si ai a = e.
Un elemento inverso por la derecha ad se define de manera similar.
Un elemento de un grupoide puede tener mas de un elemento izquierdo o
derecho.

3.4. GRUPOS

49

Si ai y ad existen en un monoide, entonces deben coincidir:


ai = ai e = ai (aad ) = (ai a)ad = ead = ad
Este inverso por ambos lados se llama inverso del elemento a y se denota
por a1 : a1 a = aa1 = e.
Claro, no cualquier elemento de un monoide debe tener un inverso. Por
ejemplo, en el semigrupo libre de palabras, solamente tiene inverso - el mismo . Es claro que ninguna otra palabra se puede concatenar para generar
la palabra vaca.
Para una relaci
on R sobre A, el producto RR1 , en general, no es igual
a la relaci
on identidad IA . Pero para cualquier permutacion P se tiene
P P 1 = P 1 P = IA . Porque en el semigrupo de todas las permitaciones de
un conjunto A, cualquier elemento tiene un inverso.
Un monoide en donde cualquier elemento tiene inverso se llama grupo.
Los enteros forman un grupo bajo la suma: el 0 es la identidad y el inverso
de a es a.
Los n
umeros racionales positivos forman un grupo bajo la multiplicacion:
1 es el elemento identidad y a1 = a1 .
El siguiente es un grupo de tres elementos:
0
0 0
1 1
2 2

1
1
2
0

2
2
0
1

0 es la identidad, 11 = 2, 21 = 1. En un grupo
(a1 )1 = a, e1 = e, (ab)1 = b1 a1
Un grupoide (y tambien un semigrupo) solamente puede tener un elemento identidad, pero muchos elementos idempotentes. Un grupo tiene un
u
nico elemento idempotente -su elemento identidad, de hecho
aa = a a1 aa = a1 a ea = e a = e
Cualquier grupo es un monoide. Las traslaciones derechas son, en este
caso, permitaciones:

50

CAPITULO 3. ESTRUCTURAS ALGEBRAICAS

ag = bg ag = bg agg 1 = bgg 1 a = b
Entonces, cualquier grupo G se puede representar por completo por un
grupo de permitaciones del conjunto de elementos de G.
Notemos que, en un semigrupo ag = bg a = b, y por el contrario,
g1 = gb a = b. Que son las leyes de cancelacion por la izquierda y por la
derecha.

Bibliografa
[1] Grossman, Peter. (2002). Discrete mathematics for computing. 2ed. Palgrave Macmillan Ed. ISBN 0333981111.
[2] Abbelson
[3] Ginzburg, Abraham. (1968). Algebraic theory of automata. Academic
Press. Third Printing (1972). USA.

51

S-ar putea să vă placă și