Académique Documents
Professionnel Documents
Culture Documents
tJ INTRODUCCION
Est~ capitulo introduce_el tema .de las estructuras de datos y presenta una panoramica del
contemd? del texto. Defimremos la terminologia y conceptos basicos y aportaremos ejemplos
significahvos. Darem~s una vision general de la organizaci6n de datos, junto con algunas
estructm~as de los m1smos y de las operaciones realizadas con esas estructuras. Por ultimo,
introduciremos el concepto ~e algoritmo y su complejidad y discutiremos la relaci6n espacio-
tiempo a que puede dar lugar l_a elecci6n de una estructura de datos y un algoritmo, particulares
para un determinado problema.
EJEMPLO 1.1
(a) Supongamos que un vendedor de autom6viles lleva un archivo de inventario donde cada campo <lei
mismo contiene los datos siguientes: ,t
Aunque hay cuatro unidades de dato, nombre y direccion pueden ser grupos de unidades. Aqui el campo
de nombre es una clave primaria. Notese que la direccion y el numero de telefono no sirven como clave
primaria, puesto que algunos miembros pueden pertenecer a la misma familia y tener la misma direcci6n
y telefono.
Los registros pueden clasificarse por su longitud. Un archivo puede tener registros de longitud
fija Q variable. En los registros de longitud fija, todos ellos contienen los mismos elementos con la
misma cantidad de espacio asignado a cada uno. En los registros de longitud variable los registros
del archivo pueden tener distintas longitudes. Por ejemplo, los regjstros de estudiantes normalmen-
te tienen 1ongitud variable, puesto que. estudiantes diferentes pueden realizar cursos distintos.
Normalmente los registros de longitud variable tienen unas longitudes minima y maxima
La organizaci6n anterior de datos en archivos, registros y campos, pueden no ser suficiente para
procesar eficientemente los datos que contienen.· Por esta raz6n los datos suelen ser organizados en
tipos de estructuras mas complejas. El estudio de estas estructuras de datos, que constituye el
objetivo de este texto, incluye los siguientes pasos:
(3) Analisis cuantitativo de la estructura, que incluye el calculo de la memori~ necesaria para
almacenar Ia misma y el tiempo necesario para procesarla.
Los datos pueden organizarse en muchas formas di.ferentes; ·el modelo matematico o logico de
una organizaci6n particular de datos recibe el nombre de estructura de datos. La eleccion de tin
modelo de datos es particular, depende de . dos cuestiories. Primero, debe ser lo suficientemente
complejo para mostrarnos la relacion entre los datos y lo q ue representan. Por el contrario, la
estructura debe ser lo suficientemente simple para que los datos puedan ser procesados de forma_
eficiente cuando sea necesario. Esta secci6n nos introduce en algunas estructuras de datos que ·
seran estudiadas en detalle a lo largo del texto.
Arravs
.,
. La estructura de datos mas simple es _el array lineal (o unidimensional). Un array lineal es una
hsta de un numero finito de datos similares, ·referenciados por media de un conjunto den numeros
. 1, 2, 3, ..., ~-, s·1 des1gnamos
consecutivos' normalmente · e1 array por la letra A, los elementos de A
1os denotamos por med10 de la notac1on subindicada .
o por corchetes \
A[l], A[2], A[3], ..., A[N]
El array lineal ESTUDIANTES consta de los nombres de seis estudiantes · de la Figura 1-1. Aqui
ESTUDIANTE 1 representa a John Brown, ESTUDIANTE 2 a Sandra Gold, y asi sucesivamente.
'---.___,,
ESTUDIANTE
,1 John Brown
2 Sandra Gold
3 Tom Jones
4 June Kelly
5 Mary Reed
6 Alan Smith
Fig. 1-1
Listas enlazadas
Introduciremos las listas enlazadas a traves de un ejemplo. Supongamos que una agencia de
corredores de bolsa mantiene un archivo donde cada registro contiene el nombre de un cliente y su
corredor o ·corredora correspondiente y ·supongamos que el archivo contiene los datos que
aparecen _en la Figura_· 1-3. Claramente el archivo puede ser almacenado en el compu~ador por
medio de dicha tabla compuesta por dos columnas con nueve i:i.ombres cada una. Sin embargo,
esta puede no ser la forma mas util de almacenar los datos, como se demuestra a continuaci6n.
Cliente . Corredor
1 A dams Smith
2 Brown Ray
3 Clark Jones
4 Drew R ay
5 Evans Smith
6 Fanner Jones
7 Geller Ray
8 Hill S1nith
9 Infeld Ray
Fig. 1-3
Arboles
Los datos presentan frecuentemente relaciones de jerarquia entre ellos. La estructura de datos
que refleja esta relaci6n recibe el nombre de grafo en arbol o simplemente arbol. Estos seran
definidos y analizados con detalle en el Capitulo 7. Aqui indicamos algunas de sus propiedades
basicas por medio de dos ejemplos.
Mientras que un archivo puede representarse mediante uno o mas arrays, un registro, donde indicamos
grupos de items e items elementales, pueden describirse mejor mediante una estructura de arbol. Por ejemplo,
un registro de empleados puede contener los siguientes items de datos:
Sin embargo, nombre puede ser un grupo de ite1ns compuesto por los subitems primer apellido, segundo
apellido y nombre de pila. Tambien direcci6n puede estar constituida por los subitems calle y area donde a su
vez esta ultima puede estar compuesta de los subitems ciudad, provincia y distrito postal. Esta estructura
jenirquica se representa en Ia Figura 1- 7(a). Otra forma de representar Ia estructura de arbol es mediante
niveles como en la Figura l-7(b).
CAP. 1]
INTRODUCCION Y DESCRIPCION GENERAL 7
Empleado
1.e,
/I\2._0
apellido apellido /""/~
Nombre Calle Area
01 Empleado
02 N umero Seguridad Socia l
02 Nombre
03 1.cr apellido
03 2." apellido
03 Nombre P.
02 Direcci6n
03 Ca lle
03 Area
04 Ciud ad
04 Provincia
04 C6d. postal
02 Edad
02 Sueldo
02 Subordinados
(b)
Fig. 1-7
(2x + y) (a - 7b) 3
Usando la flecha . .vertical (t) para la exponenciaci6n Y el asterisco (*) para la multiplicaci6n, podemos
representar esta expresi6n mediante el arbol de la Figura 1-8. Observese que el orden en que deben realizarse
las operaciones quedan reflejados en el diagrama: la exponenciaci6n debe realizarse despues de la resta, Y la
multiplicaci6n situada en la cuspide del arbol debe ejecutarse la ultima.
Existen otras estructuras de datos, ademas de los arrays, listas enlazadas y arboles, que tambien
estudiaremos. Algunas de ellas las describiremos brevement,e a continuaci6n.
(a) Pila. Una pila, tambien denominada sistema ultimo-dentro primero-fuera (LIFO), es una
lista lineal en la cual las inserciones y extracciones tienen lugar solo por un extrema
llamado cuspide. Esta estructura es similar en su operaci6n a una pila de platos como los
de la Figura 1-9(a). En ella los platos son siempre afiadidos o. retirados por la cuspide de la
m1sma.
Boston•
------======•/N. York
Filadelfia • - - - -
Los Angeles •
Fig. 1-9
Los datos q ue contie~e una estructura se procesan por medio de determinadas operaciones. De
hecho, generalmente eleg1mos una determinada estructura de datos, en funci6n de las operaciones
que realizam~s sobre ella. Esta secci6n introduce al lector en algunas de las operaciones que se
realizan con mas frecuencia. ·
Las cuatro operaciones siguientes son las· mas estudiadas en este texto:
(1) . Recorrido: Implica el accede~ a cada registro una unica vez aunque uno o mas items del
registro ~ean procesados. (Este acceso y procesamiento tambien se denomina a veces por el
termino «visitar» el registro.)
(2) Busqueda: Implica la localizaci6n de un registro caracterizado por una determinada clave
o tambien el acceso a todos los registros que cumplen una o mas condiciones.
(3) lnserci6n: .C uando afiadimos nuevos registros a la estructura.
(4) Eliminaci6n: Operaci6n de borrado de un registro de la estructura.
A menudo dos o mas de estas operaciones se usan conjuntamente; por ejemplo, cuando queremos
eliminar un registro con una clave determinada. Para ello deberemos buscarlo primero y despues
eliminarlo.
Tambien consideraremos las siguientes operaciones, que se usan en determinadas circunstan-
c1as:
(2) M ezcla: Es la operaci6n de combinar dos archivos previamente ordenados en uno unico
que tambien lo esta.
1.5 ALGORITMOS: COMPLEJIDAD Y RELACION TIEMPO-ESPACIO
Un algoritmo es una secuencia de operaciones o pasos perfectamente definidos que conducen a
la resoluci6n de un problema. Uno de los principales objetivos de este texto es el de desarr~Ilar
algoritmos que manipulen eficientemente los datos. El tiempo y el espacio utilizados en ell~ ,m1den
la mayor o menor eficacia de un algoritmo. La complejidad de un algoritmo es aquella func1on que
da el tiempo y /o el espacio utilizado por el algoritmo en funci6n del tamafio de la entrada. (El
concepto de complejidad sera desarroIJado en el Capitulo 2.) .
Cada algoritmo guarda una estrecha relaci6n con una estructura de datos. Por ello, no s1empre
es posible utilizar el algoritmo mas eficiente, puesto que la elecci6n de las estructuras de datos
depende de varias cuestiones, incluida la de que tipo de datos administramos y la frecuencia con
que se realizan diferentes operaciones sobre ellos. Asi, deberemos encontrar una situaci6n de
compromiso entre tiempo y espacio utilizados. En general, si aumentamos el espacio necesario
para almacenar los datos, conseguiremos un mejor rendimiento en el tiempo y viceversa. Estas
ideas quedan reflejadas en los siguientes ejemplos.
Algoritmos de busqueda
Considerese el archivo del Ejemplo 1.6, en el que cada registro contiene, entre otros datos, el
nombre y el numero de telefono de sus miembros. Supongamos que dado el nombre de un
miembro queremos conocer su numero de telefono. Una forma de hacer esto es buscarlo
secuencialmente en el archivo, es decir, aplicando el siguiente algoritmo:
Busqueda secuencial: Recorre cada registro del archivo, uno a uno, hasta encontrar el nombre
buscado y a partir de el el correspondiente numero de telefono.
Es evidente que el tiempo necesario para ejecutar el algoritmo es proporcional al numero de
comparaciones realizadas. Tambien, suponiendo que todos 1-os nombres del archivo tienen la
misma pr?babiJidad de _ser buscados en ~ determinado momento, es claro que el promedio de
comparac1ones _que re.ahza~?s para esta ,busqueda es n/~, do~de n es el numero de registros del
arch1vo. Es d~CJr, la compleJtdad. de_ la busqueda, se~ue~c1al. v1ene dada por C(n) = n/2.
Este algontmo puede resultar mviable en la practtca s1 la hsta consta de miles de nombres, como
en una guia de telefonos. Sin embargo, si los nombres· estan ordenados alfabeticamente podremos
utilizar un algoritmo mas eficiente, denominado de busqueda binaria. Este algoritmo ~e discutira
con mas deta11e en el Capitulo 4, pero ahora describiremos brevemente su forn1 a de actuar.
Bilsq ueda binaria: Comparar el nombre buscado 'con el que se encuentra en mitad de Ia lista.
Con ello dividimos la lista en dos partes y determinamos en cual de las dos se
encuentra el nombre buscado. Nuevamente repetimos el mismo proceso en la
parte seleccionada hasta que encontremos el nombre deseado.
Ejemplo de la relacion espacio-tiempo
Supongamos que un archivo contiene en sus registros nombres, numeros de Ia Seguridad Social
y mas informacion adicional. Ordenar el archivo alfabeticamente y utilizar la busqueda binaria es
una buen metodo si lo que deseamos es encontrar el registro que contiene un determinado nombre.
Por el contrario, supongamos que lo que conocemos es el numero de la Seguridad Social. En este
caso debemos realizar una busqueda secuencial en todo el archivo, lo que implica gran cantidad de
tiempo cuando el archivo es largo. lC6mo resolver el problema? Una forma es tener el archivo igual,
pero ordenado de acuerdo al numero de Seguridad Social. Esta soluci6n en cambio duplica el
espacio necesario para el almacenamiento de datos. Otra soluci6n representada en la Figura 1-10 es
la de tener el archivo principal ordenado de acuerdo al numero de Seguridad Social y adi-
cionalmente un array auxiliar coil dos ,columnas, la primer'a de ellas conteniendo.la lista alfabetica y
la segunda punteros que indican la direcci6n de Jos registros correspondiente en el archivo principal.
Esta forma de resolver el problema es una de las mas usadas, puesto que el espacio adicional
necesario es minimo frente a la informaci6n extra que proporciona.
Fig. 1-10
Problemas resueltos
TERMINOLOGIA BASICA
1.1 Un profesor posee una lista de alumnos que contiene Ios datos siguientes de cada uno:
Nombre, Especialidad, Numero de estudiante, Notas parciales, Nota final
(a) Indicar cuales son las entidades, atributos y conjunto de entidades.
(b) Describir los valores de los carnpos, registro y archivo.
(c ) lQue atributos pueden servir como claves primarias de la lista?
(a) Cada estudiante es una entidad, y el colectivo de estudiantes es el conjunto de entidades. El
nombre, especialidad, etc., de los estudiantes son Jos atributos.
(b) Los valores de los campos son los valores asignados a los · atributos; por ejemplo, nombres
actuales, notas de parciales, etc. Los valores de los campos para cada alumno constit uyen un
registro, y el conjunto de todos los registros de alumnos es un archivo.
(c ) Tanto nombre como numero de estudiante pueden servir como clave primaria, puesto que arnbas
deter·m inan un unico registro de estudiante. Normalmente el profesor utiliza el non1bre como
clave primaria, aunque la secretaria puede t,1tilizar el nun1ero para elJo.
ESTRUCTURAS DE DA TOS Y SUS OPERACIONES ASOCIADAS
1.5 Describir brevemente las operaciones de (a) recorrido, (b) ordenaci6n y (c) busqueda.
(a) Consisten en acceder y procesar un registro una sola vez.
(b) Colocar los datos en un orden determinado.
(c) Consist-en en encontrar la localizaci6n de un registro con una clave o con claves determinadas.
1.7 Sea el array NOMBRE de la Figura 1-1 1, que esta ordenado alfabeticamente.
(a) lCual es el contenido de NOMBRE[2], NOM BRE [4] y NOMBRE[7]?
(b) Supongamos que queremos insertar el nombre Davis en el array. lCuantos elementos
del mismo deberemos mover para realizar esta operaci6n?
(c) Ahora cjueremos eliminar el noh1bre Gupta de la lista. l Cuantos nombres es necesario
mover despues de esta operaci6n?
NOMBRE
1 Adams
2 Clark
3 Evans
4 Gupta
5 Jones
6 Lane
7 Pace
8 Smith
Fig. 1-11
,CO~'I PL~IDAD; RELACION ESPACIO-TIEMPO
IJ3 Describir brevemente los conceptos (a) con1plejidad de un algoritmo y (b) relaci6n espacio-
tiempo del mismo.
(a) La complejidad de un algoritmo es una funci6n f (n) que 111ide el tiempo y/o espacio utilizado por
el mismo en funci6n del tamano de la -entrada n.
(b) La relaci6n eipacio-tiempo se refleja al cornpro1niso encontrado entre el tiempo de ejecuci6n de
un aJgoritmo, para procesar una determ.inada estructura de datos, ·y la cantidad de memoria
utilizada en el aln1acenamiento de la rnis1na.