Está en la página 1de 17

Estructuras de datos

Ricardo Pea Mar


Departamento de Sistemas Informticos y Computacin Universidad Complutense de Madrid

Master en formacin de profesorado de Secundaria Informtica curso 2009-2010

R. Pea (SIC-UCM)

Estructuras de datos

Master Secundaria 09-10

1 / 17

Lecturas recomendadas

De Euclides a Java: Historia de los algoritmos y de los lenguajes de programacin. Ricardo Pea. Cap. 5. Ed. Nivola (Coleccin Ciencia Abierta), 2006. Fundamentals of Data Structures in C++. Ellis Horowitz, Sartaj Sahni, Dinesh Mehta. Computer Science Press 1995. Introduction to Algorithms. T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Partes III y V. MIT Press 2001.

R. Pea (SIC-UCM)

Estructuras de datos

Master Secundaria 09-10

2 / 17

Concepto de estructura de datos


Las estructuras de datos son un componente muy importante de la algoritmia. Se han diseado estructuras ecientes para organizar los datos tanto en memoria interna como en memoria externa. En general, los algoritmos sern ms o menos ecientes dependiendo de cmo estn organizados los datos sobre los que trabajan. A su vez, las estructuras de datos han dado lugar a ingeniosos algoritmos de manipulacin. Por tanto, algoritmos y estructuras de datos son dos aspectos, por un lado inseparables, y por otro complementarios, de una misma realidad que llamamos algoritmia. La inmensa mayora de las estructuras de datos que aparecen en los libros de texto actuales fueron concebidas en los aos 50 y 60. Todava se contina investigando en esta rea, pero las ideas innovadoras se producen actualmente con mayor lentitud.

R. Pea (SIC-UCM)

Estructuras de datos

Master Secundaria 09-10

3 / 17

Vectores y matrices
Las primeras estructuras fueron el vector unidimensional y las matrices de dos o ms dimensiones, que reejan la propiedad del hardware subyacente de acceso aleatorio a cualquier posicin de memoria en un tiempo constante. En matemticas, un vector v consiste en una secuencia de objetos subindicados v1 , . . . , vn , en los que el ndice recorre un cierto rango nito. La expresin vi , donde i {1, . . . , n}, hace referencia al elemento i-simo del vector v . En la memoria de un ordenador, un vector v se representa colocando los elementos del mismo en posiciones consecutivas de la memoria. Suponiendo que cada elemento ocupa una palabra, el acceso a vi se logra en tiempo constante: direccin(vi ) = direccin(v ) + i 1. En una matriz bidimensional a de n m elementos, la expresin aij , donde i {1, . . . , n} y j {1, . . . , m}, hace referencia al elemento situado en la la i, y en la columna j, de la matriz a. Los elementos se sitan en la memoria por orden de las. El clculo para acceder al elemento aij no es mucho ms complicado: direccin(aij ) = direccin(a) + m (i 1) + j 1
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 4 / 17

Listas enlazadas
Otra forma de almacenar una secuencia de valores es mediante una lista enlazada. En esta estructura cada celda contiene, adems de un valor, la direccin (puntero) de la celda siguiente:
lista

v1

v2

v3

Son ms exibles que los vectores porque pueden variar dinmicamente mediante la insercin o borrado de celdas en cualquier punto de la misma, debido a que sus elementos no estn necesariamente contiguos en la memoria. El inconveniente es que el acceso es estrictamente secuencial, y por tanto el coste de acceder a una celda es proporcional a su distancia al principio de la lista.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 5 / 17

Pilas
Una pila es una estructura similar a una pila de platos o de libros: el elemento que se halla en su cima es el ltimo que ha sido apilado y el primero en ser desapilado. Tambin se les llama estructuras LIFO (Last In, First Out). Para acceder a un elemento intermedio es necesario desapilar los que estn encima de l. Sus operaciones tpicas, implementables con coste O(1), son:
Operacin PilaVaca Apilar Desapilar Cima Profundidad Signicado Crea una pila vaca de elementos Pone un nuevo elemento encima de la pila Elimina la cima de la pila Consulta, sin borrarlo, el elemento que est en la cima Devuelve cuntos elementos tiene la pila

Las pilas aparecen con frecuencia en el tratamiento de expresiones, y en general de rboles (que denimos ms adelante), y las utilizan los compiladores para implementar la recursin. La primera noticia sobre esta estructura aparece en los escritos de Alan Turing relativos al diseo del computador ACE (1945).
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 6 / 17

Colas
Una cola es una estructura similar a la cola de un cine: hay un elemento en el frente de la cola que ser el primero en ser atendido y que corresponde al primero que se incorpor a la cola. El resto de los elementos forman una la que respeta el orden de llegada. Tambin se les llama estructuras FIFO (First In, First Out). Las operaciones sobre las colas, tamben implementables con coste O(1), son:
Operacin ColaVaca Encolar Atender Primero Longitud Signicado Crea una cola vaca de elementos Aade un nuevo elemento al nal de la cola Elimina el elemento que est en el frente de la cola Consulta, sin borrarlo, el elemento que est en el frente Devuelve cuntos elementos tiene la cola

Las colas tambin aparecen frecuentemente en la programacin, especialmente en el rea de los sistemas operativos (por ejemplo, una cola de impresin de trabajos) y en el de los programas de simulacin.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 7 / 17

Bsquedas por clave


En la mayora de las aplicaciones se presenta la necesidad de estructuras de datos que representen conjuntos nitos de pares k, v formados por una clave nica y un valor asociado, y que soporten las siguientes operaciones: Operacin Vaca Insertar Borrar Buscar Signicado Crea la estructura con cero pares Aade un par k, v a la estructura Elimina el par de clave k de la estructura Comprueba si par de clave k est en la estructura

Con las estructuras vistas hasta ahora se obtienen costes muy malos: Operacin Vaca Insertar Borrar Buscar Vector ordenado O(1) O(n) O(n) O(log n) Lista ordenada O(1) O(n) O(n) O(n)

R. Pea (SIC-UCM)

Estructuras de datos

Master Secundaria 09-10

8 / 17

rboles de bsqueda
rbol binario: Es un conjunto de elementos del mismo tipo que, o bien es vaco, o bien es posible distinguir uno de ellos, llamado raz, y el resto se agrupan en dos subconjuntos disjuntos, llamados respectivamente rboles izquierdo y derecho, cada uno de los cuales es un rbol binario. En un rbol binario de bsqueda no vaco, el elemento situado en la raz es mayor que todos los que estn en el subrbol izquierdo y menor que todos los que estn en el subrbol derecho. Adicionalmente, ambos subrboles son tambin rboles de bsqueda.
febrero

agosto

mayo

abril

enero

junio

octubre

diciembre

R. Pea (SIC-UCM)

Estructuras de datos

Master Secundaria 09-10

9 / 17

rboles de bsqueda (2)


La forma ms frecuentemente empleada para representar rboles binarios en la memoria del computador es mediante celdas enlazadas. Cada celda tiene un lugar para la informacin asociada al nodo y dos punteros que apuntan respectivamente a los subrboles izquierdo y derecho. Si alguno de estos es vaco, el puntero correspondiente es nulo. La mayor utilidad de los rboles es que han dado lugar a estructuras en las que es muy eciente almacenar y buscar informacin. La frmula que liga la altura h de un rbol completo con su cardinal n es n = 2h 1. Por ejemplo, si h = 10, entonces n = 1023. Si ahora hacemos h = 11, entonces n = 2047, es decir por cada unidad que crece la altura, el cardinal aproximadamente se duplica. Inversamente, si n = 106 , h es del orden de log n, es decir h 20. En un rbol de bsqueda completo, las operaciones Insertar, Borrar y Buscar se pueden implementar con un coste proporcional a la altura del rbol, es decir a log n. El problema es que, tras varias operaciones de insercin y borrado, el rbol dejar de ser completo.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 10 / 17

rboles de bsqueda equilibrados


Los rboles de bsqueda fueron usados por numerosos autores durante los aos 50 pero no se conoce su origen exacto. A veces los rboles de bsqueda se construyen una sola vez, con un conjunto de claves que no va a cambiar durante la ejecucin, y luego se usan para buscar en ellos. Entonces es conveniente ordenar las claves y construir un rbol de bsqueda con una altura lo ms pequea posible. Pero el reto consiste en construir rboles de bsqueda con un alto grado de dinamismo, en los que se intercalan bsquedas con inserciones y borrados, y mantenerlos todo el tiempo de altura mnima. Quienes hicieron frente al desafo fueron los cientcos soviticos G. M. Adelson-Velsky y E. M. Landis, que en 1962 presentaron sus rboles de bsqueda equilibrados. En su honor, tales rboles se conocen desde entonces como rboles AVL.

R. Pea (SIC-UCM)

Estructuras de datos

Master Secundaria 09-10

11 / 17

rboles de bsqueda equilibrados (2)


Sustituyeron el requisito de altura mnima, por otro menos exigente de equilibrio: la diferencia de alturas entre los hijos izquierdo y derecho de cada subrbol ha de ser a lo sumo uno.
11 4 2 5 9 13 20

Es decir, se permite cierto desequilibrio, pero no tanto como para invalidar que la altura sea proporcional al logaritmo del cardinal. Programaron las operaciones de insercin y borrado para que detectaran los excesivos desequilibrios y los corrigieran mediante conjunto de rotaciones, cada una de coste constante. Una insercin provoca a lo sumo una rotacin, mientras que un borrado puede desencadenar varias, pero nunca ms que la altura del rbol. Por tanto, el coste total se mantiene logartmico.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 12 / 17

Otros rboles equilibrados


Los rboles AVL desencadenaron la bsqueda de otras estructuras equilibradas con similares propiedades. En 1970, John Hopcroft desarroll una variante de rbol equilibrado llamado rbol 2-3. En las operaciones de insercin y borrado se mantiene invariante que todos los caminos desde la raz a las hojas tienen la misma longitud. En un rbol 2-3 pueden coexistir nodos-2 y nodos-3. Un nodo-2 es similar a un nodo de un rbol binario convencional. Un nodo-3, en cambio, almacena dos races en lugar de una y tiene tres hijos en lugar de dos. Al insertar un nuevo elemento, algn nodo-2 en el camino de insercin puede convertirse en un nodo-3. Similarmente, al borrar un elemento, algn nodo-3 puede pasar a ser un nodo-2. Posteriormente se han desarrollado otras estruturas semejantes, tales como los rboles rojinegros (R. Bayer, 1972) y los B-rboles (R. Bayer y E. McCreight, 1972). Las tres operaciones bsicas de estas estructuras arborescentes tienen costes en O(log n).
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 13 / 17

Colas de prioridad
Otras estructuras que aparecen en numerosos aplicaciones responden a la siguiente especicacin: Operacin Mnimo Insertar BorraMnimo Vaco? Signicado Consulta, sin borrarlo, el valor mnimo (el primero) Aade un elemento a la cola Elimina el valor mnimo (corresponde a Atender) Informa de si la cola est vaca o no

Es decir, los elementos se insertan aleatoriamente pero la recuperacin de los mismos se hace de menor a mayor. Esta cola de prioridad se denomina de mnimos. Si entendemos que las prioridades altas corresponden a valores altos, entonces los elementos se recuperan de mayor a menor. Dicha cola se denomina de mximos y en ella las operaciones Mnimo y BorraMnimo se llaman respectivamente Mximo y BorraMximo. El funcionamiento de ambas variantes es totalmente simtrico.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 14 / 17

Montculos
Los montculos son implementaciones ecientes de las colas de prioridad. Un montculo es un rbol binario con una propiedad invariante:
o bien es el rbol vaco, o bien la raz es menor o igual que el resto de los elementos y,

adicionalmente, los hijos izquierdo y derecho son montculos.


11 13 21 19 32 12

Ello implica que el menor elemento de la estructura se encuentra en la raz, y se puede consultar con coste constante.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 15 / 17

Montculos (2)
Para aadir un elemento, se aade como una hoja del rbol y despus se la hace otar, intercambindola con sus ancestros, hasta que se restaura la propiedad anterior. En el peor caso, el elemento insertado se compara con tantos elementos como la altura del rbol. Si este es de altura mnima, el coste estar en O(log n). Para borrar el mnimo, se reemplaza el elemento en la raz por una de las hojas y a continuacin se hunde esta, intercambindola con el menor de sus hijos, hasta que se restaura la propiedad anterior. De nuevo, el coste estar en O(log n). J. W. J. Williams (1964) se las ingeni para representar un rbol binario casi completo sobre un vector, haciendo corresponder la primera posicin a la raz, y el resto de las posiciones consecutivas del vector a los dems elementos del rbol, segn se recorre este por niveles. Para pasar del ndice de un nodo al de su nodo padre se divide por 2. El algoritmo heapsort se basa en convertir un vector en un montculo de mximos (con coste O(n)) y despus reiteradamente extraer el mximo (con coste O(n log n)).
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 16 / 17

Montculos (3)
En 1972, C. Crane propuso otra variante de montculos basada en la representacin enlazada de rboles binarios, los montculos zurdos. Ofrecen las mismas operaciones anteriores, con idnticos costes, y una operacin extra, Fundir difcil de implementar con vectores que, dados dos montculos con n1 y n2 elementos respectivamente, forma con ellos un solo montculo en un tiempo en O(log(n1 + n2 )). Los montculos binomiales, de J. Vuillemin en 1978, permiten insertar con un coste amortizado en O(1). Los montculos de Fibonacci de M. Fredman y R. Tarjan en 1987 tienen insercin con un coste O(1) en el caso peor y adems ofrecen una operacin de modicacin de la prioridad con un coste amortizado en O(1). Los montculos MinMax, de M. Atkinson, J. Sack, N. Santoro y T. Strothotte en 1986, y los dobles montculos, de S. Carlsson en 1987, permiten acceder y borrar tanto el mnimo como el mximo elemento. Estos montculos seran los equivalentes en las colas de prioridad a las dobles colas FIFO.
R. Pea (SIC-UCM) Estructuras de datos Master Secundaria 09-10 17 / 17

También podría gustarte