Vous êtes sur la page 1sur 15

lntroducci6n y ·descripci6n ·general

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.

1.2 TERMINOLOGIA BASICA; ORGANIZACION ELEMENTAL DE LOS DATOS •

La palabra datg s hace referencia a valores simples o a conjuntos de valores, Denominamos


elemento a una unidad basica de valores. A aquellos elementos que pueden dividirse en otros
reciben el nombre de grupo de elementos. Par el contrario, los no subdivisibles reciben el nombre de
elementos simples. Par ejemplo, el nombre de un empleado puede ser dividido en tres subunidades
-nombre, primer apellido y segundo apellido-, pero el numero de seguridad social normalmente
debe ser tratado coma ·una unidad simple.
Las colecciones de datos se organizan frecue·ntemente jerarquicamente en campos, registros y
archivos. Para hacer estos terminos mas precisos, introduciremos alguna terminologia adicional.
Una entidad es alga q ue posee ciertos atributos o propiedades a las cuales se les pueden asignar
valores. Estos valores pueden ser n umericos o no. Por ejemplo, los siguientes son posibles atributos
de fa entidad empleado de la empresa con los correspondientes valores:

Atributos: Nom bre; Edad; Sexo; Numer() Seguridad Social


Valores: JOHN BROWN; 34; V· 134-2 3-5533
'
Entidades con atributos iguales (por ejemplo, todos los empleados de · Ia empresa) forman un
conjunto de entidades. Cada atributo de un conjunto de entidades tiene un rango de valores, que es
el conjunto de valores posibles que p ueden asignarsele a ese atributo.
El termino «informaci6n» a veces se usa al referirse a datos con atributos determinados4
La forma en que los datos se organizan en Ia jerarquia: campos, tegistros y archivo_s refleja la
relaci6n entre atributos, entidades y conjunto de entidades. Asi un campo es una unidad elemental
de informaci6n que representa· un atributo de una entidad, un registro es ·una coleccion de campos
de una entidad y un archivo es una colecci6n de registros de las entidades contenidas en un
conjunto de entidades.
Cada registro de un archivo puede contener muchos campos elementales, aunque el valor de un
determinado campo puede determinar -univocamente el registro dentro del archivo. Esfe campo K
recibe el nombre de clave primaria y los valores k 1 , k 2 , ... de dichos campos reciben el nombre de
claves o valores de clave.

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

Numero de serie, Tipo, Afio, Precio, Accesorios


EJ ca mpo de nt'1m ero de serie pued e ser vir como clave primaria para el archivo, puesto que cada
autom6viJ tiene un tmico numero de serie.
(b) Supongamos que una organizaci6n mantiene un archivo de miembros donde cada registro contiene los
siguientes datos:

Nombre, Direccion, Numero de telefono, Cuotas que debe

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:

(1) Descripcion 16gica o matematica de la estructura.


(2) Implementacion de la misma en un computador.
I

(3) Analisis cuantitativo de la estructura, que incluye el calculo de la memori~ necesaria para
almacenar Ia misma y el tiempo necesario para procesarla.

En la secci6n siguiente (Secc. 1.3) introduci1nos algunas de estas estructuras.


Comentario: Los puntos segundo y tercero en el estudio de las estructuras de datos dependen
de donde esten estas almacenadas: (a) en Ia memoria principal (primaria) del computador o (b) en
la memoria secundaria (externa). Este texto estudia fundamentalmente el primer caso. Asumimos
por tanto -que dada una direccion de memoria, el tiempo necesario para acceder a su contenido no
depende de 1~ ~irecc~~n en part~cular ode aquellas otras accedidas previamente. El segundo caso,
11,am~do admm1strac1on de arch1vos o administraci6n de bases de datos, constituye una materia por
s1 m1sma Y se encuentra fuera de los objetivos de este texto.
l.3 ESTRUCTURAS DE DATOS

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 a traves de notaci6n parentizada

A(l), A(2), A(3), ... , A(N)

o por corchetes \
A[l], A[2], A[3], ..., A[N]

Donde el numero K en A[K] recibe el nombre de indice y A[KJ el de variable subindicada.


Comentario: La primera de las notaciones, utilizando letras minusculas y subindices, es la mas
usada por los matematicos. La notacion· parentizada o con corchetes se utiliza habitualmente
cuando el nombre del array consta de mas de una letra o este aparece en el texto de un algoritmo.
Cuando utilicemos esta notaci6n, tanto el nombre como el indice se escribiran en letras
mayusculas, como en el caso del array A y el indice n. No obstante, en algunos casos utilizaremos
letra cursiva para el nomb1re del array y el subindice como en el caso del array a. · En general la
primera notaci6n es la mas utilizada en textos relacionados con las ciencias de la computaci6n,
mientras que la segunda se utiliza en descripciones matematicas.
Sin embargo, las notaciones parentizadas o con corchetes son las que se suelen usar para ser
utilizadas por los computadores, puesto que los lenguajes de programaci6n no suelen permitir
letras minusculas con subindices. (Tambien seran usadas en este texto cuestiones relativas a
representaci6n superindicada para algunas estructuras de datos; no obstante,.evitaremos usar letras
minusculas.)
EJEMPLO 1.2

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.

EJEMPLO 1.4 Estructura de registro

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:

Numero Seguridad Social, Nombre, Direcci6n, Sueldo, Subordinados

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

Numero Seg. Soc. Nombre


/\ Direcci6n Edad
------------
Sueldo Subordinados

1.e,
/I\2._0
apellido apellido /""/~
Nombre Calle Area

Ciudad Provincia Cod. postal


(a)

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

EJEMPLO 1.5 Expresiones algebraicas

Sea la expresi6n algebraica

(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.

(a) Pila de platos. (b) ·cola de espera de un autobus.

Boston•

------======•/N. York
Filadelfia • - - - -

Los Angeles •

(c) Vuelos de unas aerolineas.

Fig. 1-9

(b) Cola . Una cola tamb' ' d · d • .


una lista lineal 'en la ien enomma ~ s1stema pn_mero~dentro primero-fuera (FIFO), es
«frente» Y las . _cual las extracc1ones se reahzan s1empre por un extremo llamado
mserc1ones por el t • '
estructura opera de 1 • '" ex remo contrano llamado «final» de la lista. Esta
. a m1sma ,orma que un d ,
Figura l-9(b): Ia primera grupo ~ personas esperando el autobus,
a nalogia es.con una fila de ~:s~na en la cola es la pnmera en subir al autobus. Otra
el primero y asi sucesivamen~. es esperao d o a atravesar un cruce, el primer coche pasara
(c) Grafos. Los datos contienen en 1 . .
necesariamente jerarquica. p 0 'r e· a 7unos casos, relac1ones entre ellos que no es
0
vuelos solo entre las ciudades con~:~, ' supo,ngamos que unas lineas aereas realizan
datos q ue refleja esta relaci6n recibas -Pf r lmeas en la Figura l-9(c). La estructura de
formalmente Y estudiados en el Capitul~ ;_ nombre de grafo. Estos seran definidos
1.4 OPERACIONES CON ESTRUCTURAS DE DATOS

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:

(1) Ordenaci6n: Es la operaci6n de clasificar los _registros conforme a un orden logico


determinado (por ejemplo, alfabeticamente, de acuerdo a una clave de NOMBRE, _o
numerica, de acuerdo a alguna clave de NUMERO, tal como numero de seguridad social
ode inventario). )

(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.

Nombre Puntero Num. Seg. Soc. Nombre Datos adicionales

Abbey , Gregory 2.,_ 013-44-5555 Davis , Earl xxxxxx:xxxxxxxx


2 Brown, John 4 025-55-6198 Abbey, Gregory xxxxxxxxxxxxxx
3 Carey, Mary 546. 027-73-3961 Lane , Alice xxxxxxxxxxxxxx
4 Davis, Earl 1 174-62-3485 Brown, John xxxxxxxxxxxxxx
5 Ellis, Susan 76 182-74-6398 Smith, Mary xxxxxxxxxxxxxx
"

Array auxiliar Archivo principal .


ordenado alfabeticamente ,
ordenado por el numero ed Seguridad Social

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.6 Describir brevemente las operaciones de inserci6n y eliminaci6n o extracci6n.


(a) Consiste en afiadir nuevos datos a una estructura que en general tiene sus elementos ordenados.
(b) Es la operaci6n mediante la cual eliminamos elementos de una estructura de datos.

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.

Vous aimerez peut-être aussi