eda_02 - kdtrees
Post on 10-Jul-2015
149 Views
Preview:
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]
top related