structures project

17
Instituto Tecnológico de Costa Rica Ingeniería en Computación Angulo Chavarría Sleyter Céspedes García Robert Cubero Mora Adrián Lewis Mora Benjamín Curso: Estructuras de Datos

Upload: sleyter-angulo-chavarria

Post on 08-Jul-2015

74 views

Category:

Technology


1 download

DESCRIPTION

This project is about Splays Trees

TRANSCRIPT

Page 1: Structures project

Instituto Tecnológico de Costa Rica

Ingeniería en Computación

Angulo Chavarría Sleyter

Céspedes García Robert

Cubero Mora Adrián

Lewis Mora Benjamín

Curso:

Estructuras de Datos

Page 2: Structures project

Fue implementado por primera vez en 1985.

Fue inventado por Robert Tarjan y Daniel Sleator.

Page 3: Structures project

Son arboles binarios, pero su característica fundamental es que se

encuentra auto-balanceado. Donde los elementos accesados recientemente se encuentran en la parte posterior del árbol. Realiza una serie de rotaciones para colocar donde correspondan esos elementos.

Page 4: Structures project

La búsqueda es mas rápida y eficiente.

Reduce el tiempo total de consumo accediendo a los elementos mas utilizados.

Facilita el acceso a la memoria.Requieren menos espacio que otros arboles como: ABB (Balanceados).

Su implementación es mas fácil y sencilla.

Se minimizan los requerimientos de la memoria.

Page 5: Structures project

No son perfectamente balanceados (ya que cuando el árbol vuelve a su estado inicial, el árbol se desbalancea).

En el peor de los casos una operación puede tarde O(n). (Donde n es el numero de nodos del árbol).

Las operaciones individuales pueden llegar a ser largas y costosas.

Page 6: Structures project

Son arboles binarios.

Se encuentran balanceados.

La profundidad del árbol puede ser muy grande.

La búsqueda puede tonarse tediosa cuando el árbol se encuentra

en su forma original, es decir después de que el árbol ordeno los

elementos mas utilizados cerca de la raíz, y vuelve a su estado original.

Utiliza una serie de rotaciones para ordenar los elementos para que queden cerca de la raíz.

Page 7: Structures project

Algoritmos importantes

Dentro de los algoritmos importantes encontramos:

Inserción.

Eliminación.

Búsqueda.

Operación de biselación.

Page 8: Structures project

El método de insertar en este árbol consiste, en insertar únicamente en las

hojas, siempre y cuando la raíz este llena. Sino el elemento a insertar se

inserta en la raíz, como lo hace el árbol binario de búsqueda. Este árbol al

ir haciendo las inserciones va ordenando los elementos de manera que los

menores queden a la izquierda del nodo ( este elemento funciona como

una “raíz” de cada subárbol) y los mayores a la derecha. De esta manera se facilita la búsqueda. Y deja el elemento en la parte posterior del árbol.

Método de Insertar

Page 9: Structures project

1.Primeramente se pregunta si el árbol esta vacío. Si lo esta inserta el elemento como raíz.

2.Si el árbol ya tiene elementos, busca cual

sería la posible posición de ese elemento a insertar.

3.Cuando ya obtiene la posición donde va el

elemento verifica que sea una hoja y lo inserta.

4.Después realiza una serie de rotaciones

hasta lograr que el árbol quede

ordenado, pero dejando el nuevo elemento insertado como raíz.

Pasos del método de Insertar

Page 10: Structures project

Para realizar el método de eliminar son necesarias dos operaciones de biselación. Primeramente se busca el nodo a eliminar , con esto se determina

si es necesaria la primera biselación , ya que si el nodo no es encontrado se

tomará el ultimo nodo encontrado y este pasará a la raíz. Si el valor a eliminar

es encontrado se le realizara el método de biselación para colocarlo en la raíz

y luego eliminarlo. Cuando se elimina como es un ABB quedan dos nodos separados por lo que hay que seleccionar un nodo raíz , la cual se puede

determinar con el mayor valor del la parte izquierda o el menor valor de la parte derecha.

Método de eliminar

Page 11: Structures project

1.Se busca el valor a eliminar.

2.Si el valor no fue encontrado se coloca como raíz el ultimo nodo visitado.

3.Si el valor fue encontrado , se coloca el

nodo del valor como raíz y se elimina. Al

eliminar el nodo raíz quedaran 2 partes del árbol separadas.

4.Para unirlas se toma el valor mayor de la

parte sub-izquierda del árbol, y se coloca

como raíz uniendo las dos partes. También se

puede unir con el valor menor del árbol sub-

derecho, utilizando el mismo proceso de colocarlo como raíz.

Page 12: Structures project

La búsqueda en este tipo de árbol se realiza modificando la estructura del árbol, es decir conforme se vaya encontrando el elemento buscado, ese

elemento sube hasta quedar como raíz del árbol, es decir los elementos

recientemente buscados estarán en la parte superior del árbol. El descenso de los elementos se realiza como en los arboles binarios de búsqueda.

Método de Buscar

Page 13: Structures project

1.Se pregunta si el árbol se encuentra vacío. Si lo esta se indica que no hay elementos.

2.De lo contrario se empieza a recorrer el árbol (ya sea

por anchura o profundidad), y se pregunta si el elemento

de ese nodo es igual al elemento buscado, si lo es indica

que lo encontró, deja este elemento como raíz haciendo una serie de rotaciones o biselaciones.

3.Sino dice que no se encuentra el elemento buscado y

hace unas rotaciones dejando el ultimo nodo visitado como raíz.

Pasos del método de Buscar

Page 14: Structures project

La operación de biselación lo que pretende es ir haciendo rotaciones hasta

acomodar el nodo como raíz, esto lo realiza a través de ciertas condiciones

que deben cumplir las rotaciones para no dejar el árbol desbalanceado y desordenado.

Podemos mencionar que existen 3 casos:

•Caso 1: Que el elemento sea un hijo izquierdo o derecho de la raíz. Realizando una rotación simple ya sea a izquierda o derecha.

•Caso 2: Que el elemento sea nieto izquierdo o derecho de la raíz.

Realizando una rotación doble siendo para la derecha o izquierda según corresponda el caso.

•Caso 3: Que el elemento sea un hijo derecho o izquierdo del padre, pero

ese mismo elemento es nieto izquierdo o derecho de la raíz. Lo que se hace

es una rotación doble combinada es decir derecha-izquierda o izquierda-derecha según corresponda.

Page 15: Structures project

Caso 1:

Si el elemento es un hijo izquierdo de la raíz del árbol, entonces hace una rotación simple a la derecha.

Si el elemento es un hijo derecho de la raíz del árbol, entonces hace una rotación simple a la izquierda.

Casos de Biselación

Para efecto de este

ejemplo x es elemento a biselar.

Para efecto de este

ejemplo x es elemento a biselar.

Page 16: Structures project

Caso 2:

Si el elemento es hijo y nieto izquierdo de una hoja y de la raíz del árbol respectivamente, entonces hace una rotación doble a la derecha.

Si el elemento es hijo y nieto derecha de una hoja y de la raíz del árbol respectivamente, entonces hace una rotación doble a la izquierda.

Para efecto de este

ejemplo x es hijo de p; y nieto de q.

Para efecto de este

ejemplo x es hijo de p; y nieto de q.

Page 17: Structures project

Caso 3:

Si el elemento es hijo derecho y nieto izquierdo de una hoja y de la

raíz del árbol respectivamente, entonces hace una rotación doble izquierda-derecha.

Si el elemento es hijo izquierdo y nieto derecho de una hoja y de la

raíz del árbol respectivamente, entonces hace una rotación doble derecha-izquierda.

Para efecto de este

ejemplo x es hijo de p; y nieto de q.

Para efecto de este

ejemplo x es hijo de p; y nieto de q.