Como fruto de este trabajo, se presentó un algoritmo de indexamiento llamado FQTrie,
el cual es una combinación de los algoritmos FQA y FQT,
obteniendo como resultado una estructura mitad árbol y mitad arreglo, con esta estructura se mejora
la memoria necesaria en el FQT y se mejora el tiempo la búsqueda del FQA, conserva las ventajas de los algoritmos basados en pivotes
y el tiempo empleado en el indexamiento es lineal en (tamaño de la
base de datos).
Cabe mencionar que este algoritmo es necesario en el desarrollo
del algoritmo que soluciona el problema de los
vecinos más cercanos.
La decisión de usar este algoritmo para solucionar el problema principal radica en sus ventajas:
su tiempo de indexamiento, la
eficiencia de la búsqueda que se puede realizar en él, y la cantidad de memoria utilizada.
Antes de abordar las ventajas del algoritmo presentado, se
mencionará la importancia de la dimensión intrínseca en un algoritmo
de indexamiento, para entender este problema se propone utilizar un histograma de
distancias para caracterizar la dificultad de la búsqueda en un
espacio métrico arbitrario, en la sección
,
se dio una explicación intuitiva del porque el problema es más
difícil a medida que la dimensión crece. Cuando se habla de la dimensión se refiere a la
dimensión representativa de los datos y
cuando se habla de la dimensión intrínseca esta última trata de capturar la
dimensión real del espacio en la que están los datos.En [CN99] se propone
una medida para cuantificar la dimensión intrínseca de un
algoritmo basado en pivotes.
Según la definición dada en [CN99], la dimensión
intrínseca de un espacio métrico esta definido como
, donde y son la media y la
varianza del histograma de distancias correspondiente.
En los algoritmos basados en pivotes, cada vez que se realiza una consulta, se hacen un número de cálculos de distancia y es posible saber cuantos cálculos de distancia se realizarán, en [CN99] se demuestra que el límite inferior para conocer el costo promedio de búsqueda usando un algoritmo basado en pivotes es:
donde es el número de pivotes utilizado, es la varianza
de los elementos de la base de datos y es radio promedio de las
búsquedas aplicadas a un algoritmo basado en pivotes, una
descripción más detallada, se puede observar en el apéndice
.
En este trabajo se presentó un algoritmo que encuentra los vecinos más cercanos de todos
los elementos en una base de datos, las ventajas de este algoritmo son las enlistadas a continuación.
Siendo un parámetro tan importante el número de pivotes, cabe mencionar que la mejor manera,
para encontrar los puntos que serán pivotes es de manera aleatoria, debido a que con los puntos seleccionados
de esta manera (observe en las gráficas mostradas en el capítulo anterior) se obtiene un buen rendimiento del
algoritmo y no es necesario hacer ningún cálculo de distancia extra, si se implementara alguna heurística
para conocer los mejores puntos como pivotes, el costo del algoritmo sería, el costo de la construcción del índice
más el costo de la selección de pivotes más el costo del algoritmo para encontrar los vecinos y además
el tiempo que tarda cada uno de estos procesos, por lo tanto
se recomienda que esta selección sea aleatoria.
En [CN99] se sugiere el número óptimo de pivotes es:
Un valor muy importante es el número de vecinos para cada punto, este valor varía de acuerdo tipo de problema a resolver, es decir, el número de los vecinos más cercanos depende directamente del problema que se pretende resolver. Como sugerencia, el número de vecinos más cercanos debe ser menor que el número de pivotes, debido a las características del algoritmo.
Una vez que se obtuvo el algoritmo, se hicieron algunas pruebas, acerca de como empezar la búsqueda de los vecinos mas cercanos, esto con la finalidad de probar, si importa el orden de los puntos en que se empieza la búsqueda de los vecinos más cercanos, se observó que no existen diferencias significativas en el desempeño del algoritmo; las dos heurísticas planteadas para realizar esta pruebas fueron:
Es importante para todo algoritmo, que se realicen comparaciones con respecto a los algoritmos existentes, en misma circunstancias, así que, las pruebas finales aplicadas a este algoritmo, fueron tratar de compararlo con respecto a los algoritmos existentes, por desgracia, no fue posible conseguir el algoritmo realizado por Vaidya, así que esta comparación no se llevo a cabo, el otro algoritmo desarrollado por Clarkson, además de que tampoco fue posible conseguirlo, no tiene parámetros de ajuste, por lo tanto, el algoritmo presentado en este trabajo podría superarlo modificando sus parámetros de ajuste.