eda_02 - kdtrees

20
 Estructuras de Datos Avanzadas

Upload: edward-a-flores-valdivieso

Post on 10-Jul-2015

149 views

Category:

Documents


0 download

TRANSCRIPT

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 1/20

Estructuras de Datos

Avanzadas

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 2/20

Métodos de Acceso Multidimensional:

Espacial (SAM) 

KD-TreesRepresentación de datos

Algoritmo

Implementación

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 3/20

Métodos de Acceso Espacial. Estructuras de Datos

Espaciales 

Son datos complejos en su estructura y en sus relaciones

La descripción Espacial de un objeto es compleja ya que los datos de un

objeto pueden ir desde un simple Punto hasta miles de polígonos

distribuidos arbitrariamente en el espacio.

Se almacenan en Bases de Datos Espaciales. En muchas aplicaciones estas

bases de datos pueden contener millones de records.

Cada objeto tiene asociado más de una coordenada, por lo que su

almacenamiento en una estructura tradicional basada en registros de tamañofijo no es posible ó no es eficiente.

Los algoritmos para la inserción, eliminación, búsqueda de objetos así 

como para encontrar relaciones espaciales entre objetos deben ser

particularmente diseñados para que funcionen eficientemente

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 4/20

Estructuras de Datos Espaciales 

Las estructuras espaciales contienen datos multidimensionales

con información específica sobre cada objeto: su extensión ysu ubicación en el espacio. Normalmente los objetos se

representan en alguna forma basada en vectores.

La principal motivación del uso de estructuras de datosespaciales ha sido en las aplicaciones geográficas, aplicaciones

CAD y otras donde se manejan objetos representados por sus

coordenadas en el espacio.

Actualmente su aplicación se ha expandido a otras áreas comola robótica, la visión artificial, navegación automática,

procesamiento de imágenes médicas, y otras, en las que se

representan y procesan grandes cantidades de datos con

información espacial.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 5/20

Propiedades de los métodos de acceso espacial

1. Dinámicos: Independientemente de la secuencia de inserciones

y eliminaciones de los objetos, el método de acceso debe llevar el

control de estos cambios

2. Almacenamiento secundario: En muchas aplicaciones, debido

al gran volumen de objetos, se hace necesario que los métodos deacceso estén diseñados para acceder también a objetos en memoria

secundaria

3. Amplio rango de operaciones. Los métodos debe estar

diseñados para que se puedan aplicar varias operaciones con igual

grado de eficiencia. Quiere decir, que no debe diseñarse un

método que es muy eficiente al recuperar un objeto, pero es

ineficiente al eliminar.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 6/20

Propiedades de los métodos de acceso espacial

4. Independencia de los datos de entrada y de la secuencia de

inserción. Los métodos deben mantener la eficiencia

independientemente del orden y los valores en que se presente los

datos.

5. Simplicidad: Los métodos no deben ser muy complejos (conmuchos casos especiales que tratar), ya que pueden conducir a

errores y no ser suficientemente robustos en grandes aplicaciones.

6. Escalabilidad: Deben adaptarse fácilmente al crecimiento de la

base de datos

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 7/20

Propiedades de los métodos de acceso espacial

7. Eficiencia en el uso del tiempo: Las búsquedas espaciales

deben ser rápidas. En el peor de los casos, los métodos deben

garantizar una complejidad de búsqueda logarítmica.

8. Eficiencia en el uso del espacio: Los índices deben ser

pequeños en comparación con el tamaño de los datos.

9. Concurrencia: La implementación de los métodos deben

garantizar que el acceso concurrente de los datos sea robusto.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 8/20

Conceptos básicos

Objeto punto: Es un objeto que pertenece a un espacio k-

dimensional Ek (2 o más dimensiones). Un objeto punto tiene una

única ubicación en el espacio y está determinado por los k-valores

Objeto extendido: Es un objeto extensión con espacial, como

líneas y polígonos.

Se distinguen los métodos de acceso espacial para bases de datos

formadas sólo por Objetos Punto y las formadas por Objetos

Extendidos

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 9/20

KD-Tree

Es una estructura de datos que permite representar datos k-

dimensionales (Objetos Punto)

Es un árbol binario que representa una subdivisión recursiva del

universo, en subespacios, mediante hiperplanos.

Por ejemplo, para el caso de k = 3 (R3) los planos que subdividen el

espacio serían los planos YZ (perpendicular al eje X), XZ

(perpendicular al eje Y) y el plano XY (perpendicular al eje Z)

Cada hiperplano que subdivide al espacio debe contener al menos

un punto y se corresponde con un nodo en el árbol binario

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 10/20

KD-Tree

En la práctica, el hiperplano asociado a cada nodo en el árbol se

define seleccionando una de las dimensiones, así para el caso R3,

el hiperplano YZ es definido por la dimensión X.

Cada nodo en el árbol tiene asociado una dimensión, la cual

permite subdividir el espacio. El valor que tiene el objeto en esadimensión es utilizado para obtener los nodos descendientes (los

menores a la izquierda y los mayores a la derecha)

Para el caso de R3, por ejemplo, la dimensión del nodo raíz, podría

ser X. El objeto que se coloque en la raíz subdivide el espacio en

dos grupos: Por la izquierda los objetos que tienen valor X menor

al de la raíz y por la derecha los que tiene valor X mayor al de la

raíz.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 11/20

KD-Tree

Los nodos izquierdo y derecho de la raíz tendrían asignado la

siguiente dimensión, en este caso Y. El valor de la dimensión Y de

los objetos que se coloquen en esos nodos servirá para continuar

subdividiendo el espacio.

En el siguiente nivel, la dimensión sería Z, aplicándose el mismocriterio para continuar subdividiendo.

Al terminar de subdividir con la última dimensión Z, el proceso

continúa reiniciándose con la primera dimensión, en este caso X.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 12/20

KD-Tree

Ejemplo en 2D (sólo dos dimensiones X y Y)

Supongamos que insertaremos en el árbol los puntos:

[5,2] [3,4] [2,7] [4,1] [3,8] y [8,6]

En este caso, empezaríamos en la raíz, por la dimensión X.

Al insertar el primer elemento [5,2] la dimensión X=5 dividirá el

plano en dos regiones: A la izquierda quedarán todos los objetos

cuya dimensión X es menor que 5, ([3,4], [2,7], [4,1] y [3,8]) y a

la derecha todos los que tienen dimensión X mayor a 5 ([8,6]).

Los hijos de la raíz tendrían asociado la dimensión Y. Los hijos de

estos, nuevamente la X y así sucesivamente.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 13/20

KD-Tree

[5,2] [3,4] [2,7] [4,1] [3,8] [8,6]

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 14/20

Algoritmo general para construir un KD-Tree El algoritmo para construir un árbol KD-Tree debe llevar el

control de la dimensión que le corresponde a cada nodo.

Supongamos que las K dimensiones se numeran: 0 .. K-1

Si un nodo tiene asignada la dimensión D, entonces la dimensión

de sus hijos izquierdo y derecho será:

(D+1) MOD K

Para K = 3, la secuencia de dimensiones sería: 0, 1, 2, 0, 1 , 2, … 

El algoritmo para Insertar un objeto en el árbol es recursivo y

requiere como parámetros, además el árbol y el objeto a insertar,el valor de la dimensión que le corresponde a la raíz del árbol 

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 15/20

Algoritmo general para construir un KD-Tree -Entrada: N objetos O1, O2, …, ON, representados mediante

vectores K-dimensionales (con índices 0..K-1)-Salida: KDT (KD-Tree)

KDT = árbol vacío

Para i = 1 hasta N hacer

Insertar ( KDT, Oi , 0 )Retornar KDT

-----------------------------------------------------

Insertar ( A, Obj, dim )

Si A es vacio Entonces

A = crear una hoja con el objeto Obj

Sino

OR = Objeto de la raiz de A

Si OR[dim] < Obj[dim] Entonces

Insertar( A.der, Obj, (dim+1) MOD K )

Sino

Insertar( A.izq, Obj, (dim+1) MOD K )

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 16/20

Problemas del algoritmo Este algoritmo tiene el mismo problema que los árboles binarios

de búsqueda, en el sentido de que la distribución de los objetos enel árbol depende del orden en que se presenten, y en el peor de los

casos podría obtenerse un árbol en el que sólo se utiliza una rama

(izquierda ó derecha). En general, no son árboles balanceados.

Otro problema es que los objetos quedan dispersos en el árbol.

Quiere decir que es posible que objetos que estén “cercanos” en

cuanto a su localización, queden “distantes” en el árbol, lo cual

dificultaría, por ejemplo, la obtención de un conjunto de objetos

que estén en una vecindad.

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 17/20

Variante KD Tree-Adaptativo Es una variante estática de un KD-Tree. Requiere conocer a priori

todo el conjunto de objetos.

Al realizar una división se elige, para la dimensión

correspondiente, el valor entre todos los objetos, que en esa

dimensión, los separa en dos subgrupos de igual cantidad de

elementos (o se diferencien en 1).

En los nodos interiores no se colocan los objetos, sino el valor

utilizado para la división. Los objetos se colocan en las hojas del

árbol.

De esta manera el árbol queda balanceado. La dificultad está en

aplicaciones en que son frecuentes las inserciones y las

eliminaciones, después de construido el árbol. 

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 18/20

KD-Tree Adaptativo

[5,2] [3,4] [2,7] [4,1] [3,8] [8,6]

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 19/20

Implementación – KD-Tree  Definir una clase para representar Objetos K-Dimensionales

Atributos:K-valores numéricos

Métodos:

Obtener la dimensión

Obtener/Modificar el valor del objeto en una dimensión en

particular (dado el índice)

 Definir una clase para representar el KD-Tree

Atributos

Un árbol binario cuyos nodos son Objetos K-DimensionalesK: Dimensión de los objetos

Métodos:Insertar, Buscar, Eliminar, etc… 

5/11/2018 EDA_02 - KDTREES - slidepdf.com

http://slidepdf.com/reader/full/eda02-kdtrees 20/20

Ejercicios Propuestos -Diseñar un algoritmo para la construcción un árbol KD-Tree

Adaptativo

-Implementar las clases para el árbol KD-Tree y KD-Tree

Adaptativo (sólo los métodos para Insertar y Buscar).

-Construir los árboles KD-Tree y KD-Tree Adaptativo para la

siguiente secuencia de objetos en R3

[4,0,5] [3,6,7] [2,1,9] [0,3,8] [7,5,2] [1,1,1] [9,4,6]