Escolar Documentos
Profissional Documentos
Cultura Documentos
Mtodos de Acceso Multidimensional: Espacial (SAM) KD-Trees Representacin de datos Algoritmo Implementacin
Conceptos bsicos
Objeto punto: Es un objeto que pertenece a un espacio kdimensional Ek (2 o ms dimensiones). Un objeto punto tiene una nica ubicacin en el espacio y est determinado por los k-valores Objeto extendido: Es un objeto extensin con espacial, como lneas y polgonos. Se distinguen los mtodos de acceso espacial para bases de datos formadas slo por Objetos Punto y las formadas por Objetos Extendidos
KD-Tree
Es una estructura de datos que permite representar datos kdimensionales (Objetos Punto) Es un rbol binario que representa una subdivisin recursiva del universo, en subespacios, mediante hiperplanos.
Por ejemplo, para el caso de k = 3 (R3) los planos que subdividen el espacio seran 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
KD-Tree
En la prctica, 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 dimensin X. Cada nodo en el rbol tiene asociado una dimensin, la cual permite subdividir el espacio. El valor que tiene el objeto en esa dimensin 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 dimensin del nodo raz, podra ser X. El objeto que se coloque en la raz subdivide el espacio en dos grupos: Por la izquierda los objetos que tienen valor X menor al de la raz y por la derecha los que tiene valor X mayor al de la raz.
KD-Tree
Los nodos izquierdo y derecho de la raz tendran asignado la siguiente dimensin, en este caso Y. El valor de la dimensin Y de los objetos que se coloquen en esos nodos servir para continuar subdividiendo el espacio. En el siguiente nivel, la dimensin sera Z, aplicndose el mismo criterio para continuar subdividiendo. Al terminar de subdividir con la ltima dimensin Z, el proceso contina reinicindose con la primera dimensin, en este caso X.
KD-Tree
Ejemplo en 2D (slo 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, empezaramos en la raz, por la dimensin X.
Al insertar el primer elemento [5,2] la dimensin X=5 dividir el plano en dos regiones: A la izquierda quedarn todos los objetos cuya dimensin X es menor que 5, ([3,4], [2,7], [4,1] y [3,8]) y a la derecha todos los que tienen dimensin X mayor a 5 ([8,6]).
Los hijos de la raz tendran asociado la dimensin Y. Los hijos de estos, nuevamente la X y as sucesivamente.
KD-Tree
[5,2] [3,4] [2,7] [4,1] [3,8] [8,6]
Otro problema es que los objetos quedan dispersos en el rbol. Quiere decir que es posible que objetos que estn cercanos en cuanto a su localizacin, queden distantes en el rbol, lo cual dificultara, por ejemplo, la obtencin de un conjunto de objetos que estn en una vecindad.
Variante KD Tree-Adaptativo
Es una variante esttica de un KD-Tree. Requiere conocer a priori todo el conjunto de objetos. Al realizar una divisin se elige, para la dimensin correspondiente, el valor entre todos los objetos, que en esa dimensin, 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 divisin. 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, despus de construido el rbol.
KD-Tree Adaptativo
[5,2] [3,4] [2,7] [4,1] [3,8] [8,6]
Implementacin KD-Tree
Definir una clase para representar Objetos K-Dimensionales Atributos: K-valores numricos Mtodos: Obtener la dimensin Obtener/Modificar el valor del objeto en una dimensin en particular (dado el ndice) Definir una clase para representar el KD-Tree Atributos Un rbol binario cuyos nodos son Objetos K-Dimensionales K: Dimensin de los objetos Mtodos: Insertar, Buscar, Eliminar, etc
Ejercicios Propuestos
-Disear un algoritmo para la construccin un rbol KD-Tree Adaptativo -Implementar las clases para el rbol KD-Tree y KD-Tree Adaptativo (slo los mtodos 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]