Складність пошуку кулі, яка максимально збільшує кількість точок, що лежать в ній


10

x1,,xnR2rri=1n1xxir

Алгоритм грубої сили мав би переходити кожну точку і рахувати кількість точок, що знаходяться на відстані менше . Це дало б складність .rO(n2)

Чи є кращий підхід?


Ви подивилися на квадрати та бінарні простори, що розділяють дерева? Я би припускав, що вони можуть дати алгоритм, який є більш ефективним на практиці, хоча я не знаю, який може бути найгірший асимптотичний час роботи.
DW

(Центр ballзаголовка має бути від набору?) Однією з ідей може бути оцінка того, чи малий радіус порівняно із середньою відстані до найближчого сусіда чи на порядок діаметра (і врахувати підходи до цих крайнощів (розміщення площині для малих ) і широкий простір між ними). r
сіра борода

У центрі кулі має бути але якщо є кращий алгоритм з такою умовою, я також зацікавлений. xi
Мануель

Схоже, що швидше, ніж алгоритм для проблеми підрахунку кульового діапазону невідомий. Однак, якщо ви могли прийняти неточну відповідь, ви могли б наблизити диск набором квадратів з різною орієнтацією. Для кожної орієнтації вам доведеться побудувати дерево діапазону ( en.wikipedia.org/wiki/Range_tree ), яке дозволить вам порахувати всі точки всередині квадрата за час (k - кількість отриманих балів). O(n)O(log2(n)+k)
HEKTO

@HEKTO Ви пропонуєте побудувати структуру витрат для запиту, чи точка лежить у прямокутнику за вартістю ? Потім перейдіть по всіх очках, щоб порахувати, скільки інших точок лежить у наближеній кулі? Це могло б спрацювати, але тоді, яка б пам'ять потрібна для такої структури даних? це було б нижче ? O(nlog(n))O(log2(n)+k)O(n2))
Мануель

Відповіді:


5

Схоже, підлінійний алгоритм проблеми підрахунку кульового діапазону наразі не відомий.

Однак, якщо ви могли прийняти неточну відповідь, ви могли б наблизити диск набором квадратів з різною орієнтацією. Для кожної орієнтації вам доведеться побудувати дерево діапазону , яке дозволить підрахувати всі точки всередині квадрата за час (k - кількість результуючих точок).O(log2(n)+k)

Кожне дерево діапазону потребуватиме пам'яті, тим кращою наближенням потрібно більше орієнтацій, які ви повинні використовувати. Наприклад, дві орієнтації дадуть вам восьмикутник , який наближає диск з похибкою площі менше 6%.O(nlog(n))


3

Відповідь не така проста: є розширене вивчення цього питання в теорії складності; це, здається, вивчається, наприклад, як наступна проблема, яка зосереджена на швидких запитах "підрахунку сферичного діапазону". Так, можливі вдосконалені теоретичні рамки, але це, здається, абстрактні алгоритми, які ніхто не реалізував. Якщо ви хочете реальної реалізації, це вже інше питання.

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