Está en la página 1de 72

5.

- CONJUNTOS
5.1.- PAR ORDENADO (PO)
5.1.1.- DEFINICIN DE PO
Se llama Par Ordenado o dupla cuyo smbolo es (x y) al conjunto cuyos elementos son a su vez otros dos
conjuntos :
1.- el conjunto {x y} que es un par simple
2.- el conjunto {x} de un nico elemento
Def:

(x y) := { {x y} {x} }
(x y) : Par Ordenado (PO)
x : Primer elemento del PO (Primera componente del PO)
y : Segundo elemento del PO (Segunda componente del PO)
Obs 1: PO es un par de conjuntos (es un Conjunto de Conjuntos) donde

{x y} (x y)

Obs 2: La igualdad de PO es la de Conjuntos


Obs 3: Primer y segundo elemento es una forma de llamar a las componentes del PO, porque los nmeros
todava no estn definidos. Justamente el concepto de nmero se definen a partir del PO.

5.1.2.- PORQU LA DEFINICIN DE PO


La importancia del PO se desprende de la simplicidad (facilidad, claridad, comodidad) con que a partir de el se
puede estructurar una red de definiciones con los principales elementos de la matemtica clsica.
La fecunda utilizacin del PO se puede observar en la lista siguiente, que obvia todo comentario:
1.- Producto Cartesiano
2.- Relacin
3.- Relacin Unvoca
4.- Funcin
5.- Relacin de Equivalencia
6.- Relacin de Orden
7.- Nmero Natural
8.- Nmero Entero
9.- Nmero Fraccionario
10.- Estructura Mtrica
11.- Nmero Real
12.- Numero Complejo
13.- Estructura Algebraicas
14.- Leyes de Composicin
15.- Estructura Lineal (Vectorial)
16.- Coordenadas Cartesianas
17.- Grafos
18.- Etc
Para la definicin del PO pilar de la matemtica, hace falta solamente la nocin previa de conjunto.

162

Un par simple es un conjunto formado por 2 elementos, cuyo smbolo es


{x y} : Par
y cumple con la igualdad de conjuntos
{x y} = {y x}
donde se observa que a los elementos x e y del par no se les asigna ninguna caracterstica particular que les
otorgue un papel diferente dentro del Par. Es decir son simplemente y nada mas que elementos del Par.
Mientras en el PO a sus dos elementos x e y, se les asigna una caracterstica diferencial, la de ser primer o
segundo elemento (componente). La definicin de PO se introduce justamente para asignar a cada elemento de un par
simple propiedades especficas.
Por ejemplo el conjunto de manos de una persona constituyen un Par si no se da una diferencia entre ellas. Sin
embargo si se distinguen la mano izquierda de la derecha se est en presencia de un PO al haberle asignado a los
elementos del par una caracterstica diferencial.
Anlogamente se tiene otro ejemplo en el conjunto Matrimonio que esta formado por un par de personas, y se
distingue entre hombre y mujer se tiene un par ordenado.
El papel diferente de ambas componentes es la base para establecer el concepto de Relacin en general.
La forma de asignar una caracterstica diferente a los elementos x e y es por medio de diferenciar su presencia
en los conjuntos que lo definen:
1.- {x, y}
2.- {x}

donde se define el Par


donde se define la primera componente

5.1.3.- IGUALDAD DE PO
La igualdad de PO es simplemente un caso particular de la Igualdad de Conjuntos.
T.-

(x y) = (a b) { {x y} {x} } = { {a b} {a} }
La igualdad de conjuntos cumple con el teorema siguiente T1:

La igualdad de dos PO es condicin necesaria y suficiente de la igualdad de las componentes homlogas es decir
de las primeras componentes entre si y las segundas componentes entre si.
Esto justifica, como la definicin de PO distingue ambos elementos.

163

5.1.4.- TEOREMAS DE PO
T1.-

TCR T1.D.- [ ]

x = a
(x y) = (a b)
y = b
(x y) (a b) x a y b
Se pasa a la demostracin del Teorema directo .

Por Hiptesis
x=a y=b
Entonces
{x} = {a}
{x y} = {a b}
{{x y} {x}} = {{a b} {a}}
Por Def. PO queda
(x y) = (a b)

[ ] Partiendo de
(x y) = (a b)
Recordando Def. PO
{{x y} {x}} = {{a b} {a}}
Se presentan 2 opciones que se llamarn I y II
I.-

{x y} = {a b}
{x} = {a}
xa
y para satisfacer el sistema I tambin debe resultar
yb

II.-

{x y} = {a}
{x} = {a b}
xa y b
que satisface el sistema II.
De ambas opciones I , II se llega a
x a y b

T2.TCR T2.D1.-

(x y) = (y x) x y
(x y) (y x) x y

Caso particular de T1

D2.- [ ]

xy
{x} = {y}
{x y} = {y x}
{{x y} {x}} = {{y x} {y}}
Por la Def. PO
(x y) = (y x)

164

[ ]
(x y) = (y x)
{{x y} {x}} = {{y x} {y}}
Hay 2 Opciones I y II
I.-

{x y} = {y x}
{x} = {y}
xy
que satisface el sistema I

II.-

{x y} = {y}
{x} = {y x}
xy
que satisface el sistema II. El resultado de las opciones I y II es el mismo. Por lo tanto la Tesis es
xy

Obs: El TCR T2 representa la propiedad fundamental de los PO:


(x y) (y x)

xy

y muestra la diferencia esencial entre los PO y los pares simples que cumplen en todos los casos

{x y} = {y x}

T3.-

Def PO (x x) = {{x}}

D.-

(x x) := {{x x} {x}}
= {{x} {x}}
= {{x}}

5.1.5.- TERNAS Y NUPLAS


5.1.5.1.- TERNAS
La definicin de Par Ordenado se puede generalizar para el caso de tres componentes (ternas) o ms
componentes, en general para n componentes (nuplas):

Def:

(x y z) := { {x y z} {x y} {x} }
(x y z) : Terna
x : Primer elemento de la terna
y : Segundo elemento de la terna
z : Tercer elemento de la terna
Obs : Si se hubiera definido la terna por la proposicin

(x y z) := ((x y) z)

( definicin no vlida )

se habra tomado un conjunto de conjuntos de diferentes niveles


(x y z) := {{(x y) z},{(x y)}} := {{{{x y}{x}} z },{{{x y}{x}}}}
lo cual es errneo.

165

5.1.5.2.- NUPLAS
Def:

(x1 x2 xn ) := { { x1 x2 xn } .. { x1 x2 } { x1} }
(x1 x2 xn ) : Nupla
xi : i-esimo componente de la nupla

5.1.5.3.- NUPLA DE 1 ELEMENTO


A fin de generalizar el concepto de nupla para todo valor de n 1 se define tambin para el caso de n = 1

Def:

(x) := {{x}}
Obs : Ntese que del T3 resulta
(x x) := {{x}}
= (x)

166

5.2.- PRODUCTO CARTESIANO (PC)


5.2.1.- DEFINICIN DE PC
Dado 2 conjuntos A y B se llama Producto Cartesiano de A por B (en ese orden), cuyo smbolo es AxB, al
conjunto de todos los pares ordenados (x y) tales que su primera componente x pertenece a A y la segunda y
pertenece a B.

AxB := { (x y): xA yB }

Def:

AxB : Producto Cartesiano de A por B


A : Primer Conjunto del Producto Cartesiano o Conjunto de Partida
B : Segundo Conjunto del Producto Cartesiano o Conjunto de Llegada
Ejemplo 1:
A = { Azul
Rojo
B = { Ferrari
Honda
AxB = { (Azul
Ferrari)
(Rojo
Ferrari)
(Blanco
Ferrari)
(Verde
Ferrari)
(Negro
Ferrari)
(Metalizado Ferrari)

Blanco
Williams
(Azul
(Rojo
(Blanco
(Verde
(Negro
(Metalizado

Verde
Lotus }
Honda)
Honda)
Honda)
Honda)
Honda)
Honda)

Negro

Metalizado }

(Azul
Williams)
(Rojo
Williams)
(Blanco
Williams)
(Verde
Williams)
(Negro
Williams)
(Metalizado Williams)

(Azul
(Rojo
(Blanco
(Verde
(Negro
(Metalizado

Lotus )
Lotus )
Lotus )
Lotus )
Lotus )
Lotus ) }

Un Producto Cartesiano puede ser representado grficamente en un baco cartesiano. De all su nombre:

B
L
W
H
F

AxB
x
x
x
x
a

x
x
x
x
r

x
x
x
x
b

x x x
x x x
x (nh) x
x x x
v n m

5.2.2.- TEOREMAS DE PC
T1.TCR T1.D.- [ ]
[ ]
I.-

AxB = BxA A = B
AxB BxA A B
A=B
AxB = BxA

AB
Se presentan 2 opciones I y II
x: xA xB
(xy): (x y)AxB (x y)BxA
AxB BxA

167

II.-

T2.-

x: xA xB
(xy): (x y)AxB (x y)BxA
AxB BxA

AxB =

A= B=

5.2.3.- PC DE MAS DE DOS CONJUNTOS


Dado n conjuntos A1, A2 , , An se llama Producto Cartesiano A1x A2 x x An al conjunto de todas las
nuplas ordenadas (x1 x2 xn ) tales que la componente xi pertenece al conjunto

Def:

A1x A2 x x An := { (x1 x2 xn ) : xi Ai }
A1x A2 x x An : Producto Cartesiano A1 por A2 por por An
Ai : Conjunto i-simo del Producto Cartesiano

Es comn el Producto Cartesiano de un conjunto por si mismo dos o mas veces, en ese caso la notacin se
abrevia:

Def:

E2 := ExE
En := ExEx .. xE

{ n veces }

Ejemplos : R2 := RxR
Rn := RxRx ... xR

{ n veces }

168

5.3.- RELACIN

Se llama Relacin en AxB a todo Subconjunto no vaco del Producto Cartesiano AxB

Def:

R Relacin AxB := R AxB , R


R(AxB) := S(AxB) := { (x y) : (x y) R }
R : Relacin AxB := R AxB , R
S(AxB) : Grfica de R(AxB)
A: Conjunto de Partida o Primer Conjunto del Producto Cartesiano
B: Conjunto de Llegada o Segundo Conjunto del Producto Cartesiano
Se define adems algunos elementos destacados de la Relacin R en AxB

Def:

D(R) := { x: xA (x y)R }
I(R) := { y: yB (x y)R }
D(R) : Dominio de R(AxB)
I(R) : Imagen de R(AxB)}
Una representacin de R(AxB) sobre el Producto Cartesiano es:
B

AxB
Relacin

V
U
T
S

x
x
x
x
a

X
X
X
X
B

x
x
x
x
c

x
x
x
x
d

x
x
(et)
x
e

x
x
x
x
f

Otra representacin de una relacin R(AxB) es por Grficas como las que se muestran a continuacin:
Los Conjuntos Ay B y sus elementos se representan por Diagramas de Venn y los PO que componen la Relacin por
segmentos orientados (flechas).

A={abcdef}
B={stuv]
Grfica (R) = { (a t) (b t) (c t) (c u) (c v) (d u) (d v) }
Dominio (R) = { a b c d }
Imagen (R) = { t u v }

169

5.4.- RELACIN UNIVOCA (RU)


Def:

R Unvoca :=

( xy ) R

( xz ) R

y z

AxB
Relacin no unvoca

AxB
Relacin unvoca

x
x

t
s

x
x
a

x
x
b

x
x
c

x
x
d

(et) x
x x
e f

t
s

x
x
a

x
x
b

x
x
c

x
x
d

(et) x
x x
e f

En la representacin de una relacin univoca por segmentos orientados se caracteriza por la condicin que de
los elementos del dominio sale una flecha sola o ninguna.

R Unvoca
Obs: En una Relacin Unvoca de cada Elemento del Conjunto de Partida A sale una flecha o ninguna . {0,1}.
Con respecto al Conjunto de Llegada B no existen restricciones.

170

5.5.- FUNCIN
5.5.1.- DEFINICIN DE FUNCIN
Una funcin es una relacin que cumple 2 condiciones:
1.- Estar definida para todo elemento del Conjunto de Partida A. Es decir que el Dominio de la Relacin f es
el Conjunto de Partida: A = D
2.- Ser Unvoca

Def:

f : A B
x y

x A ( xy ) f

(xy) f

f Unvoca := (xz) f

:=

y z

D(f) := { x: xA (x y) f } = A
I(f) := { y: yB (x y) f }
f(AxB) := { (x y) : (x y) f }
f : funcin
A : Conjunto de Partida o Primer Conjunto del Producto Cartesiano Dominio de la funcin
B : Conjunto de Llegada o Segundo Conjunto del Producto Cartesiano Codominio de la funcin
f(AxB) :Grfica de la funcin
I(f) :Imagen de f(AxB)
Obs 1: Ntese que el smbolo [ AB ] representa al Producto Cartesiano AxB y el smbolo [ xy]
representa al PO (x y). Es decir que las dos flechas tienen significado diferente , y es por ello que la flecha que
seala al PO a veces se la indica con una colita [ x + y ] para diferenciarla de la flecha que seala el PC. Esto se
obvia si no hay confusin posible.
f : A B
x y

:=

f : AxB
( xy )

Una primera forma de representar una funcin es con un grfico Cartesiano donde puede observarse las 2
proposiciones que hacen a la definicin de funcin:
1.- El estar definida para todo elemento del Dominio A = D.
2.- Ser Relacin Unvoca.

AxB
funcin

t
s

x
x
a

x
x
b

x
x
c

x
x
d

(et) x
x x
e f

171

La representacin de una funcin por diagramas de Venn es:

A={abcdef}
B={stuv]
Grfica (f) = { (a t) (b t) (c u) (d v) (e u) (f t) }
Dominio (f) = { a b c d e f } = A
Imagen (f) = { t u v }
Obs 1: En una funcin de cada elemento del Conjunto de partida A sale una flecha y solo una {1}. Con respecto
al Conjunto de Llegada B no existen restricciones.
Obs 2: En la definicin de funcin existen 4 elementos, el primero de los cuales es su nombre, y los otros 3
elementos son 3 conjuntos el Dominio, el Codominio y la Grfica, de las cuales depende la funcin. Cambiando
cualquiera de estos 3 Conjuntos cambia la funcin. Se plantean un ejemplo:
Ejemplo: Sea el Conjunto de pares ordenados

G := {(x y) : y = x1/2 }

1.- Este Conjunto G carece de sentido si no se aclara que son x e y . Pueden ser elementos de cualquier
conjunto genrico ( que significara y = x1/2 ? ), o nmeros reales o complejos etc. Esto muestra que debe definirse el
PC AxB sobre el cual se quiere trabajar.
Suponiendo que AxB = RxR entonces G sera la Grfica siguiente:

2.- Si se toma A = R no existe funcin pues


2.1.- La relacin no es unvoca
2.2.- La relacin no est definida para todo elemento de R. Es decir D = A R
3.- Si se restringe a A = R+ {0} no existe funcin pues
3.1.- La relacin no es unvoca
4.- Si se restringe a A = R+ {0} y a B = R+ {0} si existe funcin, que se llamar arbitrariamente
RazCuad:
RazCuad: R+ {0} B = R+ {0}
x y = x1/2

172

5.- Pero tambin se podra haber elegido arbitrariamente a A = [ 0 2 ] y los siguientes subconjuntos de G:
x [0 1[
x [1 2]

y = + x1/2
y = x1/2

lo cual permite definir otra funcin que se llamar f2 diferente por supuesto de la anterior RazCuad:

f2: [ 0 2] R+ {0}
y = +x1/ 2

x
1/ 2

y = x

x [ 0 1[
x [ 1 2]

todo este anlisis muestra como una funcin depende no solamente de su Grfica, sino tambin de sus Conjuntos
de Partida y de Llegada.

5.5.2.- REDUCCIN DE UNA RELACIN GENRICA A FUNCIN


Una Relacin Genrica R siempre puede reducirse a una funcin , en forma totalmente arbitraria, por medio de
dos pasos que consisten en hacer cumplir las dos definiciones de la definicin de funcin:
Paso I: Reducir el Conjunto de Partida de la relacin D(f) para que se cumpla D(R) = D(f) o tambin
reducirlo a parte de D(R) [ D(f) D(R) ]. Es decir que para todo elemento del Dominio de la funcin D(f) exista por
lo menos un elemento en la Grfica G o sea: D(f) D(R).
Paso II.- Asignar a cada elemento de D(f) un solo par de la Grfica G (Unicidad).

5.5.2.- PORQUE FUNCIN


El objetivo de definir el concepto de funcin, es decir una relacin univoca para todo un dominio es porque
permite la implicacin

x A

x = y f(x) = f(y)

Por otro lado la importancia de la definicin de funcin resulta de su gran aplicacin. Algunas funciones
matemticas entre las ms usuales:

Tipo
Sucesiones
Matrices
Leyes de Composicin Interna
Leyes de Composicin Externa
Productos Hermticos
Polinomios

funcin
S:NB
M:N2B
T:ExEE
T:KxEE
T:ExEK
P:R2R2
n

a x
i

i =0

Funciones de 1 variable real


Funciones de varias variables reales
Funciones de variable compleja

173

P:RR
P:RnR
P:R2R2

5.5.4.- FUNCIN COMPUESTA


5.5.4.1.- DEFINICIN DE FUNCIN COMPUESTA
Si se plantea una composicin sucesiva de funciones tambin se tiene una funcin directa de A a D como se
vera a continuacin:

la relacin compuesta es funcin si se toma la precaucin de asegurar que

B C

Teorema
f : A B
x y
g :C D
yz
BC

gof : A D
x z = g( f ( x ))

gof = g(f) : funcin compuesta de g con f


D.f : A B :=

( yz ) g
( yz' ) g

yB (yz) g

( yz ) g
( yz' ) g

z = z

g : C D := yC (yz) g
como

( xy ) f
( xy' ) f

y = y

z = z

xA (xy) f

B C

se tiene

por lo tanto se puede se puede definir una relacin sobre AxD que para todo elemento de A tenga un par en la
relacin y adems sea unvoca:
( xz ) gof

gof : A D := xA (xz)gof
z = z
( xz' ) gof
Existe entonces una funcin llamada compuesta gof que se define como:

gof : A D
x z = g( f ( x ))

174

5.5.4.2.- TEOREMAS
T1.-

Def

gof = g(f)

ho( gof) = (hog)of

175

5.5.5.- CLASIFICACIN DE FUNCIONES SEGUN EL CODOMINIO


5.5.5.1.- DEFINICIN DE FUNCIN INYECTIVA
Def:

f Inyectiva :=

( xy ) f

( zy ) f

x z

Obs: A cada elemento del Codominio llega una flecha o ninguna {0,1}.

5.5.5.2.- DEFINICIN DE FUNCIN SURYECTIVA


Def:

f Suryectiva :=

yB (xy) f

Obs: A todo elemento del Codominio llega por lo menos una flecha. {1,n}.

5.5.5.3.- DEFINICIN DE FUNCIN BIYECTIVA


Def:

f Biyectiva :=

f Inyectiva

 f Suryectiva

Obs: A todo elemento del Codominio llega una flecha y solo una {1}.

176

5.5.6.- FUNCIN INVERSA


5.5.6.1.- DEFINICIN DE FUNCIN INVERSA
Def: funcin inversa de f

g:B A
yx

:=

f : A B

x y =: (xy) f

y B ( yx ) g

(yx) g
g Unvoca :=
(zx) g

y z

g: funcin inversa de f
La notacin habitual de la funcin inversa es

f- 1 := g

5.5.6.2.- TEOREMAS
T1.- g : g funcin inversa de f f Biyectiva
D.- []

la relacin g(BxA) se define como

g(BxA) := {(yx) : (xy) f }


por ser f biyectiva, es simultneamente inyectiva y suryectiva
f Inyectiva :=
f Suryectiva :=

( xy ) f

( zy ) f

x z

yB (xy) f

La relacin g es entonces:
1.- Unvoca porque f es inyectiva
2.- Est definida para todo el conjunto B por ser f suryectiva
por lo tanto es g funcin

[]

La condicin suficiente se demuestra a partir de la definicin de g.

177

1.- Como g es unvoca porque entonces f es inyectiva


2.- Como g cumple yB (xy) f entonces f suryectiva
por lo tanto es f es biyectiva

T2.-

g funcin inversa de f

g 1 = ( f 1) 1 = f

T3.-

g funcin inversa de f

g biyectiva

Obs: Usado en definicin de Natural


T4.T5.-

f biy

g biy
g: A A
xx

gof biy

funcin identidad

f = f 1

178

5.6.- RELACIONES BINARIAS: RELACIONES EN AxA


5.6.1.- RELACIONES REFLEXIVA, SIMTRICA TRANSITIVA Y DE EQUIVALENCIA
5.6.1.1.- RELACIN REFLEXIVA
Def:

R Reflexiva := xA

(x x)R
AxA

A
Rel. Reflexiva
e
d
c
b
a

x
x
x
x
x
a

x
x
x
x
x
b

x
x
x
x
x
c

x
x
x
x
x
d

x
x
x
x
x
e

Obs : La relacin es Reflexiva si contiene toda la diagonal Principal del Producto Cartesiano AxA.

5.6.1.2.- RELACIN SIMTRICA


Def:

R Simtrica :=

(x y)R

(y x)R

AxA
Rel. Simtrica

e
d
c
b
a

x
x
x
x
x
a

x
x
x
x
x
b

x
x
x
x
x
c

x
x
x
x
x
d

x
x
x
x
x
e

Obs: La relacin es Simtrica si los pares ordenados del Producto Cartesiano AxA son Simtricos respecto
de la Diagonal Principal.
Teorema

R Simtrica :=

(x y)R

(y x)R

D.- Por definicin de Relacin Simtrica


(x y)R (y x)R
(y x)R (x y)R

179

5.6.1.3.- RELACIN TRANSITIVA


( x , y ) R
Def:
R Transitiva :=
(x, z)R
( y, z ) R
AxA

A
Rel. Transitiva
e
d
c
B
A

x x x
(ad) (bd) x
x x x
(ab) x x
x x x
a b c

x
x
x
x
x
d

X
X
X
X
X
e

Obs: La relacin es Transitiva cuando: dado dos pares (x,y) y (y,z) de la relacin R, existe un tercer par
(x, z) que tambin pertenece a la relacin. Este ltimo es el par que est en la misma columna del primero y fila del
segundo. (jaque de torres)

5.6.1.4.- COMPATIBILIDAD E INDEPENDENCIA DE LAS RELACIONES REFLEXIVA, SIMTRICA Y


TRANSITIVA
Compatibilidad
AxA

A
Rel Reflexiva
Simtrica
Transitiva
e
d
c
b
a

x
x
x
x
x
a

x
x
x
x
x
b

x
x
x
x
x
c

Rel Equiv.

x
x
x
x
x
d

x
x
x
x
x
e

Independencia
A

AxA

AxA

Rel No Reflexiva
Simtrica
Transitiva

AxA

Rel. Reflexiva
No Simtrica
Transitiva

Rel. Reflexiva
Simtrica
No Transitiva

e
d

x
x

x
x

X
X

x
x

x
x

e
d

x
x

x
x

x
x

x
x

x
x

e
d

x
x

x
x

x
x

c
b
a

x
x
x
a

x
x
x
B

X
X
X
C

x
x
x
d

x
x
x
e

c
b
a

x
x
x
a

x
x
x
b

x
x
x
c

x
x
x
d

x
x
x
e

c
b
a

x
x
x
a

x
x
x
b

x
x
x
c

180

x
x

x
x

x x
x x
x x
d e
A
(b c) (c a) / (b

Las relaciones Reflexivas, Simtrica y Transitiva son compatibles e independientes como se demuestra en
los ejemplos expuestos.

Obs: En particular la relacin Reflexiva es independiente de las Simtrica y transitiva:


R Simtrica
/ R Reflexiva
R Transitiva

(RSimtrica) (R Transitiva) (R Reflexiva)

Sin embargo hay una aparente demostracin de que la condicin de relacin Simtrica y Transitiva implica la
de Reflexiva . Esta demostracin es falsa , a pesar de lo que parecera en un primer anlisis:

Demostracin aparente de la proposicin no vlida


Por ser R una relacin Simtrica

(x y)R (y x)R
y por ser R una relacin Transitiva

( x , y ) R
(x, x)R
( y , x ) R
La proposicin demostrada no es vlida para todos los elementos x del conjunto A por lo tanto la condicin de
simetra y transitividad no aseguran la reflexividad.

5.6.1.5.- RELACIN DE EQUIVALENCIA


A partir de la compatibilidad e independencia de las Relaciones Reflexiva, Simtrica y Transitiva se puede
definir:
R Re flexiva

Def:
R Equivalencia := R Simtrica
R Transitiva

AxA
Rel Reflexiva
Simtrica
Transitiva

e
d
c
b
a

x
x
x
x
x
a

x
x
x
x
x
b

x
x
x
x
x
c

x
x
x
x
x
d

181

Rel Equiv.

x
x
x
x
x
e

Ejemplos: Son Relaciones de Equivalencia


[=]
[]
[ ]
[ || ]
[]

Igualdad de Conjuntos en general


y en particular Igualdad de Nmeros Naturales, Enteros, Fraccionarios, Reales y Complejos.
Identidad de elementos
Doble Implicacin de Proposiciones
Paralelismo de Rectas y Planos
Semejanza de figuras y Congruencias

5.6.2.- CLASE DE EQUIVALENCIA (CE)


5.6.2.1.- DEFINICIN DE CE
Def: R Equivalencia
CE(x) := { y : (x y) RE }
CE(x) : Clase de equivalentes al elemento x con respecto a RE

5.6.2.2.- DEFINICIN DE CONJUNTO COCIENTE


Def: R Equivalencia
CE(x) := { y : (x y) RE }
P := { CE(x) }
P : Conjunto Cociente: Conjunto de las Clases de equivalencia de RE

5.6.2.3.- TEOREMAS
T1.X := { x }
Y := { y }
f : X Y

: f biyectiva

RE

CE ( x ) := { y : ( xy ) RE }

182

5.6.3.- RELACIONES A-REFLEXIVA , A-SIMTRICA, A-TRANSITIVA Y ANTISIMTRICA


5.6.3.1.- RELACIN A-REFLEXIVA
Def:

R A-Reflexiva := R Reflexiva
:= /xA (x x)R
:= xA (x x)R
Obs: La relacin es A-Reflexiva si no contiene a Toda la Diagonal Principal del Producto Cartesiano AxA.

5.6.3.2.- RELACIN A-SIMTRICA


Def:

R A-Simtrica := R Simtrica
:= (x y)R / (y x)R
:= (x y)R (y x)R

Obs: La relacin es A-Simtrica si existe algn par ordenado de la relacin no Simtrico respecto de la
Diagonal Principal del Producto Cartesiano AxA.

5.6.3.3.- RELACIN A-TRANSITIVA


Def:

R A-Transitiva := R Transitiva
( x , y ) R
:=
/ (x, z)R
( y, z ) R

5.6.3.4.- RELACIN ANTISIMTRICA


La definicin de Antisimetra se apoya sobre la existencia previa de una Relacin de Equivalencia RE.

Def:

R Antisimtrica /RE

RE Equivalencia

( xy ) R
( yx ) R ( xy ) RE

:=

AxA
Rel Antisimtrica

d
c
b
a

x
x
x
x
a

x
x
x
x
b

x
x
x
x
c

x
x
x
x
d

x
x
x
x
e

183

Obs 1: La definicin de la Relacin Antisimtrica significa que no coexisten en la relacin pares simtricos
salvo los (x x) que estn en la diagonal principal.

Esto se observa fcilmente tomando la Proposicin Contrarrecproca (PCR) de la definicin dada:

PCR Proposicin Contrarrecproca


R Antisimtrica /RE

RE Equivalencia

( xy ) RE [( xy ) R ( yx ) R ]

:=

Obs 2: Las relaciones Antisimtricas son independientes y compatibles con las relaciones Simtricas y ASimtricas, es decir las pueden ser simultneas, como lo prueban los siguientes ejemplos:
A

AxA

AxA

Rel Simtrica
Antisimtrica

Rel. Simtrica
No-Antisimtrica

b
a

x
x
a

x
x
b

x
x
c

x
x
d

x
x
e

b
a

x
x
a

x
x
b

x
x
c

x
x
d

x
x
e

e
d
c
b
a

x
x
x
x
x
a

AxA
Rel A-Simtrica
Antisimtrica

x
x
x
x
x
b

e
d
c
b
a

x
x
x
x
x
c

x
x
x
x
x
d

x
x
x
x
x
e

184

AxA
Rel. A-Simtrica
No-Antisimtrica
x
x
x
x
x
a

x
x
x
x
x
b

x
x
x
x
x
c

x
x
x
x
x
d

x
x
x
x
x
e

5.6.4.- RELACIONES DE ORDEN


5.6.4.1.- RELACIN DE ORDEN ESTRICTO (ROE)
Def:

R A Simtrica
R Orden Estricto :=
R Transitiva
A

AxA
Rel

e
d
c
b
a

A-Simtrica
Transitiva

x
x
x
x
x
a

x
x
x
x
x
b

x
x
x
x
x
c

x
x
x
x
x
d

ROE

x
x
x
x
x
e

Ejemplos: Son Relaciones de Orden Estricto


[ > ] Mayor de Nmeros Naturales Enteros, Fraccionarios y Reales

5.6.4.2.- RELACIN DE ORDEN AMPLIO (ROA)

Def:

R Re flexiva

R Orden Amplio/RE := R Antisimtr ica / RE


R Transitiva

AxA
Rel Reflexiva
Antisimtrica/RE ROA
Transitiva

e
d
c
b

x
x
x
x

x
x
x
x

x
x
x
x

x
x
x
x

x
x
x
x

x
a

x
b

x
c

x
d

x
e

Ejemplos: Son Relaciones de Orden Amplio


[ ] Inclusin de Conjuntos
[ ] Implicacin de Proposiciones
[ ] Mayor o igual de Nmeros Naturales Enteros, Fraccionarios y Reales

185

Obs: Las notaciones usuales para las relaciones de orden son x y


preferido la ltima notacin para evitar confusiones.

xRy

(x y) R . Se ha

5.6.4.3.- RELACIN DE ORDEN TOTAL


Una tipificacin de Relacin de Orden tanto para ROE como para ROA es la de ser Total sobre el Conjunto A.
Esto es cuando para todo elemento x de A , existe por lo menos un par ordenado (x y) en la relacin de Orden

Def:

R Orden Total /A := xA

(x y) R (y x) R

R Orden Total /A : Relacin de Orden Total sobre A


5.6.4.4.- TEOREMAS DE RELACIONES DE ORDEN
Teorema: Dado una ROA [ROE] (de mayor o menor), existe siempre otra ROA [ROE] (de menor o mayor), que es
la simtrica de la primera con respecto a la diagonal principal del AxA .

186

5.6.5

5.6.7

5.7 EL PRINCIPIO DEL PALOMAR


El objetivo de este captulo es ilustrar las insospechadas aplicaciones del principio del palomar (o
principio de Dirichlet o de las cajas), que en su versin ms sencilla, reza as: si tenemos n nidos y
en ellos duermen n + 1 palomas, al menos hay un nido en el que duerme ms de una paloma. Como
ya discutamos se trata de la solucin a un problema de existencia1. Simplemente estamos afirmando que, si tenemos suficientes palomas, en este caso n + 1, entonces, sea cual sea la distribucin de
palomas en los n nidos, hay al menos dos que comparten una propiedad (dormir en el mismo nido).
Habr, sin duda, distribuciones en las que haya ms palomas con esa propiedad (imaginemos que
todas ellas duermen en el mismo nido), pero esto nos interesa aqu. Nada decimos sobre de cuntas
formas se pueden distribuir las palomas.
Digamos que un cierto conjunto X contiene a todas las posibles situaciones o estados del mundo.
Supongamos que X es finito, por ejemplo de tamao n, y que la evolucin entre estos posibles estados viene dada por una cierta funcin f: X > X. Si nuestra situacin inicial es x0  X, la Historia
(con mayscula) es la sucesin de estados
x0, f(x0), f 2( x0) , f 3(x0)...
En los primeros n +1 estados del mundo, (x0, f(x0),..., f n(x0)), ha de haber, con seguridad, dos repetidos. Digamos que son f j(x0) y f k (x0), con j < k. Pero entonces
f j+1 (x0) = f(f j(x0)) = f (f k(x0)) = f k+1(x0).
As que el estado del mundo f j+1 (x0) coincide con f(f j(x0)). Y lo mismo para los siguientes. Por lo
tanto, en esta sucesin de estados habra un patrn que se repite indefinidamente. As que toda Historia es cclica a partir de un cierto momento. Un argumento de eterno retorno, que Nietzsche utilizaba explcitamente.
5.7.1 Distintas formulaciones del principio del palomar
Reformulemos este principio en un lenguaje menos extico que el de los nidos y las palomas: sea
un conjunto X de n objetos que distribuimos en k cajas. El principio del palomar dice entonces que
si n > k, hay al menos una caja recibe dos (o ms) objetos.
Si ocurriera que n > 2 k, entonces podramos asegurar que al menos una caja recibe tres o ms objetos (pinsese en el peor caso: 2 k objetos situados de dos en dos en cada caja... y an queda algn
objeto por repartir). Y, en general, dado un r  1, si n > kr, entonces al menos una caja recibe r + 1
(o ms) objetos.
Con un lenguaje ms matemtico, podramos enunciarlo de la siguiente manera:
Proposicin 1 Sean dos conjuntos X (con n elementos) y Y (con k elementos) y una aplicacin
f : X ----->Y

Entonces, sea cual sea la aplicacin f, si n >k hay al menos dos elementos de X, x1 y x2 (x1  x2)
tales que f(x1) = f(x2).
O, en trminos mas generales, si n > kr, para cierto r  1, hay al menos r + 1 elementos distintos de X, x1, x2, . . ., xr, tales que
f(x1) = f(x2) = = f(xr) .

En el lenguaje zoolgico usado antes, los elementos de X seran las palomas, los de Y los nidos, y la
aplicacin f es aquella que indica en qu nido duerme cada paloma. Diramos entonces que si hay n
palomas y k nidos, donde n > kr, entonces habra, con seguridad, al menos r + 1 palomas durmiendo en el mismo nido. El caso r = 1 es el principio del palomar habitual.
1

Que podemos formular en general como: en un cierto sistema, si es suficientemente grande, siempre existen subsistemas no pequeos que satisfacen una cierta propiedad.

187

Por supuesto, la dificultad a la hora de aplicar el principio del palomar ser identificar en cada problema qu desempea el papel de nidos y de palomas, y describir la aplicacin f.
Ejemplo 1
Comprobemos que si en un cuadrado de diagonal 3 marcamos al azar 10 puntos, entonces siempre
tenemos al menos dos puntos que estn a distancia no mayor que 1.
Dividimos el cuadrado en 9 cuadraditos de diagonal 1 (incluyendo sus bordes):
Sean X = {x1, x2,..., x10} el conjunto de puntos y Y = {C1,
C9} el de cuadraditos, y construyamos la aplicacin
f : X ----->Y
Xj |----->Y f(x) = cuadrado Ck en el que est x

C2,...,

Si x estuviera en mas de un cuadrado, elegimos uno cualquiera; digamos que el que menor
subndice tenga (esto es, si est entre C5 y C8, elegimos el C5). Aplicando el principio del
palomar, sea cual sea la aplicacin concreta f (la distribucin de puntos), debern existir al
menos dos puntos con la misma imagen, es decir, que estn en el mismo cuadradito. Y como los
cuadraditos tienen diagonal 1, esos dos puntos distaran como mucho una unidad.
Ejemplo 2
Probemos que si X es un conjunto arbitrario de 20 nmeros naturales, entonces hay al menos dos
elementos de X cuya diferencia es un mltiplo de 19.
En un lenguaje que ya manejamos bien, buscamos dos elementos de X cuya diferencia sea congruente con 0 mdulo 19. As que consideremos la aplicacin f: X > {0, 1,..., 18} que a cada n 
X le asigna f(n) = n mdulo 19.
Por el principio del palomar, al menos dos elementos de X, digamos n1 y n2, tienen la
misma imagen: f(n1) = f(n2). Pero entonces n1 = n2 mdulo 19. Y, por tanto, n1 n2 = 0
mdulo 19, que es lo que queramos.

A veces no podemos aplicar directamente el principio del palomar, y se requiere una preparacin
inicial.
Ejemplo 3
Supongamos que en una reunin hay n personas y nos preguntamos por el nmero de personas que
conoce cada una. Convenimos que si una persona conoce a otra, sta tambin conoce a la primera;
y que nadie se conoce a s mismo2. Comprobemos que hay al menos dos personas que tienen el
mismo nmero de conocidos.
Sea X = {x1,..., xn} al conjunto de personas; cada una de ellas tendr un cierto nmero de conocidos,
y este nmero estar en el conjunto Y = {0,..., n - 1}. Construimos la aplicacin
f : X > Y
xj |----> f(xj) = #{conocidos de xj}.
Aparentemente, no podemos aplicar el principio del palomar, porque X y Y tienen el mismo nmero
de elementos, n. Pero vamos a ver que, en realidad, la aplicacin f nunca puede cubrir todo Y. Distinguimos dos posibilidades:
Supongamos que existe una persona x con f(x) = 0 (es decir, que no conoce a nadie). Entonces f
no puede tomar el valor n - 1 (si existiera una persona que conociera a todas, debera conocer
tambin a x). As que f toma valores en el conjunto {0,1,... , n - 2}, que tiene n - 1 elementos.
2

"Olvidndonos del nosce te ipsum (concete a ti mismo) del prtico del templo de Apolo en Delfos.

188

Aplicando el principio del palomar, concluimos que, en este caso, al menos dos personas tienen
el mismo nmero de conocidos.
Si no existe esa persona que no conoce a nadie, entonces f no toma el valor 0, y acabamos aplicando de nuevo el principio del palomar.

El siguiente ejemplo requiere todava ms elaboracin.


Ejemplo 4
Sea S un conjunto de n nmeros naturales. Mostremos que hay un subconjunto T  S tal que la suma de todos sus elementos es un mltiplo de |S| = n.
Parece claro que deberemos considerar las sumas de los elementos de S mdulo n: lo que buscamos
es una suma que sea = 0 mdulo n. Un primer intento sera establecer la aplicacin

Es decir,  1 es la aplicacin que a cada subconjunto T de S le asocia el valor (mdulo n) de la suma


de sus elementos. Queremos ver si  1 toma necesariamente el valor 0.
Como en X hay 2n elementos y en Y hay n (y sabemos que 2n > n, para n  1), el principio del palomar nos permite concluir que hay al menos dos subconjuntos T1 y T2 de S tales que

y que, por tanto,

Podemos deducir de aqu lo que queremos? Si ocurriera que T1 contiene a T2 (o al revs), es fcil
comprobar que si. Pero recordemos que el principio del palomar no nos dice nada sobre cmo son
estos subconjuntos T1 y T2, slo que existen; as que este no parece ser el camino.
Lo que debemos hacer es escoger ms cuidadosamente los subconjuntos: empecemos ordenando
los elementos de S, digamos de menor a mayor,
S = {a1 < < an}
Vamos a considerar los subconjuntos {a1}, {a1, a2}, {a1, a2, a3}, etc. Construyamos la funcin
2 : { 1 , . . . , n}  {0, ... , n - 1}

La funcin 2 devuelve los valores (mdulo n) de las sucesivas sumas a1, a1+ a2, a1+a2 + a3, etc.,
que podemos formar. Como ambos conjuntos, el de partida y el de llegada, tienen n elementos, tendremos que distinguir dos casos:
Si existe un i con 2( i ) = 0, habremos terminado, porque tendramos que

y el conjunto buscado sera T = {a1, . . ., ai}.

Si, por el contrario, no existe tal i, entonces la aplicacin 2 slo tomara valores en {1,..., n 1}. El principio del palomar nos dira entonces que existen i < j tales que 2(i) = 2(j). Esto es,

Y el conjunto buscado sera T = {a i + 1 ,..., aj }.


189

Como vemos, la aplicacin del principio del palomar a la resolucin de problemas suele requerir
algo de ingenio. Los ejercicios del final de la seccin son un buen entrenamiento que recomendamos al lector.
Ejemplo 5
Comprobemos que en una reunin de seis personas, o bien tres de ellas se conocen entre s, o bien
tres de ellas no se conocen entre s.
Seguimos con la convencin del ejemplo 3: si una persona conoce a otra, al revs tambin, y nadie
se conoce a s mismo. Llamemos {a, b, c, d, e, f} al conjunto de personas y fijmonos en una de
ellas, digamos a. Situamos a las otras cinco personas en dos cajas, segn conozcan o no a a. El
principio del palomar nos dice que una de las cajas contendr (al menos) a tres personas.
Digamos que estamos en el caso de que sea la caja con conocidos la que tiene al menos
tres personas (un argumento anlogo funciona en el otro caso). La persona a conoce, por ejemplo, a
las personas b, c y d. Ahora nos fijamos en este grupo: si alguno de ellos se conoce entre s, digamos b y c, ya tendramos un grupo de tres amigos (a, b y c, en este caso).
Pero si no es as, estaramos en la segunda opcin del enunciado: b, c y d formaran un grupo
de (tres) desconocidos.
5.7.1.1 Otras versiones del principio del palomar
La siguiente versin probabilstica del principio del palomar nos dice que, en un conjunto de n
nmeros naturales, no puede ocurrir que todos ellos estn por encima (o por debajo de la media).
Proposicin 2 Dados n nmeros naturales x 1 , . . . , x n tales que su suma vale S, alguno de ellos ha
de ser mayor o igual que S/n.
Demostracin. Si no fuera as, todos los xi serian menores que S/n, y entonces

lo que no tiene sentido.


El mismo argumento nos permite concluir que existe un elemento que es menor o igual que S/n.
Con esta idea, podemos dar una formulacin ms general del principio del palomar.
Proposicin 3 Sean dos conjuntos X e Y (finitos y no vacos) y sea una aplicacin f de X en Y. Entonces,

Demostracin. Estamos aqu utilizando la notacin habitual para nombrar el conjunto de pre imgenes del elemento y  Y :
Por ser f una aplicacin (cada elemento de X tiene una nica imagen), se tendra que

Entonces, por la proposicin anterior, existir al menos un elemento

Y

Un argumento anlogo permite probar la parte (b) del enunciado.


Por ejemplo, si |X| = n +1 y |Y| = n, deduciramos que existe un elemento

190

de Y tal que

Como el nmero de la izquierda es un entero, entonces ha de ser mayor o igual que 2, el principio
del palomar habitual. Y en general, si |X| > r|Y| para cierto nmero natural r, entonces existir un y
 Y tal que

En otras palabras, existen al menos r + 1 elementos de X cuya imagen es el elemento y.


Ejemplo 6
En un grupo de 7 personas, la suma de las edades es 332 aos. Probar que se puede escoger a tres
de ellas de manera que la suma de sus edades sea al menos 143 aos.
Llamemos x1,..., xn a las edades, ordenadas de mayor a menor. Sabemos que 332 = (x1 + x2 + x3 + x4
+ x5 + x6 + x7).
Como estn ordenadas de mayor a menor, la suma de las tres mayores edades ha de ser mayor (o
igual) que la suma de cualesquiera otras tres edades. Es decir, x1 + x2 + x3 ser mayor o igual que
cualquiera de la sumas x4 + x5 + x6, x4 + x5 + x7, x4 + x6 + x7, x5 + x6 + x7.
Sumando estas cuatro desigualdades, llegamos a que 4(x1 + x2 + x3) > 3(x4 + x5 + x6 + x7). Entonces,

esto es,

Pero podramos abordar el problema utilizando el principio del palomar. Con las 7 personas podemos formar (73) = 35 triples distintos. Pero cada persona aparecer en (62) = 15 triples (basta decidir
que dos personas le acompaan). Entonces se cumplir que

Como hay 35 triples distintos, la suma de las edades de alguno de ellos ha de ser mayor o igual que

Ejemplo 7
Un conjunto X de 100 elementos se parte en 14 bloques. Prubese que hay dos bloques con el mismo nmero de elementos.
Llamemos xi al tamao del bloque i-simo. Entonces
tos, entonces tendramos que

Si todos los xi fueran distin-

Pero esto no puede ocurrir, as que al menos dos han de ser iguales.
Finalicemos con una ltima versin del principio del palomar, en el que el conjunto de palomas
es infinito; de nuevo, el enunciado es bastante obvio: se dispone de una cantidad infinita de objetos
que se han de repartir en un conjunto finito de cajas. Entonces, al menos una caja contiene un nmero infinito de objetos

191

5.8 COMPLEJIDAD COMPUTACIONAL

__________________
1

Un algoritmo resuelve un problema, pero dado un problema hay ms de un algoritmo que lo resuelve.
A lo largo de este tema, se podra pensar en traducir la palabra dificultad por complejidad; pero, se pretende diferenciar entre la
dificultad de resolver un problema y la complejidad del algoritmo que lo resuelva: es decir, cuando se dice que los problemas X y Y son
igual de difciles de resolver, es porque sus mejores algoritmos conocidos tienen una complejidad similar. Por purismo, o por mera
deformacin profesional (tanto leer en ingls tiene consecuencias perniciosas sobre el vocabulario propio), se mantiene dificultad.
2

192

El dilema del contrabandista

193

194

Definiciones bsicas

____________________________________
3
Es decir, encontrar una solucin eficiente para cualquier problema de esa clase es igual de difcil que encontrar una solucin eficiente
para ese problema especial.

195

Clases de complejidad

196

197

Relaciones entre clases deterministas y no deterministas

198

__________________
5

Por ahora?

199

Las clases de complejidad polinmica

200

201

202

Introduccin a la teora de la complejidad computacional

203

204

205

PROBLEMAS PROPUESTOS

206

207

5.9 ANLISIS DE ALGORITMOS

INTRODUCCIN
En las Ciencias de la Computacin cuando se dice que un problema tiene solucin,
significa que existe un algoritmo susceptible de implantarse en una computadora,
capaz de producir la respuesta correcta para cualquier instancia del problema en
cuestin.
Para ciertos problemas es posible encontrar ms de un algoritmo capaz de resolverlos,
lo cual nos enfrenta al problema de escoger alguno de ellos. La tarea de decidir cul
de ellos es el mejor debe basarse en criterios acordes a nuestros intereses. En la
mayora de los casos la eleccin de un buen algoritmo est orientada hacia la
disminucin del costo que implica la solucin del problema; bajo este enfoque es
posible dividir los criterios en dos clases:
a) Criterios orientados a minimizar el costo de desarrollo: claridad, sencillez y
facilidad de implantacin, depuracin y mantenimiento.
b) Criterios orientados a disminuir el costo de ejecucin: tiempo de procesador y
cantidad de memoria utilizados.
Si el programa que implanta el algoritmo se va a ejecutar unas cuantas veces, el costo
de desarrollo es dominante, en este caso se debe dar ms peso a los primeros criterios.
Por el contrario, si el programa se va a utilizar frecuentemente, dominar el costo de
ejecucin, y por ende, se debe elegir un algoritmo que haga uso eficiente de los
recursos de la computadora, es decir, se le debe evaluar prioritariamente bajo los
criterios de la segunda clase. En cualquier caso, ninguno de los criterios de
evaluacin debe eliminarse por completo; pues, por ejemplo, si se implanta un
sistema con algoritmos muy

208

ecientes pero confusos, puede suceder que despus no sea posible darle el
mantenimiento adecuado.
Los recursos que consume un algoritmo pueden estimarse mediante herramientas tericas y constituyen, por lo tanto, una base conable para la
eleccin de un algoritmo. En las Ciencias de la Computacin, la actividad
dedicada a determinar la cantidad de recursos que consumen los algoritmos
se le denomina anlisis de algoritmos.
La primera seccin de este captulo presenta los conceptos que nos permitirn introducir despus, en secciones posteriores, las tcnicas utilizadas para
la medicin de los recursos que consume un algoritmo y las bases tericas
sobre las que estas se fundamentan.

1.1. Conceptos Bsicos


En esta seccin presentamos los conceptos bsicos del anlisis de algoritmos.

1.1.1. Denicin de algoritmo


Un algoritmo es un conjunto nito de instrucciones no ambiguas y efectivas que indican cmo resolver un problema, producen al menos una salida,
reciben cero o ms entradas y, para ejecutarse, necesitan una cantidad nita
de recursos.
Una instruccin es no ambigua cuando la accin a ejecutar est perfectamente denida, por ejemplo, instrucciones del tipo:

x log(0)
o

x (10 o 35)/3

no pueden formar parte de un algoritmo.


Una instruccin es efectiva cuando se puede ejecutar en un intervalo nito
de tiempo, por ejemplo, las instrucciones

x 2 + 8, mensaje Une('Hola','Mundo')
son efectivas, mientras que

x cardinalidad(nmeros naturales)

209

no lo es.
Si un conjunto de instrucciones tiene todas las caractersticas de un algoritmo, excepto ser nito en tiempo se le denomina proceso computacional.
Los sistemas operativos son el mejor ejemplo de proceso computacional, pues
estn diseados para ejecutar tareas mientras las haya pendientes, y cuando
stas se terminan, el sistema operativo entra en un estado de espera, hasta
que llegan ms, pero nunca termina.
Se asume que un problema tiene solucin algortmica si adems de que el
algoritmo existe, su tiempo de ejecucin es razonablemente corto. Por ejemplo, es posible disear un algoritmo para jugar ajedrez que triunfe siempre: el
algoritmo elige la siguiente tirada examinando todas las posibles secuencias
de movimientos desde el tablero actual hasta uno donde sea claro el resultado
y elige la tirada que le asegure el triunfo; el pequeo inconveniente de este
algoritmo es que dicho espacio de bsqueda se ha estimado en 100040 tableros
por lo que puede tardarse miles de aos en tomar una decisin. Por lo tanto,
para nes prcticos se considera que si un problema tiene una solucin que
toma aos en computar, dicha solucin no existe.
Considrese ahora el problema de ordenar un conjunto de valores, si el
conjunto tiene 2 elementos es ms fcil resolverlo que si tiene 20, anlogamente un algoritmo que resuelva el problema tardar ms tiempo mientras
ms grande sea el conjunto y requerir una cantidad de memoria mayor para
almacenar los elementos del conjunto.
En general la cantidad de recursos que consume un algoritmo para resolver un problema se incrementa conforme crece el tamao del problema.
Dependiendo del problema en particular, uno o varios de sus parmetros ser
elegido como tamao del problema. Haciendo una cuidadosa observacin, es
relativamente fcil efectuar una eleccin atinada.
En la Figura 1 se presenta una serie de problemas y una sugerencia acerca
del parmetro que se puede elegir como tamao del problema.

1.2.

Complejidad de algoritmos

La funcin complejidad, f (n), donde n es el tamao del problema, da una


medida de la cantidad de recursos que un algoritmo necesitar al implantarse
y ejecutarse en alguna computadora. Puesto que la cantidad de recursos que
consume un algoritmo crece conforme el tamao del problema se incrementa,
la funcin complejidad es montona creciente (f (n) > f (m) n > m) con

210

PROBLEMA

Bsqueda de un elemento en un conjunto


Multiplicar dos matrices
Recorrer un rbol
Resolver un sistema de ecuaciones lineales
Ordenar un conjunto de valores

TAMAO DEL PROBLEMA

Nmero de elementos en el conjunto


Dimensin de las matrices
Nmero de nodos en el rbol
Nmero de ecuaciones y/o incgnitas
Nmero de elementos en el conjunto

Figura 1: Eleccin del tamao del problema.


respecto al tamao del problema.
La memoria y el tiempo de procesador son los recursos sobre los cuales
se concentra todo el inters en el anlisis de un algoritmo, as pues distinguiremos dos clases de funcin complejidad:
a)

Funcin complejidad espacial. Mide la cantidad de memoria que nece-

b)

Funcin complejidad temporal.

sitar un algoritmo para resolver un problema de tamao n.

Indica la cantidad de tiempo que requiere un algoritmo para resolver un problema de tamao n; viene a
ser una medida de la cantidad de CPU que requiere el algoritmo.

La cantidad de memoria que utiliza un algoritmo depende de la implantacin, no obstante, es posible obtener una medida del espacio necesario con la
sola inspeccin del algoritmo. Para obtener esta cantidad es necesario sumar
todas las celdas de memoria que utiliza. En general se requerirn dos tipos
de celdas de memoria:
a)

Celdas estticas. Son las que se utilizan en todo el tiempo que dura la

b)

Celdas dinmicas. Se emplean slo durante un momento de la ejecucin,

ejecucin del programa, por ejemplo, las variables globales.

y por tanto pueden ser asignadas y devueltas conforme se ejecuta el


algoritmo, por ejemplo, el espacio de la pila utilizado por las llamadas
recursivas.

En este contexto, una celda de memoria no tiene una medida fsica en


correspondencia, se le utilizar slo para especicar el espacio empleado por

211

una variable simple, sin importar el tipo al que pertenezca. Las variables que
tengan valores de un tipo simple ocuparn una celda de memoria, mientras
que a las variables de tipos compuestos se les asignan tantas celdas como
requieran los elementos que las componen.
El tiempo que emplea un algoritmo en ejecutarse reeja la cantidad de
trabajo realizado, as, la complejidad temporal da una medida de la cantidad
de tiempo que requerir la implantacin de un algoritmo para resolver el
problema, por lo que se le puede determinar en forma experimental. Por
ejemplo, para encontrar el valor de la funcin complejidad de un algoritmo
A que se codica un lenguaje de programacin L, se compila utilizando el
compilador C y se ejecuta en la mquina M, damos algunas entradas al
programa y medimos el tiempo de procesador empleado para resolver los
casos del problema.
Proceder de esta manera presenta, entre otros, el inconveniente de que
los resultados obtenidos dependen de:
a) las entradas proporcionadas,
b) la calidad del cdigo generado por el compilador utilizado, y
c) de la mquina en que se hagan las corridas.
Para evitar que estos factores se reejen en el clculo de la funcin complejidad, el anlisis temporal (y el espacial) se har nicamente con base al
algoritmo escrito en pseudocdigo. Como el pseudocdigo no se puede ejecutar para medir la cantidad de tiempo que consume, la complejidad temporal
no se expresar en unidades de tiempo, sino en trminos de la cantidad de
operaciones que realiza. Cada operacin requiere cierta cantidad constante
de tiempo para ser ejecutada, por esta razn si se cuenta el nmero de operaciones realizadas por el algoritmo se obtiene una estimacin del tiempo
que le tomar resolver el problema.
Dado un algoritmo, se puede determinar que tipos de operaciones utiliza
y cuantas veces las ejecuta para una entrada especca. Observemos este
procedimiento en el siguiente ejemplo.

Ejemplo 1 Considrese el Algoritmo 1, que realiza bsqueda lineal sobre un

arreglo A con n elementos, y devuelve la posicin en la que se encuentra el


elemento Valor; si Valor no se encuentra devuelve n + 1. El algoritmo realiza
sumas (+), asignaciones (), comparaciones ( y =) y operaciones lgicas
().

212

Si el ciclo mientras se realiza k veces, el algoritmo ejecutar las operaciones siguientes:


k sumas (una por cada iteracin).
k + 2 asignaciones (las del ciclo y las realizadas fuera del ciclo).
k + 1 operaciones lgicas (la condicin se debe probar k + 1 veces,

la ltima es para saber que el ciclo no debe volver a ejecutarse).


k + 1 comparaciones con el ndice.
k + 1 comparaciones con elementos de A.
k + 1 accesos a elementos de A.
6k + 6 operaciones en total.

func

BsquedaLineal(V alor, A, n)

comienza

i 1;

(i n) (A[i] = V alor)
i i + 1;
zah;
BsquedaLineal i;
mientras

haz

termina.
Algoritmo 1:

Bsqueda lineal

Del Ejemplo 1 notamos que el nmero de veces que se ejecutan algunas


operaciones, para valores sucesivamente mayores que k, presenta un modelo
de crecimiento similar al que tiene el nmero total de operaciones que ejecuta el algoritmo . Para hacer una estimacin de la cantidad de tiempo que
tarda un algoritmo en ejecutarse, no es necesario contar el nmero total de
operaciones que realiza. Se puede elegir alguna, a la que se identicar como
operacin bsica que observe un comportamiento parecido al del nmero total de operaciones realizadas y que, por lo tanto, ser proporcional al tiempo

Posteriormente, cuando se introduzca el concepto de orden, se dir que ambas cantidades son del mismo orden


213

total de ejecucin. Para el algoritmo anterior se puede contar cualquiera de


las operaciones mencionadas. En general, debe procurarse que la operacin
bsica, en la cual se basa el anlisis, de alguna forma est relacionada con el
tipo de problema que se intenta resolver, ignorando las asignaciones de valores iniciales y las operaciones sobre variables para control de ciclos (ndices).
La operacin bsica en el Algoritmo 1 (bsqueda lineal) es la comparacin
entre los elementos del arreglo y el valor buscado, pues cumple con las consideraciones anteriores.

Ejemplo 2

El Algoritmo 2 obtiene el producto de los dos valores ms grandes contenidos en un arreglo A de n enteros. Tomaremos este problema para
ejemplicar la eleccin de la operacin bsica con miras a hacer el anlisis
del algoritmo.
En este algoritmo se realizan las siguientes operaciones:
a) Comparacin entre mayor1 , mayor2 y los elementos del arreglo.
b) Asignaciones a mayor1 y mayor2
c) Asignacin al ndice i
d) Asignacin a la funcin
e) Producto de los mayores
f ) Incremento al ndice i
g) Comparacin entre el ndice i y la longitud del arreglo n
Las operaciones (c), (f) y (g) no se consideran por realizarse entre ndices, las operaciones (d) y (e) se ejecutan una sola vez y no son proporcionales al nmero total de operaciones. Entonces, se tiene que las operaciones
que se pueden considerar para hacer el anlisis son: las comparaciones entre
mayor1 , mayor2 y los elementos del arreglo y las asignaciones a los elementos
mayores.

Con el n de remarcar an ms la eleccin de la operacin bsica, la


Figura 2 ilustra la seleccin de operaciones bsicas en algunos algoritmos
muy comunes.
Resumiendo, el anlisis de un algoritmo se puede hacer considerando slo
aquella operacin que cumpla los siguientes criterios:

214

func

Producto2Mayores (A, n)

comienza
si

A[1] > A[2]

entonces

mayor1 A[1];
mayor2 A[2];

otro

mayor1 A[2];
mayor2 A[1];
is

i 3;

i n haz
A[i] > mayor1 entonces
mayor2 mayor1;
mayor1 A[i];
otrosi A[i] > mayor2 entonces
mayor2 A[i];

mientras
si

is

i i + 1;
zah

Producto2Mayores mayor1 mayor2;


termina.
Algoritmo 2:

Producto de los valores ms grandes de una lista de nmeros.

PROBLEMA

OPERACIN BSICA

Bsqueda de un elemento en un con- Comparacin entre el valor y los elejunto


mentos del conjunto
Multiplicar dos matrices
Producto de los elementos de las matrices
Recorrer un rbol
Visitar un nodo
Resolver un sistema de ecuaciones li- Suma
neales
Ordenar un conjunto de valores
Comparacin entre valores

Figura 2: Eleccin de la operacin bsica para algunos problemas.

215

a) Debe estar relacionada con el tipo de problema que se resuelve.


b) Debe ejecutarse un nmero de veces cuyo modelo de crecimiento sea
similar al del nmero total de operaciones que efecta el algoritmo.
Si ninguna de las operaciones encontradas cumple con ambos criterios,
es posible declinar el primero. Si aun as no es posible encontrar una operacin representativa, se debe hacer un anlisis global, contando todas las
operaciones.
En la teora de algoritmos es muy frecuente usar el trmino instancia para
indicar un caso especco de un problema. As, por ejemplo, si el problema
es la multiplicacin de 2 enteros positivos una instancia es el par de nmeros
a multiplicar, v.g. (1966, 24).
Con los conceptos enunciados hasta aqu es posible calcular la funcin
complejidad temporal ft (n) para un algoritmo simple. En el Ejemplo 3 se
calcula dicha funcin para el algoritmo 1.

Ejemplo 3

Considrese el Algoritmo 1, para hacer el anlisis de su compor-

tamiento tomemos como operacin bsica las comparaciones con elementos


del arreglo y como caso muestra:

A = [2, 7, 4, 1, 3]

Si Valor = 2, se hace una comparacin,

n = 5.

ft (5) = 1

Si Valor = 4, se hacen tres comparaciones,

ft (5) = 3

Si Valor = 8, se hacen cinco comparaciones, y

ft (5) = 5

Del Ejemplo 3 es posible descubrir que la funcin complejidad no es tal,


en realidad es una relacin, ya que para un mismo tamao de problema se
obtienen distintos valores de la funcin complejidad. Como ste, hay muchos
algoritmos en los que el nmero de operaciones depende, no slo del tamao
del problema, sino tambin de la instancia especca que se presente, entonces
de qu manera se puede expresar el valor de la funcin complejidad? A
continuacin damos una respuesta.
Sea I(n) = {I1 , I2 , I3 , . . . , Ik } el conjunto de instancias del problema cuyo
tamao es n. Sea O(n) = {O1 , O2 , O3 , . . . , Ok } el conjunto formado por el
nmero de operaciones que un algoritmo realiza para resolver cada instancia.
Entonces, Oj es el nmero de operaciones ejecutadas para resolver la instancia Ij , para 1 j k. Se distinguen tres casos en el valor de la funcin
complejidad temporal

216

a) Peor caso
b) Mejor caso

ft (n) = max({O1 , O2 , O3 , . . . , Ok })
ft (n) = mn({O1 , O2 , O3 , . . . , Ok })

c) Caso medio

ft (n) =

k


Oi P (i)

i=1

donde P (i) es la probabilidad de que ocurra la instancia Ii .


En otras palabras, el mejor caso se presenta cuando para una entrada de
tamao n, el algoritmo ejecuta el mnimo nmero posible de operaciones, el
peor caso cuando hace el mximo y en el caso medio se consideran todos
los casos posibles para calcular el promedio de las operaciones que se hacen
tomando en cuenta la probabilidad de que ocurra cada instancia.
Los casos en la funcin complejidad espacial, se pueden denir anlogamente, considerando ahora el conjunto C(n), como el conjunto formado por
el nmero de celdas de memoria utilizadas por el algoritmo para resolver cada
instancia del problema.
En los Ejemplos 4 y 5 se ilustra el anlisis temporal de los Algoritmos 1
y 2. Para estos problemas el nmero de operaciones vara considerablemente
para instancias diferentes del mismo tamao.

Ejemplo 4 Algoritmo de bsqueda lineal.


Problema:
Bsqueda lineal de un valor en un arreglo de
tamao n.
Tamao del Problema: n = nmero de elementos en el arreglo.
Operacin bsica:
Comparacin del valor con los elementos del
arreglo.
Anlisis Temporal
i) Mejor caso: ocurre cuando el valor es el primer elemento del arreglo.
ft (n) = 1

ii) Peor caso: sucede cuando el valor no se encuentra en el arreglo.


ft (n) = n + 1

217

iii) Caso medio:

ft (n) = 1P (1) + 2P (2) + 3P (3) + 4P (4) + ... + nP (n) + nP (n + 1)


P (i) es la probabilidad de que el valor se encuentre en la localidad
i, (1 i n) y P (n + 1) es la probabilidad de que no est en el arreglo. Si
donde

se supone que todos los casos son igualmente probables

P (i) =

1
n+1

n+2
1 
(n + 1)(n + 2)
ft (n) =
=
i=
n + 1 i=1
2(n + 1)
2

Ejemplo 5

n+1

Algoritmo producto mayores.

Problema:

Dado un arreglo de valores, encontrar el


producto de los dos nmeros mayores.

Tamao del Problema:

n =nmero

Operacin bsica:

Comparacin entre los elementos del arreglo

de elementos en el arreglo.

y los mayores.

Anlisis Temporal
i) Mejor caso: ocurre cuando el arreglo est ordenado ascendentemente
(en cada iteracin slo hace la primera comparacin)

ft (n) = 1 + (1 (n 2)) = n 1
ii) Peor caso: el arreglo est ordenado de manera descendente (se hacen
dos comparaciones por iteracin en el ciclo)

ft (n) = 1 + (2 (n 2)) = 2n 3

iii) Caso medio: en este problema se tienen

|U |
n


n!

casos, donde

es

el conjunto del que se extraen los elementos del arreglo.

Y para hacer el clculo se deben contar las operaciones que se haran en


cada caso.

218

La tarea de conteo bajo esta metodologa resulta excesivamente laboriosa,


por lo que se recurrir a otro mecanismo. El algoritmo hace siempre una
comparacin al inicio y en el interior del ciclo puede ser que se realice una
comparacin o dos; obsrvese que para cada A[i] puede ser cierta una de tres
aseveraciones:
i) A[i] > mayor1 se hace una comparacin
ii)
iii)

mayor1 A[i] > mayor2


mayor2 A[i]

se hacen dos comparaciones

se hacen dos comparaciones.

Si cada caso tiene la misma probabilidad de ocurrencia, entonces en promedio,


se harn
1
5
(1 + 2 + 2) =
3
3

comparaciones por iteracin, por lo tanto el algoritmo realizar en promedio


5
(5n 7)
ft (n) = 1 + (n 2) =
3
3

comparaciones.
Es importante mencionar que no todos los algoritmos presentan casos, y
resulta interesante tener una herramienta para detectar cundo se particionar el anlisis en casos; por el momento la nica ayuda con la que se cuenta
es la intuicin y preguntarse: se puede resolver el problema de manera trivial
para alguna instancia especca? Si la respuesta es armativa el algoritmo
tendr casos, por lo que el problema de deteccin se reduce a contestar esta
simple pregunta.
Con lo expuesto en esta seccin y con habilidades (formales e informales)
de conteo, se puede estimar la cantidad de recursos que un algoritmo consume; pero el objetivo no slo es conocer dicha cantidad, sino, ms an, poder
comparar el comportamiento de distintos algoritmos, con el n de decidir
cul de ellos utilizar bajo circunstancias especcas. En la siguiente seccin
se dan las bases tericas para tomar de manera conable la decisin.

219

1.3. Ejercicios
Ejercicio 1.1 La regla para multiplicar las matrices A y B
2 2,

y obtener C = AB, es:

c11 = a11 b11 + a12 b21


c21 = a21 b11 + a22 b21

de dimensin

c12 = a11 b12 + a12 b22


c22 = a21 b12 + a22 b22

sta involucra 8 multiplicaciones y 4 sumas.


Disee un algoritmo que use solamente 7 multiplicaciones. Cuntas sumas usa su algoritmo?
[Sugerencia. Exprese cada entrada de la matriz C, como una suma de las
frmulas de Strassen:
m1
m2
m3
m4

= (a11 + a22 )(b11 + b22 )


= (a21 + a22 )b11
= a11 (b12 b22 )
= a22 (b21 b11 )

m5 = (a11 + a12 )b22


m6 = (a21 a11 )(b11 + b12 )
m7 = (a12 a22 )(b21 + b22 )

Ejercicio 1.2 El algoritmo 3 encuentra la representacin binaria de un entero decimal positivo. El algoritmo se basa en divisiones sucesivas por 2. As,
para un entero positivo N se calcula:
N = 2q0 + r0
q0 = 2q1 + r1
q1 = 2q2 + r2

..
.

qk1 = 2qk + rk

donde cada residuo ri es 0 o 1. El algoritmo se detiene cuando qk = 0. La


representacin binaria es entonces N 2 = rk rk1 . . . r1 r0 .
i) Denir uno de los parmetros como tamao del problema, justique su
eleccin.

220

proc RepresentacinBinaria(N,N2)
comienza
y N;
i 0;

mientras (y = 0) haz
si par (y) entonces
otro
is

r[i] 0

r[i] 1;
y y1

y y/2;
i i + 1;

zah

k i 1;
N 2 r[0...k];

termina.

Algoritmo 3: Representacin binaria.

ii) Elija la operacin bsica para basar el anlisis temporal y calcule la


complejidad temporal.
iii) Muestre que si elige el valor del nmero

como el tamao del proble-

ma, el nmero de operaciones que requiere el algoritmo es

Ejercicio 1.3

log N
+1.
10
3

Suponer que se desea encontrar el elemento menor de una

secuencia nita de enteros

x1 , x2 , . . . , xn ,

usando el algoritmo 4.

i) Sugerir una medida razonable, para el tamao del problema.


ii) Realice el anlisis temporal y espacial para el algoritmo.

Ejercicio 1.4

Para el algoritmo de ordenamiento denominado Burbuja, efec-

te el anlisis temporal y espacial en todos los casos.

Ejercicio 1.5

Para el algoritmo 2 muestre que el modelo de crecimiento del

total de operaciones, conforme el tamao del problema se incrementa, es


similar al que observa la operacin bsica.

221

proc BuscaMnimo (X)


comienza

b X[1];
para j 2 a n haz
si (X[j] < b) entonces
b X[j];

(* b = min{x1 , x2 , . . . , xn } *)

is

zah
termina.

Algoritmo 4: Valor mnimo.

Ejercicio 1.6 Se tiene un archivo de n registros y cada registro contiene m


datos que deben actualizarse peridicamente.

i) Disee un algoritmo que actualice tal archivo. Dicho algoritmo recibe


como entrada el nmero de registros en el archivo y una lista que contiene los nmero de registro que se han de actualizar. Si un nmero de
registro est en la lista, todos sus datos se actualizan.
ii) Denir uno de los parmetros como tamao del problema.
iii) Elegir una operacin bsica.
Calcular la complejidad temporal en el mejor caso, en el peor caso y en el
caso medio, asumiendo que P (0) = 0, P (1) = P (2) = P (3) = = P (n),
y despus asumiendo que P (k) = ( n2k2 + n); 0 k n, donde P (k) es la
probabilidad de que deban actualizarse los datos de k registros.

Ejercicio 1.7 Dada una lista ordenada con representacin ligada sencilla,
escriba un algoritmo para insertar un elemento y obtenga la complejidad temporal del mismo.

Ejercicio 1.8 Dado un arreglo con n elementos, escribir un algoritmo para

obtener el ksimo elemento ms pequeo, encontrando los k menores si


k n2 y los n k + 1 mayores si k > n2 . Para este algoritmo, obtngase la
complejidad temporal en todos los casos.

222

También podría gustarte