Dados dos subconjuntos del hipercubo dimensional (es decir, M , N ⊆ { 0 , 1 } d ), estoy buscando un algoritmo que recupere los puntos m ∈ M , n ∈ N st la distancia de Hamming (o L 1 - distancia en el hipercubo) d H ( m , n ) es mínima. El ingenuo algoritmo que verifica cada par necesita | M | ⋅ | N | ⋅ d tiempo, ¿hay algún resultado mejor conocido?
Por simplicidad, podemos suponer que .
cg.comp-geom
HdM
fuente
fuente
Respuestas:
Me acabo de dar cuenta de que estás pidiendo el caso de que . Entonces puedes hacer multiplicación de matrices, ¿verdad? Comentario M es una matriz fila X , N como una matriz de la columna Y , niega las entradas de Y , y calcular la matriz Z = X Y . Claramente, la z i , j es la distancia de Hamming entre el punto i de M y el punto j de N|M|=|N|=d M X N Y Y Z=XY zi,j i M j N . De acuerdo con los últimos avances, esto tiene un tiempo de ejecución (pero tengo un manuscrito de 50,000 páginas que muestra cómo hacer esta multiplicación de matriz en tiempo O ( d 2.3726999999 ) por un algoritmo realmente simple).O(d2.3727) O(d2.3726999999)
Puede obtener un efecto similar si las matrices no son cuadrados. Creo que Uri Zwick tiene un artículo sobre la multiplicación rápida de matrices en este caso.
En cierto sentido, esto no es demasiado interesante: queremos evitar el término . Las mejoras en el término d son como meh, meh ...O(|M|∗|N|) d
fuente
[1] Un algoritmo óptimo para la búsqueda del vecino más cercano aproximado en dimensiones fijas Arya et al, 30pp
[2] Vecinos más cercanos efectivos que buscan en el hipercubo, con aplicaciones a Cazals de agrupamiento molecular
fuente