Los algoritmos que usan pivotes, son herramientas efectivas para búsquedas de proximidad en
espacios métricos. Ellos permiten negociar entre el espacio ocupado y el número de cálculos
de distancia desarrollados en tiempo de consulta.
Una vista abstracta de los algoritmos basados en pivotes es la siguiente. Seleccionamos un
conjunto de pivotes {}. En tiempo de indexamiento, para cada elemento de
la base de datos calculamos y guardamos
. En tiempo de
la consulta, dada una consulta
, calculamos
. Ahora
podemos descartar cada
tal que, para algún pivote
,
, o lo que es lo mismo,
descartamos cada tal que
Esto muestra que los algoritmos basados en pivotes pueden ser vistos como un mapeo del espacio
métrico original
a un espacio vectorial -dimensional con la distancia
, es
decir
.
Los algoritmos kd-trees [Ben75] desarrollan una descomposición binaria jerárquica del espacio vectorial.
Para cada nivel las ramificaciones izquierdas y derechas, cuentan con puntos a la izquierda o
a la derecha de un umbral en una coordenada particular. Las coordenadas se alternan a
cada nivel. Para espacios métricos generales la auscencia de coordenadas hizo urgente el diseño
de reglas alternativas para descomposición de espacios y localización de objetos. Una familia
entera de algoritmos son directamente descendientes de la estructura de los -trees. En lugar de
usar las coordenadas directamente, estos algoritmos usan la distancia a un conjunto de objetos
distinguidos de la base de datos llamados llaves, puntos ventajosos o pivotes.
Combinando esto con la desigualdad del triángulo se obtiene una regla de descarte similar a la de los
-trees.
La mayoría de los esquemas descendientes de los -trees son estructuras de datos basados en árboles que definen una descomposición
jerárquica donde las celdas espaciales coinciden con las hojas en los árboles. Un ejemplo
simple es el
Burkhard-Keller Tree (BKT) [BK73], el cual es una estructura de datos diseñada para
una función de
distancia con valores discretos. Cada nodo del árbol corresponde a un pivote diferente, y cada
rama descendiente está a cierta distancia desde . Esto es, todos los elementos a distancia
de son
puestos en el
-th subárbol del nodo correspondiente. Los
subárboles son
construídos recursivamente con la misma regla. Para una consulta
,
descendemos en el árbol entrando sólo en los subárboles que cumplan con
,
los otros elementos son descartados por la desigualdad del triángulo.