Знаходження найближчої пари між двома множинами точок на гіперкубі


11

З огляду на дві підмножини -вимірного гіперкуба (тобто, M , N { 0 , 1 } d ), я шукаю алгоритм, який отримує точки й відстані забивання (або -відстань на гіперкубі) мінімальна. Наївний алгоритм, який перевіряє лише кожну пару, потребує час, чи відомий якийсь кращий результат?dM,N{0,1}dL 1 d H ( m , n ) | М | | N | дmM,nNL1dH(m,n)|M||N|d

Для простоти можна припустити, що .|M|=|N|=d


хммм. чи є ще мотивація / застосування? підозрюєте, що є багатовимірний аналог цього евклідового / планарного алгоритму, але Вікіпедія не цитує нічого і не хотіла про нього в іншому місці .... це може допомогти шукати алгоритм для n-dim векторів. на початку статті, здається, стверджується, що її можна вирішити в для більш високих розмірів але не дає цитування. може десь у реф. d > 2O(nlogn)d>2
vzn

1
Аргумент ділення та перемоги спирається на зв'язану упаковку. У більш високих вимірах це вводить коефіцієнт у повторення, але залежність від залишається тією ж. Тож якщо ви не заперечуєте проти термінів, експоненціальних у , ви можете використовувати такий підхід. Якщо ви хочете чогось точного, ви навряд чи зможете зробити щось краще. н д2dnd
Суреш Венкат


1
Це здається малоймовірним. Подумайте про n + m випадкових рядків на гіперкубі. Якось відстань забивання кожної пари становить приблизно d / 2, і вам потрібно перевірити всі пари, щоб знайти найближчу пару.
Саріель Хар-Пелед

@ Саріель Хар-Пелед: Як писав Суреш, проблему можна вирішити за час O (n log n) (де n = max {| M |, | N |}) для будь-якої постійної d. Тому "ви повинні перевірити всі пари, щоб знайти найближчу пару" для мене не звучить правильно.
Цуйоші Іто

Відповіді:


6

Щойно зрозумів, що ти просиш справи, що . Тоді ви можете робити матричне множення, правда? Запишіть - матрицю рядків , як матрицю стовпців , заперечуйте записи і обчисліть матрицю . Очевидно, що є відстанню Хеммінга між - їм точкою і - й точкою . Відповідно до останнього прориву, це має час роботи (але у мене є рукопис на 50 000 сторінок, який показує, як зробити це матричне множення вM X N Y Y Z = X Y z i , j i M j N O ( d 2.3727 ) O ( d 2.3726999999 )|M|=|N|=dMXNYYZ=XYzi,jiMjNO(d2.3727)O(d2.3726999999) час по справжньому простому алгоритму).

Подібний ефект можна отримати, якщо матриці не є квадратами. Я думаю, що Урі Цвік в цій справі має статтю про швидке множення матриць.

У певному сенсі це не надто цікаво - ми хочемо уникати терміну . Поліпшення терміну " - це щось на зразок мех, мех ...dO(|M||N|)d


Чудова знахідка. З іншого приводу, мій колега знайшов цей документ: toc.cse.iitk.ac.in/articles/v008a014/v008a014.pdf, і лише зараз я усвідомлюю, що це було написано вами. Сторінка 17+ особливо цікава ..
HdM

Так. Виглядає звично - але зауважте, що це наближення - Суреш попросив точного результату ...
Саріель Хар-Пелед

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.