Anda di halaman 1dari 20

Estructuras de Datos Avanzadas

Mtodos de Acceso Multidimensional: Espacial (SAM) KD-Trees Representacin de datos Algoritmo Implementacin

Mtodos de Acceso Espacial. Estructuras de Datos Espaciales


Son datos complejos en su estructura y en sus relaciones La descripcin Espacial de un objeto es compleja ya que los datos de un objeto pueden ir desde un simple Punto hasta miles de polgonos 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 ms de una coordenada, por lo que su almacenamiento en una estructura tradicional basada en registros de tamao fijo no es posible no es eficiente. Los algoritmos para la insercin, eliminacin, bsqueda de objetos as como para encontrar relaciones espaciales entre objetos deben ser particularmente diseados para que funcionen eficientemente

Estructuras de Datos Espaciales


Las estructuras espaciales contienen datos multidimensionales con informacin especfica sobre cada objeto: su extensin y su ubicacin en el espacio. Normalmente los objetos se representan en alguna forma basada en vectores.
La principal motivacin del uso de estructuras de datos espaciales ha sido en las aplicaciones geogrficas, aplicaciones CAD y otras donde se manejan objetos representados por sus coordenadas en el espacio. Actualmente su aplicacin se ha expandido a otras reas como la robtica, la visin artificial, navegacin automtica, procesamiento de imgenes mdicas, y otras, en las que se representan y procesan grandes cantidades de datos con informacin espacial.

Propiedades de los mtodos de acceso espacial


1. Dinmicos: Independientemente de la secuencia de inserciones y eliminaciones de los objetos, el mtodo 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 mtodos de acceso estn diseados para acceder tambin a objetos en memoria secundaria 3. Amplio rango de operaciones. Los mtodos debe estar diseados para que se puedan aplicar varias operaciones con igual grado de eficiencia. Quiere decir, que no debe disearse un mtodo que es muy eficiente al recuperar un objeto, pero es ineficiente al eliminar.

Propiedades de los mtodos de acceso espacial


4. Independencia de los datos de entrada y de la secuencia de insercin. Los mtodos deben mantener la eficiencia independientemente del orden y los valores en que se presente los datos. 5. Simplicidad: Los mtodos no deben ser muy complejos (con muchos casos especiales que tratar), ya que pueden conducir a errores y no ser suficientemente robustos en grandes aplicaciones. 6. Escalabilidad: Deben adaptarse fcilmente al crecimiento de la base de datos

Propiedades de los mtodos de acceso espacial


7. Eficiencia en el uso del tiempo: Las bsquedas espaciales deben ser rpidas. En el peor de los casos, los mtodos deben garantizar una complejidad de bsqueda logartmica. 8. Eficiencia en el uso del espacio: Los ndices deben ser pequeos en comparacin con el tamao de los datos. 9. Concurrencia: La implementacin de los mtodos deben garantizar que el acceso concurrente de los datos sea robusto.

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]

Algoritmo general para construir un KD-Tree


El algoritmo para construir un rbol KD-Tree debe llevar el control de la dimensin que le corresponde a cada nodo. Supongamos que las K dimensiones se numeran: 0 .. K-1 Si un nodo tiene asignada la dimensin D, entonces la dimensin de sus hijos izquierdo y derecho ser: (D+1) MOD K Para K = 3, la secuencia de dimensiones sera: 0, 1, 2, 0, 1 , 2, El algoritmo para Insertar un objeto en el rbol es recursivo y requiere como parmetros, adems el rbol y el objeto a insertar, el valor de la dimensin que le corresponde a la raz del rbol

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 vaco 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 )

Problemas del algoritmo


Este algoritmo tiene el mismo problema que los rboles binarios de bsqueda, en el sentido de que la distribucin de los objetos en el rbol depende del orden en que se presenten, y en el peor de los casos podra obtenerse un rbol en el que slo 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 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]

Anda mungkin juga menyukai