You are on page 1of 40

Estructuras de datos

Listas y rboles
Dra. Elisa Schaeffer
elisa.schaeffer@gmail.com

PISIS / FIME / UANL

Listas y arboles p.

Listas

Listas son estructuras un poco ms avanzadas que puros arreglos, como tpicamente permiten ajustes naturales de su capacidad. Una lista enlazada (ingls: linked list) consiste de elementos que todos contengan adems de su dato, un puntero al elemento siguiente.

Listas y arboles p.

Aadir elementos

Si el orden de los elementos no est activamente mantenido, es fcil agregar un elemento en la lista: Crear el elemento nuevo. Inicializar su puntero del siguiente elemento a nulo.

Hacer que el puntero del siguiente del ultimo elemento actualmente en la lista punte al elemento nuevo.

Listas y arboles p.

Acceso a la lista

Para acceder la lista, hay que mantener un puntero al primer elemento. Si tambin se mantiene un puntero al ltimo elemento, aadir elementos cuesta O (1) unidades de tiempo, mientras solamente utilizando un puntero al comienzo, se necesita tiempo O (n), donde n es el nmero de elementos en la lista.

Listas y arboles p.

Mantener el orden

Si uno quiere mantener el orden mientras realizando inserciones y eliminaciones, hay que primero ubicar el elemento anterior al punto de operacin en la lista: para insertar un elemento nuevo v inmediatamente despus del elemento u actualmente en la lista, hay que ajustar los punteros tal que el puntero del siguiente v.sig de v tenga el valor de u.sig, despus de que se cambia el valor de u.sig a puntar a v; para eliminar un elemento v, el elemento anterior siendo u, primero hay que asignar u.sig := v.sig y despus simplemente eliminar v, a que ya no hay referencia de la lista.
Listas y arboles p.

Listas doblemente enlazadas

Una lista doblemente enlazada tiene adems en cada elemento un enlace al elemento anterior. Su mantenimiento es un poco ms laborioso por tener que actualizar ms punteros por operacin, pero hay aplicaciones en las cuales su ecacia es mejor. Con listas, ganamos tamao dinmico, pero bsquedas y consultas de elementos ahora tienen costo O (n) mientras con arreglos tenemos acceso en tiempo O (1) y tamao rgido.

Listas y arboles p.

Pilas

Una pila (ingls: stack) es una lista especial donde todas las operaciones estn con el primer elemento de la lista. Se aade al frente y remueve del frente. Implementar como una lista enlazada manteniendo un puntero p al primer elemento.

Al anadir un elemento

nuevo v :

v.sig := p p := v

Listas y arboles p.

Colas

Una cola (ingls: queue) es una estructura donde los elementos nuevos llegan al nal, pero el procesamiento se hace desde el primer elemento. Tambin colas estn fcilmente implementadas como listas enlazadas, manteniendo un puntero al comienzo de la cola y otro al nal.

Listas y arboles p.

Ordenacin de listas

Para ordenar una lista L = [1 , 2 , . . . , n ] en orden creciente, necesitamos una subrutina:

insertar(L, i, x) busca desde el comienzo la


posicin i en la lista L por un elemento j x haca la primera posicin, tal que j i.
Al encontrar tal elemento, el elemento x estar insertada en la posicin justo despus del elemento j . Si no se encuentra un elemento as, se inserta x al comienzo de la lista.

Listas y arboles p.

Ordenacin por insercin

El procedimiento de la ordenacin empieza con el primer elemento de la lista y progresa con una variable indicadora de posicin i hasta el ltimo elemento. Para cada elemento, quitamos i de la lista y llamamos la subrutina insertar(L, i, x) para volver a guardarlo.

Listas y arboles p. 1

Guardando rboles

Un arbola de n vrtices etiquetados 1, 2, . . . , n se puede guardar en un arreglo a[] de n posiciones, donde el valor de a[i] es la etiqueta del vrtice padre del vrtice i.
Otra opcin es guardar en cada elemento un puntero al vrtice padre (y posiblemente del padre una estructura de punteros a sus hijos).
a

un grafo conexo simple no cclico

Listas y arboles p. 1

rboles son listas estructuradas

rboles son como ndices de bases de datos.


Cada elemento consiste de una clave (no necesariamente nico) y un dato. rboles permiten realizar ecientemente

inserciones, eliminaciones, y busquedas.


Es necesario que exista un orden sobre el espacio de las claves de los elementos.

Listas y arboles p. 1

rboles binarios En un arbol binario, cada vrtice que no es una hoja tiene al mximo dos vrtices hijos: su hijo izquierdo y su hijo derecho.
la raz

hijo izquierdo

hijo derecho

ramo derecho de la raz

Si ningn vrtice tiene solamente un hijo, se dice que el rbol est lleno.

Listas y arboles p. 1

rboles cm ndices

Su uso como ndices es relativamente fcil tambin para bases de datos muy grandes, como diferentes ramos y a partes del rbol se puede guardar en diferentes p ginas de la memoria fsica de la computadora.

Listas y arboles p. 1

Imbalance

El problema con rboles binarios es que su forma depende del orden de insercin de los elementos y en el peor caso puede reducir a casi una lista.

Un arbol balanceado con n = 8 y profundidad tres.

El peor caso de falta de balance para n = 8 tiene profundidad seis.

Listas y arboles p. 1

rboles AVL

rboles AVL (de Adelson-Velskii y Landis, 1962) son o rboles binarios que aseguran complejidad asint tica O (log n) para las operaciones bsicas de ndices. La variacin de rboles AVL que estudiamos ac guarda toda la informaci n en sus hojas y utiliza los vrtices o internos para informacin utilizado al realizar las operaciones del ndice.

Listas y arboles p. 1

Vrtices de ruteo

Los vrtices que no son hojas son vrtices de ruteo . El orden del rbol es tal que todas las hojas en el ramo del hijo izquierdo contienen claves menores que el valor del vrtice de ruteo y todas las hojas en el ramo del hijo derecho contienen claves mayores o iguales que el valor del vrtice de ruteo mismo. Por el uso de vrtices de ruteo, son siempre llenos.

Listas y arboles p. 1

Bsqueda de una clave

Utilizamos en los ejemplos enteros positivos como las claves. Para buscar la hoja con clave i, se empieza del raz del rbol y progresa recursivamente al hijo izquierdo si el valor del raz es mayor a i y al hijo derecho si el valor es menor o igual a i. Cuando la bsqueda llega valor de la hoja es i o no.

a una hoja, se evala si el

Si no es i, el rbol no contiene la clave i en ninguna parte.

Listas y arboles p. 1

Pseudocdigo de bsqueda

procedimiento ubicar(int clave, nodo actual) : hoja { si (actual es una hoja) { devuelve hoja ; } en otro caso { si (actual.clave <clave) { ubicar(clave, actual.derecho); } en otro caso { ubicar(clave, actual.izquierdo); } } }

Listas y arboles p. 1

rboles balanceados

El rbol est balanceado si el largo mximo es k, el largo mnimo tiene que ser mayor o igual a k 1. En este caso, el nmero de hojas del rbol n es 2k n < 2k+1 .

Listas y arboles p. 2

Condicin de balance

La condicin que utilizamos para decidir si o no un dado rbol esta balanceado es la condici n de balance AVL. o Tambin existen otras condiciones. Necesitamos algunas deniciones...

Listas y arboles p. 2

Altura de un vrtice

A(v) =

1, si v es una hoja mx{A(izq(t)), A(der(t))} + 1, si v es de ruteo. a

La altura de un ramo de un vrtice v, es decir, un subrbol la raz de cual es v es la altura de v. La altura del rbol entero es la altura de su raz.

Listas y arboles p. 2

Condicin de balance AVL

Un rbol balanceado se puede caracterizar como un rbol con raz vr con A(vr ) = O (log n). La condicin de balance AVL es que v V |A(izq(v)) A(der(v))| 1.

Listas y arboles p. 2

Profundidad de un vrtice

Para derivar unas cotas sobre la forma del rbol, denimos adems la profundidad de cada vrtice del rbol: D(v) = 0, si v es la raz, D(v.P) + 1, en otro caso.

La profundidad del rbol entero es simplemente mxv D(v). Aplica que D = A 1. a

Listas y arboles p. 2

Anlisis asinttico

Denotamos por n el numero de vrtices en total y por H el numero de hojas del rbol. Para todo n = 2k, tenemos H = 2n 1 y D = log2 n.

= Para cada rbol perfectamente balanceado de H hojas, se puede localizar una clave en tiempo O (D) = O (log2 H) = O (log2 n).

Para ubicar a una clave a profundidad d toma exactamente d pasos en el rbol, es decir, tiempo O (d).

Para un rbol balanceado, la diferencia en el largo de los caminos es un constante (uno) = aplica que su tiempo de acceso es O (log2 n).

Listas y arboles p. 2

Implicaciones del balance

La condicin de balance AVL implica que para un vrtice de ruteo vr con A(vr ) = a es necesario que o ambos de sus hijos tengan altura a 1 o un hijo tiene altura a 1 y el otro altura a 2. El nmero de vrtices de ruteo en el ramo de una hoja es cero.

Listas y arboles p. 2

Tamao de un ramo

El tamano del ramo con raz en v se puede expresar en trminos de los tamaos de los ramos de sus hijos:
El nmero de vrtices de ruteo Rv en el ramo de v es la suma del nmero de vrtices de ruteo en el ramo de su hijo izquierdo Rw con el nmero de vrtices de ruteo en el a ramo de su hijo derecho Ru m s uno por el vrtice de ruteo v mismo.

Listas y arboles p. 2

Ecuacin recursiva

Utilizamos esta relacin para escribir una ecuacin recursiva para llegar a una cota superior de la altura de un rbol: Sea la altura del hijo izquierdo w exactamente a 1 y la altura del otro hijo vu la otra opcin a 2 (hay imbalance).

Denotamos por R(a) el nmero de vrtices de ruteo en un ramo con raz un v en altura a.

Listas y arboles p. 2

La ecuacin

Rv R(a) 1 + R(a) 1 + R(a) F (a)

= = = = =

Rw + Ru + 1 R(a 1) + R(a 2) + 1 1 + R(a 1) + R(a 2) + 1 1 + R(a 1) + 1 + R(a 2) F (a 1) + F (a 2).

La sustitucin que hicimos era 1 + R(k) = F (k).

Listas y arboles p. 2

Nmeros de Fibonacci

Hemos llegado a la denicin de la sucesi n de o Fibonacci: si k = 0 0, Fk = 1, si k = 1 Fk1 + Fk2 , para k > 1.

Listas y arboles p. 3

Cota inferior

A los nmeros de Fibonacci aplica que a F (a) > 1 5 donde =


1+ 5 2

es la tasa dorada.

Listas y arboles p. 3

A nuestra ecuacin...

Las condiciones iniciales son: R(0) = 0 porque no hay vrtices de ruteo en ramos de las hojas, y R(1) = 1 porque el vrtice de ruteo mismo es el nico en su ramo si sus ambos hijos son hojas. = La ecuacin aplica para R(k) donde k 2.

Listas y arboles p. 3

Sustitucin

La sustitucin 1 + R(k) = F (k) tampoco aplica desde el comienzo, como F (0) = 0 < R(0) + 1 = 0 + 1 = 1 F (1) = 1 < R(1) + 1 = 1 + 1 = 2. Sin embargo, los valores 1 y 2 tambin aparecen en la sucesin de Fibonacci: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, . . .

Listas y arboles p. 3

Nuestra ecuacin de nuevo

Podemos escribir para cada k que R(k) = F (k + 2) + 1. R(a) 2 = R(a) = F (a + 2) 1 >


a+2 5 a+2 5 a+2 5

log (R(a) + 2) = log

log (R(a) + 2) = a + 2 log ( 5) a 1,440 log(R(a) + 2) 0,328.

Listas y arboles p. 3

El resultado

Ya sabemos que n > R(A) porque H > 0 siempre hay hojas si el rbol no est completamente vaco.

Teorema: Para cada rbol que cumple con la condicin


de balance AVL, A 1,440 log(n + 2) 0,328.

Listas y arboles p. 3

Insercin

Para insertar un elemento nuevo al rbol de ndice, primero hay que buscar la ubicacin de la clave del elemento. Llegando a la hoja vh donde debera estar la clave, hay que crear un v rtice de ruteo vr nuevo. e La hoja vh va a ser uno de los hijos del vrtice de ruteo y el otro hijo ser un vrtice nuevo vn creado para el elemento que est insertado.

Listas y arboles p. 3

Ejemplo

El elemento menor de vh y vn ser el hijo izquierdo y el mayor el hijo derecho. El valor del vrtice de ruteo vr as creado ser igual al valor de su hijo derecho.

Listas y arboles p. 3

Eliminacin
Para eliminar un elemento del rbol, hay que primero ubicar su posicin y despus eliminar adem s de la a hoja su v rtice de ruteo vr y mover el otro vrtice hijo e del vrtice de ruteo vh a la posicin que ocup vr .

Listas y arboles p. 3

Temas de los proyectos

En dos meses, deberan estar listos los proyectos individuales. Cmo les va?

Listas y arboles p. 3

Tarea para entregar el martes

Un grafo aleatorio uniforme Gn,m (simple, no dirigido) con n vrtices y m aristas, es tal que cada una de las posibles n aristas est elegida uniformemente al azar 2 con la misma probabilidad, o sea, cada conjunto de m aristas tiene la misma probabilidad de ser eledigo. Cmo implementaras la generacin de grafos uniformes Gn,m utilizando (a) arreglos o (b) listas? Analiza el tiempo de acceso y el uso de memoria de ambas opciones.

Listas y arboles p. 4