Escolar Documentos
Profissional Documentos
Cultura Documentos
tos de
Departamento de Matem
ati
as
Fa
ultad de Cien
ias, UNAM
Febrero 2004
Indi
e general
1. Arboles
de B
usqueda
Re orrido y Mantenimiento
15
19
4. Compresi
on de Texto
27
5. B
usqueda de Cadenas
El Algoritmo Boyer-Moore
33
39
Prefa
io
Los Temas Sele
tos de Estru
turas de Datos introdu
en en forma simple
y sen
illa a algunos temas relevantes de Estru
turas de Datos. No tiene
la inten
ion de substituir a los diversos libros y publi
a
iones formales en
el area, ni
ubrir por
ompleto los
ursos rela
ionados, sino mas bien, su
objetivo es exponer brevemente y guiar al estudiante a traves de los temas
que por su relevan
ia se
onsideran esen
iales para el
ono
imiento basi
o
de esta area, desde una perspe
tiva del estudio de la Computa
ion.
Los temas prin
ipales que se in
luyen en estas notas son: Arboles
de
Busqueda, Ordenamiento Se
uen
ial, Alma
enamiento por Hashing, Compresion de Texto, Busqueda de Cadenas y Bases de Datos Rela
ionales.
Estos temas se exponen ha
iendo enfasis en los elementos que el estudiante
(parti
ularmente el estudiante de Computa
ion) debe aprender en las asignaturas que se imparten
omo parte de la Li
en
iatura en Cien
ias de la
Computa
ion, Fa
ultad de Cien
ias, UNAM.
Jorge L. Ortega Arjona
Febrero 2004
Cap
tulo 1
Arboles
de B
usqueda
Re
orrido y Mantenimiento
Un arbol es una de las estru
turas de datos mas utiles que se han
on
ebido en programa
ion de sistemas. Consiste en un
onjunto de nodos organizados que alma
enan algun tipo de dato. Ciertamente, existen mu
hos
algoritmos para la busqueda y manipula
ion de los datos alma
enados en
arboles. Este
aptulo des
ribe
omo se
onstruyen los arboles, un algoritmo
de busqueda de datos en el arbol, algunos esquemas de re
orrer el arbol, y
una te
ni
a de mantener (a~nadiendo o borrando) los datos del arbol.
El uso de nodos y apuntadores es fundamental para la
onstru
ion de
arboles de busqueda. Un nodo no es mas que una
ole
ion de lo
alidades
de memoria aso
iadas en
onjunto por un programa. Cada nodo tiene un
nombre que, ya sea dire
ta o indire
tamente, se reere a la dire
ion de una
de sus lo
alidades de memoria. Esta ultima normalmente tiene un
ontenido,
que es el elemento a ser alma
enado en el nodo. Ademas, in
luye
ero, uno
o dos (y a ve
es mas) apuntadores o ligas. Estos apuntadores no son mas
que los nombres de otros nodos en el arbol. Los programas que usan arboles
de busqueda tienen la op
ion de pasar de un nodo a otro seguiendo tales
apuntadores.
Con
eptualmente, un arbol de busqueda se representa por
ajas y
e
has
(gura 1.1). Cada
aja representa un nodo, y
ada
e
ha representa un
apuntador. Cada nodo en el diagrama
onsiste de
ampos (espa
ios donde
puede alma
enarse un dato o apuntador), que en este
aso, son un
ampo
de datos y dos
ampos de apuntadores.
7
37
29
51
80
17
42
101
102
103
104
80
29
42
nil
105
106
107
37
5
17
102
nil
nil
nil
106
nil
nil
101
1
2
37
29
11
nil
nil
51
10
110
107
nil
109
51
derecha
108
110
izquierda
111
111
104
112
112
nil
nil
42
6
8
nil
nil
10
80
10
nil
10
nil
11
12
11
12
nil
11
12
13
13
17
13
nil
13
nil
14
14
Directamente en memoria
14
Como arreglo
que tan rapido puede ha
erse una busqueda en arboles. En este
aso, los
elementos son nombres, y el ordenamiento simplemente es alfabeti
o.
Para bus
ar en este arbol, se puede usar un algoritmo muy simple, que
toma
omo entrada el \nombre", y su salida es s o no dependiendo si tal
nombre fue hallado en el arbol. Las nota
iones item(node), left(node) y
right(node) se reeren, respe
tivamente, al elemento, al apuntador izquierdo
y al apuntador dere
ho de un nodo dado. El algoritmo
omienza en el nodo
mas alto del arbol:
9
Todos
los elementos
aqui son
<x
Todos
los elementos
aqui son
>x
Knuth
Cook
Shannon
Church
Chomsky
Hoare
Dijkstra
Codd
Michie
McCarthy
Kleene
Von Neumann
Turing
Minsky
Wiener
10
pro edure
1. found
2. node
3.
SEARCH
false
top
repeat
a)
item(node) = name
print si; node nil; found
b ) if item(node) > name
then node
right(node);
) if item(node) < name
then node
left(node);
if
then
4.
until
5.
if not
then
true;
node = nil;
found
print no;
11
DEP T H (x)
1. usex
left(x) 6= nil
then DEP T H (left(x))
2.
if
3.
if
right(x) 6= nil
DEP T H (right(x))
then
program
DEP T H (root)
El paso \use x" signi
a aqu imprimir x o pro
esarlo de alguna manera.
Si el pro
edimiento no ha al
anzado el fondo del arbol donde los apuntadores son nulos, enton
es se llama a s mismo primero des
endiendo por la
izquierda del nodo a
tual, y luego por la dere
ha. Obviamente, la llamada a
DEP T H
on el nodo izquierdo
omo argumento podra resultar inmediatamente en otra llamada igual, y as hasta llegar al fondo del arbol. De esta
forma, el algoritmo
onsiste en una sola llamada a DEP T H
on argumento
en el nodo raz (root) del arbol, lo que resulta en un barrido sistemati
o de
izquierda a dere
ha atraves de todos los nodos del arbol.
1
Lo ual sera su iente para onsiderar a todos quienes trabajamos en omputa ion
12
En mu
has apli
a
iones, los arboles de busqueda binarios no se en
uentran jos de prin
ipio a n, sino que pueden
re
er o empeque~ne
erse
omo
ualquier ar
hivo de datos. Para insertar un nuevo elemento en un arbol de
busqueda (gura 1.5), es tan solo ne
esario modi
ar levemente el algoritmo
de busqueda: tan pronto
omo la busqueda por el elemento falla, obtengase
una dire
ion nueva (no usada), y reempla
ese el apuntador a nulo en
ontrado
on tal dire
ion. En seguida se
olo
a el nuevo elemento en la dire
ion,
y se
rean dos apuntadores nulos, para formar entre los tres los
ampos de
un nuevo nodo.
35 nil nil
35
42
nil
42
nil nil
13
58
58
*
Borrar
42
47
35
30
nil
47
36
46
46
nil
54
54
35
nil nil
*
30
14
nil
36
nil nil
Cap
tulo 2
15
L
xi< xj
xi> xj
L0
L1
Por ejemplo si L tiene solo tres elementos, la gura 2.2 muestra
omo el
\arbol de de
ision" podra ser.
Para entender la signi
an
ia de los nodos terminales, es util imaginarse
que ha
e el algoritmo de ordenamiento
on todas las n! posibles versiones de
listas de un
onjunto de n elementos. Dadas dos de tales listas, supongase
que el algoritmo toma la misma rama para ambas listas en
ada nivel del
arbol, de tal modo que se llega al mismo nodo terminal en
ada
aso. Cada
vez que el algoritmo de ordenamiento toma una de
ision
omo resultado
de una
ompara
ion, se realiza una permuta
ion de la version a
tual de
la lista de entrada L. Mas aun, se realiza esta permuta
ion en
ualquier
lista que se tenga a
tualmente. Por lo tanto, si dos versiones distintas de la
lista de un mismo
onjunto terminan en el mismo nodo terminal, enton
es
ambas listas han permutado de forma identi
a. Pero esto signi
a que a lo
mas, una de esta listas ha sido ordenada
orre
tamente. La uni
a
on
lusion
que surge de todo esto es que si el algoritmo de ordenamiento se realiza
orre
tamente, el arbol de de
ision
orrespondiente debe tener al menos n!
nodos terminales.
16
L
xi< xj
xi> xj
L0
L1
L 01
L 00
L 000
L 001
L 010
L 10
L 11
L 011
2):::(n=2)
n=
Esto es tan solo otra forma de de
ir que
ualquier
ompara
ion para ordenamiento que tome una lista de n elementos
omo entrada debe realizar
al menos O(n log n)
ompara
iones en el peor de los
asos. Cualquier algoritmo que se reali
e substan
ialmente mejor que esto, en total, debe ha
er
su de
ision para ordenamiento en base a otro
riterio, o debe ser
apaz de
ha
er las
ompara
iones en paralelo.
17
18
Cap
tulo 3
Llave
TO
IT
IS
AS
AT
IF
OF
AM
BE
DO
AN
GO
SO
ASCII
124117
111124
111123
101123
101124
111106
117106
101115
102105
104117
101116
107117
123117
Direccion
17
24
23
23
24
06
06
15
05
17
16
17
17
05
06
07
10
11
14
15
16
17
23
24
25
BE
IF, OF
AM
AN
TO, DO, GO
AS, IS
IT, AT
20
21
h = modulo 23
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BE
IF, OF
AM
AN
TO, DO, GO
AS, IS
IF
SO
DO
BE
AM
TO
AN
AS
AT
IS, OF
IT
GO
Figura 3.2: Utilizando la fun
ion modulo
on primos genera una mejora
Ademas del metodo de la division, hay otro metodo util el
ual usa la
multipli
a
ion. Se basa en la observa
ion general de que si uno toma un
numero irra
ional x, y forma n de sus multiplos:
x; 2x; 3x; :::; nx
22
Sea g la razon aurea, tan
er
ana
omo el tama~no de una palabra pueda
aproximarla.
1. h
kg
2. h
3. h
hM
4. h
parte entera de h
Este
al
ulo forma el produ
to k g, toma su parte fra
ionaria, lo es
ala
a M y toma el entero mas
er
ano (menor que) el resultado.
Apli
ando este metodo al ejemplo de las llaves para palabras de dos
letras, solo se obtiene una
olision, lo
ual es el mejor desempe~no que se
pudiera esperar bajo las
ir
unstan
ias a
tuales.
Ahora bien, habiendo dis
utido algunos tipos de fun
iones hash, se retoman las te
ni
as para manejo de
olisiones. La primera involu
ra la
onstru
ion de una
adena de apuntadores desde
ada dire
ion en la
ual
o
urra una
olision, y la segunda se reere a
ambiarse a una nueva dire
ion de memoria dentro de la tabla hash en la por
ion de memoria dedi
ada
al alma
enamiento de llaves.
El en
adenamiento se ilustra en la gura 3.3 para la fun
ion hash del
ejemplo.
15
16
17
AM
AN
TO
DO
23
AS
IS
GO
h(k)
2.
if
ontenido(i) = 0
then
ontenido(i)
3.
if
ontenido(i) < k
then
4. i
5.
goto
k;
exit
p mod M
M m
pasos para lo
alizar una llave dentro de la tabla. Aun
uando este resultado
puede ser derivado teori
amente, hasta ahora solo hay eviden
ia empri
a
que el orden de una tabla hash requiere de
M
M
log
O
m
M m
pasos para una busqueda exitosa. Este lmite de
omplejidad promedio es,
sin embargo, una
onjetura. Notese que la
omplejidad de una prueba lineal
re
e mu
ho mas rapidamente que el orden supuesto de la
omplejidad
onforme m se aproxima a M .
25
26
Cap
tulo 4
Compresi
on de Texto
Las dos apli
a
iones mas importantes de las te
ni
as de
odi
a
ion son
la prote
ion y
ompresion. Cuando un mensaje es
odi
ado
omo una
adena de
eros y unos, existen te
ni
as que, mediante la inser
ion de algunos
bits extra en la
adena a trasmitir, permiten al re
eptor del mensaje des
ubrir
uales
eros o unos (si los hay) son erroneos. Ademas, hay metodos
de a
ortamiento de la
adena, de tal modo que no se requieren transmitir
mu
hos bits.
Las dos grandes areas de apli
a
ion de la teora de
odi
a
ion son tiempo
y espa
io. Las apli
a
iones de tiempo son aquellas de
omuni
a
ion tradi
ional en que un mensaje se transmite ele
troni
amente a traves del tiempo,
y la mayor preo
upa
ion es proteger el mensaje de errores. Las apli
a
iones
de espa
io involu
ran la prote
ion o
ompresion de datos durante el alma
enamiento en algun medio ele
troni
o,
omo la memoria de una
omputadora
o los dis
os magneti
os.
Si una gran
antidad de texto debe alma
enarse, o si el espa
io de alma
enamiento es importante,
onviene
omprimir el texto de alguna forma
antes de alma
enarlo. La
odi
a
ion Human ha
e esto mediante explotar
la redundan
ia en el texto fuente.
En esen
ia, la idea es muy simple. Supongase que se tiene una
adena de
texto que usa un alfabeto
on smbolos s1 , s2 , ..., s , y que la probabilidad de
que el i-esimo smbolo que apare
e en un punto aleatoriamente sele
ionado
de la
adena es p . Cada smbolo s se substituye por una
adena binaria de
n
27
L=
X
n
pl
i i
=1
Suponiendo que p1 > p2 > ::: > p , se nota que L se minimiza solo si l1 <
l2 ::: < l . Esta observa
ion forma la base para una te
ni
a que sele
iona
las
adenas binarias reales que
odi
an los varios smbolos. Supongase, por
ejemplo, que los smbolos A, B , C , D, E , F y G apare
en
on las probabilidades 0.25, 0.21, 0.18, 0.14, 0.09, 0.07 y 0.06 respe
tivamente. Notese que
la suma de todas las probabilidades suma 1.0.
i
Un arbol de Human para estos smbolos y sus probabilidades es una representa
ion visual
onveniente de la sele
ion, en la
ual las
adenas binarias
representan los smbolos (gura 4.1). Cada nodo del arbol esta etiquetado
on la suma de las probabilidades asignadas a los nodos que tiene debajo.
0
1.0
0.57
0.43
0.32
0.25
0
0.21
1
0.22
0.14
0.13
0
A
0.18
0.09
E
0.07
0.06
A la i-esima itera
ion del algoritmo, los primeros n i+1 subarboles se reordenan, de tal modo que sus probabilidades aso
iadas formen una se
uen
ia
de
re
iente. Los dgitos binarios apropiados se a~naden a los nodos terminales
de los ultimos dos subarboles en se
uen
ia reordenada, y estos se mez
lan
para formar un nuevo subarbol que se
olo
a en el arreglo subarboles.
for
1 to n
i+1
i+1
4. prob(n + i)
prob(subarboles(n
5. ligadere
ha(n + i)
6. ligaizquierda(n + i)
i+1
n
n
29
i)) + prob(subarboles(n
i + 1))
7. subarboles(n
i)
n+i
El pro
eso que se indi
a por el paso \a~nade 0 a la terminal del subarbol
n i" simplemente quiere de
ir re
orrer el (n i)-esimo subarbol y a~nadir
un 0 a
ada palabra alma
enada
omo sus nodos terminales. No se ha
e
referen
ia expl
ita de estas palabras en el algoritmo, pero son fa
ilmente
manejadas
uando el algoritmo se
onvierte en un programa. El paso \ a~nade
1 a la terminal del subarbol n i + 1" tiene un signi
ado similar.
Despues de que los apuntadores se modi
an para aso
iarse
on el nuevo
nodo n + i (siendo los nodos anteriores 1; 2; :::; n; n + 1; :::; n + i 1), el algoritmo nalmente reemplaza las dos ultimas entradas en el arreglo subarboles
por la raz del nuevo subarbol
onstruido. Cuando i llega a ser n 1, hay
un solo subarbol en todo el arreglo, y este es el arbol de Human.
Los primeros pasos de la opera
ion del algoritmo pueden ilustrarse por
el ejemplo ya presentado. Ini
ialmente hay n i + 1 = 7 subarboles que
onsisten de un nodo
ada uno. Esto se rearreglan en orden de
re
iente
respe
to a su probabilidad (gura 4.2).
1
0.25
0.21
0.18
0.14
0.09
0.07
0.06
0.25
0.21
0.18
0.14
0.13
0.09
E
6
0.07
0.06
0.25
0.22
0.21
0.18
0.14
A
8
0.13
0.09
E
6
0.07
0.06
31
Para alma
enar una pieza dada de texto utilizando la
odi
a
ion Human, se
rea una tabla en la
ual se
uenta el numero de ve
es n que el
i-esimo smbolo o
urre. La probabilidad p de la pieza de texto es simplemente n =l, donde l es la longitud de la pieza de texto. Apli
ar el algoritmo
resulta en la asigna
ion de un
odigo a
ada smbolo, as
omo en la
onstru
ion del arbol de Human. El texto se re
orre, y en una sola pasada, se
onvierte en una larga
adena binaria de
odigos
on
atenados. En seguida,
esta
adena se divide en bloques de longitud m, que se reere al tama~no de
palabra de la
omputadora parti
ular para la que el algoritmo se implementa. Cada bloque, enton
es, se
onvierte en un solo entero, y se alma
ena en
la memoria de esta forma. El arbol de Human, por su parte, se alma
ena
en otro sitio de la memoria.
i
Para re
uperar el texto que ha sido as alma
enado, se invo
a el pro
edimiento inverso, y el arbol de Human se utiliza en el ultimo paso del
pro
esamiento para los smbolos de la
adena binaria. Cada smbolo
orresponde a una sola sub-
adena, determinada por una sola busqueda desde la
raz hasta el nodo terminal pertinente del arbol.
Para evitar
onstruir un arbol
ada vez que algun texto se alma
ena,
es posible
onstruir un arbol mas general de una vez por todas, que re
eje
las probabilidades de
ada smbolo en forma mas generi
a. Por ejemplo, la
ora
ion promedio en Ingles (ignorando la puntua
ion)
ontiene los smbolos
de A a Z y un espa
io en blan
o ( ) en una lo
alidad aleatoria
on las
siguientes probabilidades
A
D
G
J
M
P
S
V
Y
0.065 B
0.032 E
0.015 H
0.001 K
0.032 N
0.015 Q
0.056 T
0.008 W
0.017 Z
0.013 C
0.104 F
0.047 I
0.005 L
0.058 O
0.001 R
0.081 U
0.018 X
0.001
32
0.022
0.021
0.058
0.032
0.064
0.049
0.023
0.001
0.172
Cap
tulo 5
B
usqueda de Cadenas
El Algoritmo Boyer-Moore
Existen algunas sutilezas en lo que pare
e ser el asunto sen
illo de bus
ar
un patron parti
ular dentro de una
adena de
ara
teres, espe
ialmente si
desea ha
erse rapidamente. Por lo tanto, la pregunta >Que tan rapido se
puede bus
ar un patron dado dentro de una
adena de n
ara
teres? tiene
una
ierta di
ultad pra
ti
a.
Por ejemplo,
omo todo minero sabe, hay mu
has formas de bus
ar ORO
en LAS MINAS. Una
antidad razonable de metodos di
tan que se busque la
adena en un orden denido, por ejemplo, de izquierda a dere
ha. Se intenta
ha
er
oin
idir el patron
on la parte mas a la izquierda de la
adena, y si la
oin
iden
ia falla, se
ontinua re
orriendo la
adena ha
ia la dere
ha hasta
que se en
uentra una
oin
iden
ia o se a
aba la
adena. Realmente, pare
e
razonable
omparar los primeros
ara
teres en el patron y la
adena en tal
orden:
LAS MINAS
ORO
Ya que O y L no
oin
iden, no es ne
esario en
ontinuar las
ompara
iones, por lo que se re
orre el patron en una unidad a la dere
ha, y se
intenta de nuevo:
33
LAS MINAS
ORO
De nuevo, los
ara
teres
omparados, A y O, no
oin
iden. Re
orriendo
de esta forma, eventualmente la
adena se a
aba, y se
on
luye que no hay
ORO en LAS MINAS. Varios editores de texto ha
en busquedas de
adenas
de esta forma.
Un algoritmo des
ubierto por R.S. Boyer y J.S. Moore en 1977 mejoran
este metodo mediante veri
ar la
oin
iden
ia de los
ara
teres de dere
ha
a izquierda en lugar de izquierda a dere
ha. Si la se
ion de la
adena no
oin
ide
on el patron, se puede re
orrer el patron por toda su longitud. De
este modo, se puede ir de:
LAS MINAS
ORO
inmediatamente a:
LAS MINAS
ORO
A primera vista, pare
e ser un dramati
o in
remento en la e
ien
ia, espe
ialmente si en el siguiente paso el patron puede saltar otros tres
ara
teres
por la misma razon. Desafortunadamente, este in
remento en la e
ien
ia
es meramente ilusorio, ya que para veri
ar si A no esta en ORO requiere
tantas
ompara
iones
omo el re
orrer ORO ha
ia adelante un espa
io
ada
vez despues de una
ompara
ion de la primera O
on
ada uno de los tres
ara
teres en la
adena.
Sin embargo, si se
onstruye una tabla (llamada tabla 1) la
ual por
ada
letra del alfabeto
ontiene su posi
ion mas a la dere
ha en el patron ORO,
enton
es solo es ne
esario bus
ar A en la tabla (lo que se puede ha
er muy
rapidamente) y notar que su entrada
orrespondiente es nula (no existe A
en ORO, lo que se simboliza por ;). Uno puede enton
es re
orrer el patron
a la dere
ha por tantos
ara
teres
omo los haya en el.
34
Ademas de la te
ni
a de re
orrer basado en tabla 1, el algoritmo BoyerMoore usa otra buena idea: supongase que en el pro
eso de ha
er
oin
idir
los
ara
teres del patron
on los
ara
teres de la
adena, los primeros m
ara
teres (de dere
ha a izquierda) se en
uentra que
oin
iden:
TRESTRISTESTIGRESTRAGABANTRIGO
TRASTRA
En tal
aso, la por
ion que
on
ide hasta ahora al nal del patron podra
bien o
urrir en
ualquier otro lado del patron. Sera enton
es inteligente
re
orrer el patron a la dere
ha solo la distan
ia entre las dos por
iones:
TRESTRISTESTIGRESTRAGABANTRIGO
TRASTRA
En el ejemplo anterior, el algoritmo Boyer-Moore podra des
ubrir rapidamente que B no esta en TRASTRA, y
omo resultado, re
orrere el patron
por otros siete
ara
teres.
El algoritmo Boyer-Moore es
orto y dire
to. Ademas de tabla 1, utiliza
otra tabla, tabla 2, que por
ada por
ion terminal del patron indi
a su re
urren
ia mas a la dere
ha y no terminal. Esta tabla puede a
ederse tambien
rapidamente.
ST RING
1. i
2.
largo
while
haya adena
a ) j an
ho
b ) if j = 0 then imprime `Coin
iden
ia en' i + 1
) if string(i) = pattern(j ) then j j 1, i i 1, goto 2.b
35
d) i
i + max(table1(string(i)); table2(j ))
F 6
G 6
37
38
Cap
tulo 6
Lo ual sera de mu ha utilidad para avisarles si uno de sus juegos resulta an elado
39
Jugador
Edad
Numero
telefonico
Entrenador
Equipo
Entrenador
Tel
efono
A. Johns
L. E
heverra
K. Or
...
Edad
22
33
25
...
Tel
efono
5432 6592
5574 6378
5522 1362
...
Equipo
Leones
Angeles
Leones
...
Tabla de En
uentros
Lo
al
Demonios
Leones
...
Visitante
Angeles
Tornados
...
D
a
Hora
Lugar
40
Cada tabla representa una rela
ion que sera usada por la base de datos.
Mas aun,
ada rela
ion es realmente un
onjunto de tuplas; por ejemplo, la
primera rela
ion
onsiste en tros de datos
on la forma:
Entrenadores:(equipo,entrenador,telefono)
Las otras rela
iones
onsisten en tuplas de 4 y 5 elementos, respe
tivamente:
Jugadores:(jugador,edad,telefono,equipo)
Juegos:(lo
al,visitante,da,hora,lugar)
Cada
olumna en una tabla (rela
ion) representa un atributo. Algunos
atributos fun
ionan
omo llaves
uando se bus
a en las tablas. En las tres
tablas anteriores, algunos atributos llave podran ser equipo, jugador, lo
al y
visitante.
Hablando matemati
amente, una rela
ion es un
onjunto de n-tuplas
(x1 ; x2 ; :::; x ) donde
ada elemento x se obtiene de un
onjunto X , y ninguna tupla se repite. Las tablas en una base de datos rela
ional satisfa
en esta
deni
ion. Como resultado, la teora matemati
a se puede apli
ar; en parti
ular, una teora llamada algebra rela
ional dene opera
iones sobre las
tablas.
n
Dos opera
iones del algebra rela
ional son sele
ion y proye
ion. La
opera
ion de sele
ion espe
i
a un sub
onjunto de renglones en una tabla
mediante una expresion booleana que involu
ra atributos. La opera
ion de
proye
ion espe
i
a un
onjunto de
olumnas en una tabla, mediante listar
los atributos involu
rados. Tambien elimina las dupli
a
iones que se tengan
de los renglones resultantes.
Para obtener una lista de telefonos de los Leones, estas dos opera
iones
son su
ientes. La sele
ion se denota por , y la proye
ion por :
jugadorytelef ono
(
equipo
Leones
(Jugadores))
jugadorytelef ono
(
entrenador
M:C ervantes
(Entrenadores ./ Jugadores))
Notese que la misma informa
ion es re
uperable en mu
has formas diferentes de una base de datos rela
ional. Ademas, no siempre se obtienen los
datos a la misma velo
idad. Por ejemplo, la opera
ion union que se invo
a
en la
onsulta anterior es inherentemente ine
iente, ya que se apli
a a dos
tablas relativamente grandes. Una forma equivalente, pero mas e
iente,
sera la siguiente:
jugadorytelef ono
(Jugadores ./ (
entrenador
M:C ervantes
(Entrenadores)))
La sele
ion
on entrenador = M. Cervantes,
uando se apli
a a Entrenadores, produ
e una sola tupla de tres elementos:
Leones, M. Cervantes, 5535 6798
La union
on Jugadores de esta tupla, enton
es, espe
i
a todos los jugadores del equipo de Leones. Una proye
ion nal elimina todos los valores
de los atributos ex
epto nombre y telefono de las tuplas resultantes.
Este ejemplo ilustra una
ara
tersti
a importante de la
lase de lenguajes de
onsulta de alto nivel que se usan en bases de datos rela
ionales, y
se basa en el algebra rela
ional. Tales lenguajes,
uando son
ompletamente
implementados, ha
en posible a los usuarios optimizar sus
onsultas. Y dado que hay mas de una manera de produ
ir
onsultas, tambien es posible
sele
ionar aquella que lo ha
e mas rapidamente.
>Como se implementan las bases de datos rela
ionales? Ya que solo se
mantienen tablas en la memoria de la
omputadora, todas las opera
iones
rela
ionales deben redu
irse a opera
iones sobre las tablas. El operador sele
ion es fa
ilmente implementado: simplemente revisa la tabla renglon por
renglon, probando una expresion booleana que dene los renglones a ser sele
ionados a partir de los valores de los atributos de los propios renglones.
La proye
ion tambien es bastante simple de programar, mediante ordenar
los renglones resultantes y eliminar los dupli
ados.
La opera
ion union se puede eje
utar mas rapidamente en tablas relativamente grandes si las tablas primero se ordenan a partir de los valores del
atributo
omun. Cuando las tablas se ordenan, pueden mez
larse mediante
el atributo
omun, valor por valor.
Hay mu
has varia
iones para el operador union. En lugar de igualdad,
puede pedirse que los atributos
omunes satisfagan otras formas de
om43
para
ion,
omo por ejemplo, desigualdades. Por otro lado, existen otros operadores ademas de la sele
ion, proye
ion y union, disponibles para las
onsultas. En la mayora de los sistemas de bases de datos rela
ionales, las
onsultas pueden formarse a partir de opera
iones
artesianas de produ
to,
union, interse
ion, y substra
ion de
onjuntos.
Hasta la de
ada de los 1970s, se introdujeron tres formas de sistemas de
bases de datos: jerarqui
a, distribuida y rela
ional. Ahora se re
ono
e que
las bases de datos rela
ionales son las que tienen la mas amplia variedad de
apli
a
iones y utilidad. Conse
uentemente, solo se men
ionan aqu tal tipo
de bases de datos.
Los lenguajes en que las
onsultas para bases de datos rela
ionales se
expresan se han desarrollado durante varias genera
iones de lenguajes, que
han ido sosti
andose y renandose. Las
onsultas que se han ilustrado hasta
ahora tienen una forma algebrai
a y pro
edural. Un lenguaje desarrollado
para expresar parti
ularmente
onsultas, llamado SQL, ha sido dise~nado
para ser usado en forma natural por el humano, y es no-pro
edural.
La
onsulta basi
a en SQL tiene la siguiente forma general:
SELECT A1 ; A2 ; :::; A
FROM R1 ; R2 ; :::R
WHERE Expresion Booleana
n
Tal
onsulta impli
a no solo la opera
ion sele
ion, sino tambien la
proye
ion, produ
to
artesiano, y union natural. Los argumentos A espe
i
an
uales atributos son parte de la
onsulta, y los argumentos R son
rela
iones. Los usuarios espe
i
an
uales rela
iones son requeridas para produ
ir una respuesta a una
onsulta. Ciertamente, la lista R1 ; :::; R dene
un produ
to
artesiano de todas las rela
iones (tablas) existentes. La expresion booleana que apare
e en la por
ion \WHERE" de la
onsulta in
luye
una variedad de operadores,
omo por ejemplo, sele
iones y uniones.
i
Ahora es posible mostrar
omo algunas de las
onsultas anteriores, expresadas usando algebra rela
ional, pueden re-expresarse usando SQL. Para
produ
ir la lista de los jugadores de los Leones y sus numeros de telefono,
es posible es
ribir:
SELECT jugador; telefono
FROM Jugadores
WHERE equipo = Leones
44
Para el ejemplo donde se involu
ran una lista de jugadores y sus numeros
telefoni
os
on el equipo entrenado por M. Cervantes, se podra obtener la
onsulta de la siguiente forma:
SELECT jugador; telefono
FROM Jugadores; Entrenadores
WHERE Entrenadores:entrenador = M:Cervantes and
Entrenadores:equipo = Jugadores:equipo
Para aquellos programadores que
onsideran a SQL (o el algebra rela
ional) redu
ido a estru
turas relativamente simples, se ofre
e el siguiente
ejemplo
on una
onsulta anidada:
SELECT jugador; telefono
FROM Jugadores
WHERE equipo In
(SELECT equipo
FROM Entrenadores
WHERE entrenador = M:Cervantes )
A
tualmente, SQL se ha
onvertido en el lenguaje de
onsultas estandar
para los sistemas de bases de datos rela
ionales de grandes
omputadoras.
45
46
Bibliograf
a
[1 A.V. Aho, J.E. Hop
roft, and J.D. Ullman. The Design and Analysis
of Computer Algorithms. Addison-Wesley, 1974.
[2 A.V. Aho, J.E. Hop
roft, and J.D. Ullman. Data Stru
tures and Algorithms. Addison-Wesley, 1983.
[3 C.J. Date. An Introdu
tion to Database Systems. Addison-Wesley, 1980.
[4 D.E. Knuth. The Art of Computer Programming, vol. 1. AddisonWesley, 1967.
[5 D.E. Knuth. The Art of Computer Programming, vol. 3. AddisonWesley, 1967.
[6 R.W. Hamming. Coding and Information Theory. Prenti
e-Hall, 1980.
[7 T.A. Standish. Data Stru
tures and Te
hniques. Addison-Wesley, 1980.
[8 J.D. Ullman. Prin
iples of Database Systems. Computer S
ien
e Press,
1980.
[9 N. Wirth. Algoritmos y Estru
turas de Datos. Prenti
e-Hall, 1987.
47