- Point quadtree es una estructura de datos de árbol que se utiliza principalmente para el almacenamiento e indexación de puntos espaciales.
- En el árbol cuádruple de puntos, el espacio se divide en cuatro rectángulos y los cuatro polígonos diferentes corresponden a los cuatro cuadrantes SW, NW, SE y NE.
1 operación básica
1.1 Inicialización
Cree un nodo raíz que represente toda el área del espacio bidimensional
1.2 Punto de inserción
- Cuando es necesario insertar un nuevo punto
- Comenzando desde el nodo raíz, determine a qué cuadrante debe pertenecer el punto según sus coordenadas e ingrese recursivamente a ese cuadrante.
- Para el espacio de datos k-dimensional, el espacio de índice correspondiente se divide en 2k subespacios disjuntos con el punto recién insertado como centro, que a su vez corresponden a sus 2k nodos secundarios. Para los nodos ubicados en un determinado punto del subespacio, se asigna a el subárbol correspondiente
- Comenzando desde el nodo raíz, determine a qué cuadrante debe pertenecer el punto según sus coordenadas e ingrese recursivamente a ese cuadrante.
1.3 Consulta
Al consultar todos los puntos en una región, comience desde el nodo raíz, verifique la intersección de la región con cada nodo (cuadrante) e ingrese recursivamente los nodos que se cruzan con la región de consulta.
2 ejemplos
Supongamos que tenemos un espacio bidimensional con el rango [0, 16) x [0, 16) y queremos insertar los siguientes puntos:
- A(2, 3)
- B(4, 7)
- C(14, 14)
- D(9, 4)
2.1 Inicialización
Inicialmente, hay un cuadrado de [0, 16) x [0, 16) como nodo raíz
2.2 Punto de inserción
2.2.1 Insertar A :
2.2.2 Insertar B :
2.2.3 Insertar C :
2.2.4 Insertar D
D está en la esquina inferior derecha con B como centro, por lo que no es necesario dividir el espacio.
2.2.5 Logros
3 ventajas y desventajas
3.1 Ventajas
- Estructura simple
- Alto rendimiento para la búsqueda exacta de puntos coincidentes
3.2 Desventajas
- La naturaleza dinámica del árbol es pobre y eliminar nodos es complejo.
- Por ejemplo, después de eliminar el punto B en el ejemplo anterior, ¿deberían seguir C o D? ¿Qué pasa si C y D tienen nodos secundarios?
- Además de almacenar información sobre los nodos secundarios, cada nodo también necesita almacenar muchos punteros nulos.
- Por ejemplo, en el punto A anterior, además de almacenar B, los otros tres cuadrantes también necesitan almacenar punteros nulos.
- ——> La sobrecarga de almacenamiento de espacio es grande y la tasa de utilización del espacio ocupa el primer lugar
- Por ejemplo, en el punto A anterior, además de almacenar B, los otros tres cuadrantes también necesitan almacenar punteros nulos.