Я маю два множини точок у двовимірній площині. Я хочу знайти найближчу пару точок таких, що , , а евклідова відстань між є якомога меншою. Наскільки ефективно це можна зробити? Чи можна це зробити в час, де?s , t s ∈ S t ∈ T s , t O ( n log n ) n = | S | + | Т |
Я знаю, що якщо мені дано один набір , то можна знайти найближчу пару точок за час, використовуючи стандартний алгоритм ділення і перемоги . Однак цей алгоритм, схоже, не узагальнює випадок двох множин, оскільки немає зв'язку між відстані між двома найближчими точками в межах або проти відстані між двома найближчими точками в цих множинах.s , s ′ ∈ S O ( n log n )T
Я думав зберегти множину у -d дереві, а потім для кожного , використовуючи запит найближчого сусіда, щоб знайти найближчу точку в до . Однак найгірший час роботи цього може бути таким же поганим, як час . Є результати, які говорять про те, що якщо точки розподілені випадковим чином, тоді очікуваний час виконання кожного запиту дорівнює , тому ми отримаємо алгоритм із очікуваним часом виконання якщо ми були гарантовані, що бали розподіляються випадковим чином - але я шукаю алгоритм, який буде працювати для будь-якого збору балів (не обов'язково випадково розподілених).
Мотивація: ефективний алгоритм був би корисний для цього іншого питання .