Propuesta UBB cKd-tree / KNN

Propuesta de Proyecto de Titulación

Análisis de eficiencia de algoritmos KNN en cKd-tree

Una propuesta de investigación y desarrollo para evaluar Cola de Prioridad y Radio Incremental sobre una estructura compacta, con foco en rendimiento, memoria y viabilidad técnica.

Tres vistas para entender la propuesta

Estas imágenes vienen del material del informe y cubren tres ideas clave: la estructura espacial, la codificación compacta y la consulta de rango que sirve como antecedente para KNN.

  • La primera figura muestra la partición espacial del árbol.
  • La segunda presenta una consulta de rango sobre puntos en 2D.
  • La tercera ilustra la codificación en espiral asociada a la compresión.
A Kd-tree and its spatial partitions
Partición espacial del árbol
Ejemplo de consulta de rango sobre puntos en 2D
Consulta de rango sobre puntos en 2D
Spiral encoding of a set of points in N^2
Codificación en espiral y compresión

Glosario técnico del proyecto

Definiciones de términos clave para entender la propuesta:

K-Vecinos más Cercanos (KNN)

Algoritmo que dado un punto de consulta, encuentra los K puntos más cercanos en un conjunto de datos. Fundamental en aprendizaje automático, recomendaciones y clasificación. Ejemplo: "Encuentra los 5 clientes más similares a este perfil".

Kd-tree (K-Dimensional Tree)

Estructura de árbol binario que particiona espacios multidimensionales recursivamente. Cada nodo divide un eje de coordenadas alternadamente (X, Y, Z...). Permite búsquedas rápidas en espacios de múltiples dimensiones, pero usa mucha memoria en punteros.

cKd-tree (Compact Kd-tree)

Versión compacta del Kd-tree que elimina punteros usando codificación implícita. Reduce memoria a ~30% del Kd-tree clásico manteniendo capacidad de consulta. Usa secuencias en espiral (curva de Hilbert) y códigos de acceso directo (DACs).

Cola de Prioridad (Priority Queue)

Algoritmo de búsqueda que mantiene una cola ordenada de candidatos. Explora primero las regiones más prometedoras (cercanas al punto de consulta). Rápido pero requiere memoria adicional para la cola. Mayor overhead pero menos iteraciones.

Radio Incremental (Incremental Radius)

Algoritmo que comienza con un radio de búsqueda pequeño alrededor del punto de consulta y lo expande gradualmente hasta encontrar K vecinos. Bajo overhead de memoria pero potencialmente más computación. Demostró ser superior en k²-tree (2023).

k²-tree (k-squared tree)

Otra estructura compacta que almacena relaciones binarias en espacios 2D usando codificación bit-a-bit. Antecedente directo de cKd-tree. Sus resultados de investigación (2021, 2023) sirven como referencia comparativa.

DAC (Direct Access Code)

Técnica de codificación que permite calcular la posición de un elemento sin almacenar punteros explícitos. Usado en cKd-tree para navegar implícitamente la estructura. Requiere cálculos pero economiza RAM exponencialmente.

Curva de Hilbert

Secuencia matemática que mapea espacios multidimensionales a 1D mientras preserva localidad (puntos cercanos en el espacio original quedan cercanos en la secuencia). Utilizada en cKd-tree para codificar posiciones de nodos.

Consulta de Rango

Retorna todos los puntos dentro de un rectángulo (o hipercubo) delimitado. Diferente de KNN: donde KNN devuelve exactamente K vecinos, rango devuelve TODOS los puntos en el área. cKd-tree implementa esto pero no KNN.

Prototipo Evolutivo (Metodología)

Enfoque de desarrollo que construye versiones funcionales incrementalmente, integrando retroalimentación rápidamente. Ideal para proyectos donde no se conoce todos los requisitos o hay alta incertidumbre técnica. Minimiza riesgo mediante iteración temprana.

Investigación / Desarrollo Modalidad de la propuesta
Prototipo evolutivo Metodología seleccionada
2 técnicas KNN Cola de Prioridad y Radio Incremental

La idea central del proyecto

El cKd-tree surge como una alternativa compacta al Kd-tree clásico, pero todavía necesita validarse con consultas KNN sobre escenarios más reales y comparaciones con algoritmos de búsqueda estándar.

Felipe Elías Alegría Lara

Ingeniería en Ejecución en Computación e Informática

Estructuras compactas

Búsqueda espacial, eficiencia y uso de memoria

La brecha técnica actual

El cKd-tree es una estructura recientemente desarrollada (2024) que logra comprimir índices Kd-tree con ratios de compresión cercanos al 70% respecto de otras estructuras compactas, manteniendo capacidad de consulta. Sin embargo, enfrenta limitaciones críticas que impiden su adopción operativa:

1. Inexistencia de algoritmos de búsqueda KNN validados

La estructura actual solo implementa almacenamiento y consultas de rango (búsquedas que retornan todos los puntos dentro de un rectángulo delimitado). Sin embargo, carece de una implementación operativa de K-Vecinos más Cercanos (KNN), una funcionalidad esencial para aplicaciones reales como:

  • Sistemas de recomendación: Encontrar los N productos más similares a uno dado.
  • Reconocimiento de patrones: Clasificar datos basados en proximidad a ejemplares conocidos.
  • Clustering y análisis de datos: Agrupación de puntos cercanos en espacios multidimensionales.
  • Búsqueda de similitud: Recuperar imágenes, documentos o registros similares.

Impacto: Una estructura que solo almacena pero no permite consultar de manera eficiente es incompleta funcionalmente.

2. Incertidumbre en eficiencia temporal

El cKd-tree logra reducción de memoria dramática (70% aprovechamiento) mediante:

  • Eliminación de punteros: Los árboles tradicionales requieren punteros para conectar nodos (memoria extra). cKd-tree usa codificación implícita.
  • Codificación compacta: Utiliza secuencias en espiral (curva de Hilbert) y DACs (Direct Access Codes) para representar la estructura.

Sin embargo, existe incertidumbre crítica: ¿Navegar una estructura sin punteros anula el ahorro de memoria?

  • Cada búsqueda KNN requiere reconstruir posiciones sobre la marcha (costo computacional).
  • El overhead de cálculos podría neutralizar la ganancia de RAM.
  • Datos de tiempo real para cKd-tree son inexistentes.

Preguntas sin respuesta: ¿Cuántos ciclos de CPU se gastan en reconstrucción? ¿Hay dispositivos con RAM limitada donde cKd-tree es viable?

3. Falta de estudios comparativos entre algoritmos

Existen dos estrategias clásicas para búsqueda KNN. No hay datos empíricos sobre cuál es superior en cKd-tree:

  • Cola de Prioridad (Priority Queue): Explora primero las regiones más prometedoras. Mayor overhead de memoria pero búsquedas más rápidas en espacios uniformes.
  • Radio Incremental (Incremental Radius): Expande el área de búsqueda gradualmente. Bajo overhead de memoria pero potencialmente más iteraciones.

En k²-tree (2023), Radio Incremental demostró ser superior. Pero cKd-tree tiene una arquitectura diferente (partición celular vs. basada en bits), así que no hay garantía.

Consecuencia: Ingenieros no pueden tomar decisiones informadas. ¿Cuál algoritmo elegir? Depende de datos desconocidos.

Qué se va a implementar

Se propone implementar y comparar dos variantes de búsqueda KNN sobre cKd-tree: Cola de Prioridad y Radio Incremental. El resultado esperado es identificar cuál se adapta mejor a la estructura y ofrece mejor balance entre tiempo y memoria.

01 Adaptación del algoritmo a la lógica de partición del cKd-tree.
02 Comparación de rendimiento usando pruebas de estrés.
03 Validación de la utilidad práctica de la estructura compacta.

Validar la operatividad del cKd-tree

Evaluar el rendimiento y la eficacia de las técnicas KNN de Radio Incremental y Colas de Prioridad implementadas sobre la estructura compacta cKd-tree.

Desglose del trabajo técnico

  • Estudiar la estructura interna del cKd-tree y la lógica KNN.
  • Diseñar e implementar ambos módulos de búsqueda.
  • Evaluar rendimiento con diferentes volúmenes de datos.
  • Comparar resultados y redactar conclusiones.

Por qué es importante este estudio

La investigación sobre KNN en cKd-tree se justifica por razones académicas, técnicas y prácticas:

1. Habilitación de operatividad de la estructura

El trabajo fundacional del cKd-tree (2024) completó dos funcionalidades: almacenamiento compacto y consultas de rango. Pero esto es solo parte de la utilidad. Este proyecto extiende la funcionalidad hacia búsquedas de proximidad (KNN), transformando la estructura de un modelo teórico de almacenamiento a una herramienta de consulta prácticamente viable.

Consecuencia: cKd-tree pasa de ser "interesante" a ser "operacionalmente completo".

2. Validación rigurosa del compromise espacio-tiempo

Las estructuras compactas ofrecen un tradeoff (compromiso) fundamental entre:

  • Ahorro de espacio: cKd-tree logra ~70% de compresión vs k²-tree.
  • Costo computacional: Navegar sin punteros requiere cálculos adicionales.

Este proyecto cuantifica experimentalmente:

  • ¿Cuánta memoria se economiza realmente con KNN?
  • ¿Cuánto tiempo se tarda en una búsqueda vs Kd-tree clásico?
  • ¿A partir de qué tamaño de dataset cKd-tree es más eficiente?
  • ¿En qué tipo de hardware (RAM limitada, procesadores móviles) es viable?

Importancia: Valida si el compromiso teórico es realmente beneficioso en práctica.

3. Resolución de incertidumbre sobre selección de algoritmos

Dos algoritmos KNN estándar compiten en estructuras compactas. Investigaciones previas muestran tendencias contradictorias:

Algoritmo k²-tree (2023) iBit-tree cKd-tree (DESCONOCIDO)
Cola de Prioridad ✓ Rápido ✓ Rápido ?
Radio Incremental ✓✓ Muy rápido ✓ Competitivo ?

El problema: cKd-tree tiene una arquitectura única (partición celular con DACs) que no se mapea directamente a k²-tree (navegación bit-a-bit). Extrapolar resultados es arriesgado.

Beneficio: Este proyecto cierra la brecha de conocimiento, permitiendo a futuros desarrolladores elegir el algoritmo correcto desde el inicio.

4. Contribución al estado del arte en estructuras compactas

Las estructuras de datos compactas son un área emergente crítica para:

  • Big Data: Datasets de miles de millones de puntos que no caben en RAM tradicional.
  • Sistemas embebidos y IoT: Dispositivos con memoria severamente limitada (smartphones, sensores, drones).
  • Centros de datos sustentables: Reducir consumo de memoria = menos energía consumida.
  • Aplicaciones de baja latencia: Si cKd-tree compite en velocidad, reemplaza Kd-tree clásico sin penalidad.

Este proyecto contribuye metodología reproducible para validar estructuras compactas futuras.

Alcance: Los resultados y técnicas de benchmarking servirán para investigaciones posteriores en compresión de índices espaciales.

Prototipo evolutivo

La propuesta usa una metodología evolutiva porque permite construir versiones funcionales, probar temprano la lógica de búsqueda y ajustar el diseño según los resultados de cada iteración.

Riesgo técnico moderado La complejidad algorítmica es alta, pero el tamaño del software es acotado y permite iterar con control.

cKd-tree: A Compact Kd-tree (IEEE Access, 2024)

El artículo base presenta cKd-tree como una estructura compacta para representar índices Kd-tree en escenarios de Big Data con conjuntos estáticos extensos, donde el objetivo principal es reducir memoria sin perder capacidad de consulta.

  • La codificación se apoya en la secuencia en espiral del iKd-tree usando DACs.
  • Evalúa dos tipos de consulta espacial: consulta puntual y consulta por rango.
  • Compara el desempeño frente a iKd-tree y k2-tree en compresión y tiempo.
  • Reporta una compresión cercana al 70% respecto de k2-tree.
  • Describe mejor desempeño en consulta puntual y buen comportamiento en rango, especialmente con datos dispersos.
Datos bibliográficos DOI: 10.1109/ACCESS.2024.3365054 IEEE Xplore ID: 10431741 Fuente: IEEE Access, vol. 12, pp. 28666-28676 Ver publicación

Síntesis elaborada con metadatos y resumen público indexado (OpenAlex/DBLP), ya que IEEE bloquea la descarga directa en este entorno.

On Incremental Radius Algorithm for KNN over k²-tree (2023)

Este artículo evalúa la aplicación del algoritmo de Radio Incremental para búsquedas KNN sobre la estructura compacta k²-tree, demostrando que supera al enfoque de Cola de Prioridad en escenarios con datos sintéticos y restricciones de memoria.

  • Propone implementación de Radio Incremental con conteo compacto para optimizar rendimiento.
  • Demuestra que Radio Incremental es altamente competitivo frente a Cola de Prioridad en k²-tree.
  • Valida la efectividad del radio incremental en estructuras de partición espacial compactas.
  • Proporciona base experimental para seleccionar estrategias de búsqueda en estructuras compactas.
Datos bibliográficos Autor: Rodrigo Torres-Avilés IEEE Xplore ID: 10315737 Fuente: Proc. 42nd IEEE Int. Conf. Chilean Computer Science Society (SCCC), pp. 1-4, 2023 DOI: 10.1109/sccc59417.2023.10315737 Ver publicación

Investigación sobre algoritmos KNN en k²-tree, comparable con la presente propuesta en cKd-tree.

Secuencia de actividades

01 Revisión bibliográfica de cKd-tree y KNN.
02 Diseño y codificación de los módulos de búsqueda.
03 Pruebas de estrés y recolección de métricas.
04 Comparación de resultados y redacción final.

Antecedentes del proyecto

cKd-tree: A Compact Kd-tree (2024)

Autores: G. Gutiérrez, R. Torres-Avilés, M. Caniupán | Publicación: IEEE Access, vol. 12, pp. 28666–28676, 2024

Aportación central: Propone cKd-tree como estructura compacta que elimina punteros mediante codificación en espiral (DACs), logrando 70% de compresión respecto de k²-tree.

Relevancia para la propuesta: Es el trabajo fundacional sobre el cual esta propuesta construye. Establece la arquitectura celular y demuestra viabilidad de almacenamiento. Esta propuesta completa el ciclo implementando búsqueda KNN sobre esa arquitectura.

On Incremental Radius Algorithm for KNN over k²-tree (2023)

Autor: Rodrigo Torres-Avilés | Publicación: Proc. 42nd IEEE Int. Conf. Chilean Computer Science Society (SCCC), pp. 1–4, 2023

Aportación central: Evalúa la implementación de Radio Incremental para KNN sobre k²-tree, demostrando que supera a Cola de Prioridad en estructuras compactas con restricciones de memoria.

Relevancia para la propuesta: Proporciona el precedente directo de comparación entre algoritmos KNN en estructuras compactas. Esta propuesta extiende esa comparativa específicamente a cKd-tree, validando si Radio Incremental mantiene su efectividad en una arquitectura de partición celular diferente.

Efficient Computation of Spatial Queries over k2-tree (2021)

Autores: Fernando Santolaya, Mónica Caniupán, Luis Gajardo, Miguel Romero, Rodrigo Torres-Avilés | Publicación: Theoretical Computer Science, vol. 892, pp. 108–131, Nov. 2021

Aportación central: Describe algoritmos KNN y K-Closest Pair Queries (KCPQ) sobre k²-tree, demostrando escalabilidad en memoria principal donde métodos de almacenamiento secundario fallan.

Relevancia para la propuesta: Proporciona el marco algorítmico de referencia para búsquedas de proximidad en estructuras compactas. Aunque opera sobre k²-tree (navegación basada en bits), sus lógicas de poda y expansión informan el diseño de algoritmos para cKd-tree (navegación basada en celdas), validando el enfoque comparativo.