Вибір більшості розсіяних точок із набору точок


15

Чи існує який-небудь (ефективний) алгоритм для вибору підмножини точок з набору точок ( ) таким, щоб вони "охоплювали" більшу площу (над усіма можливими підмножинами розміру )?Н М < Н ММNM<NМ

Я припускаю, що точки знаходяться в 2D площині.

Наївний алгоритм простий, але непомірний за часовою складністю:

for each subset of N points
    sum distance between each pair of points in the subset
    remember subset with the maximum sum

Я шукаю більш ефективний або навіть приблизний метод.

Наприклад, ось площина з деякими випадковими точками в ній:

введіть тут опис зображення

Для M=5 я очікую на вибір таких пунктів:

введіть тут опис зображення

Зверніть увагу, що вибрані точки (червоні) розкидані по всій площині.

Я знайшов статтю " ЕФЕКТИВНО ВИБІР ПРОПОЗИЦІЙНО РАЗРЕШЕНОГО КЛЮЧОВІ ДЛЯ ВІЗУАЛЬНОГО ВІДТВОРЕННЯ ", яка пов'язана з цією проблемою. Однак це передбачає, що бали зважуються.



На жаль, зазвичай становить близько 1500-5000, а M - 10-50. NМ
Libor

Чи є і N фіксованими, чи ти також змінюєш M (наприклад, тому що ти хочеш максимізувати середнє значення відстаней; у цьому випадку збільшення M далі може призвести до зменшення)? МNММ
Вольфганг Бангерт

1
Я сильно підозрюю, що це важко для NP. Це дуже нагадує проблему з максимальною вагою, коли вага краю між двома вершинами - це евклідова відстань між ними. (Я вважаю, що є практично ефективна евристика, відома для макс-кліку. Я не впевнений, які вони.)
tmyklebu

1
@hardmath Вибачте, що це був друкарський помилок. Я намагався проілюструвати те, що мені потрібно досягти. Проблема полягає в витягуванні функції зображення, де мені потрібно отримати лише кілька точкових функцій, але розсипавши їх по всьому зображенню, оскільки вони використовуються для оцінки перетворень і коли вони просторово розсіяні, оцінка є більш стабільною. Можливо, "ентропія" є кращим показником - я хотів би вибрати точки таким чином, щоб вони були всюди, як газ у максимальному стані ентропії. З іншого боку, я намагаюся уникати кластеризації вибраних точок. M
Libor

Відповіді:


11

Ось приблизне рішення. Оскільки N такий великий, а M такий маленький, як щодо наступного:

  1. Обчисліть опуклий корпус N
  2. Виберіть до корпусу до M точок, які відповідають вашим максимальним критеріям відстані.
  3. Якщо крок 2 залишає вас менше, ніж M точок, то виберіть з інтер’єру 1 бал, що максимально віддаляє його від раніше вибраних точок.
  4. Повторіть крок 3, поки кількість вибраних точок не дорівнює M

Інтуїція за цим полягає в тому, що оскільки N >> M , і ви хочете, щоб точки були якнайдалі один від одного, вони, ймовірно, будуть близько до країв даних, тому ви можете також почати з корпусу, а потім ітеративно працюйте звідти.

Також, починаючи з корпусу, ви зменшуєте свій початковий пошук з N до N 1/2 .


ОНОВЛЕННЯ

Якщо кроки 3 та 4 вище займають занадто багато часу (оскільки ви ітеративно випробовуєте внутрішню частину вашого набору даних) у мене виникли ще дві ідеї, щоб пришвидшити вашу проблему.

  1. Випадковий пошук : Скажіть, що ви знайшли P пунктів на корпусі на кроці 2. Потім випадковим чином намалюйте точки M - P з внутрішньої частини. Виберіть найкращий набір після X випробувань.
  2. Імітований відпал : обчисліть найменше обмежувальне вікно, яке охоплює ваш набір даних (не повинно бути узгоджено з осями, його можна нахилити). Потім визначте набір M рівномірно розподілених точок сітки на цьому обмежувальному полі. Зауважте, ці точки не обов'язково збігаються з будь-якими точками вашого набору даних. Потім для кожної точки сітки знайдіть k- найближчих сусідів у вашому наборі даних. Пробігайте кожну комбінацію M x k і виберіть ту, яка відповідає вашим максимальним критеріям відстані. Іншими словами, ви використовуєте початкову сітку в якості завантажувального інструменту, щоб знайти гарне початкове рішення.

Спасибі. Можливо, сформулював це питання неправильно. Я маю на меті встановити набір точок таким чином, щоб вони «покривали» більшу частину площі. Я вважав, що достатньо лише критеріїв відстані, але, схоже, потрібно додати щось більше.
Libor

Гаразд, я оновив питання. Ваш запропонований метод може працювати добре. Я також задумався про жадібний алгоритм версії, який повинен працювати так: 1) виберіть випадкову точку A, 2) вибрати точку B, найбільш віддалену від A, 3) вибрати точку C, найбільш віддалену від A і B, 4) ... продовжити поки не буде обрано точок. М
Libor

1
Можливо, більш формальним способом викласти свою проблему є те, що ви хочете, щоб tessellation розміром M, який охоплював N і мінімізував середню фасетку площі тесселяції? Мінімізація фасетних ділянок, здається, є способом розповсюдження точок навколо і переконання, що вони не збиваються.
dpmcmlxxvi

Так. Я хотів уникнути використання сітки, тому що якщо точки можуть бути випадково згруповані навколо сіток і тоді вони будуть кластеризовані у виборі.
Libor

Одне питання з вашим жадібним алгоритмом, який ви згадуєте, - це те, що він буде дуже чутливий до початкової точки насіння. Алгоритми вирощування насіння (де ви починаєте зсередини) мають цю проблему. Підхід до корпусу, про який я згадую, напевно, буде більш стійким, оскільки працює ззовні.
dpmcmlxxvi

6

NM

MM

M1M=3,4,5

M=31M=4M=51

Якщо ми хочемо уникати переважного вибору точок на периферії, інша мета може виявитись корисною. Максималізація мінімальної відстані між точками є таким критерієм. Пов'язані проблеми стосувались StackOverflow , Computer Computer SE , Math.SE та MathOverflow .

МDМD


1

Гаразд, значить, ви хочете вибрати M точок із заданого набору N точок в площині Евкліда, щоб сума попарних відстаней вибраних точок була максимальною, правильно?

Стандартний алгоритм локального пошуку досить швидкий і пропонує досить гарне наближення. Час виконання лінійний у N та квадратичний у М. Його відношення наближення становить 1 - 4 / М. Це означає, що співвідношення покращується зі збільшенням M. Наприклад, для M = 10 воно отримує 60% оптимального значення, а для M = 50 - 92% оптимального значення.

Алгоритм працює також для евклідових просторів загального виміру. У цьому випадку проблема є NP-жорсткою. Але в літаку невідомо, чи це NP-важко.

Джерелом є цей папір . Сподіваюся, це допомагає! Найкраще, Альфонсо



1
Я вже вирішив це за допомогою алгоритму "Придушення за допомогою покриття диска" з паперу "Ефективний вибір просторово розподілених ключових точок для візуального відстеження" 2011 18-та міжнародна конференція IEEE з обробки зображень. IEEE, 2011
Libor

1
Альфонсо, будь ласка, вкажіть свою приналежність до запропонованого документу.
nicoguaro

0

Одне рішення:

  • О(н)

  • Зробіть M штучними рівномірними розподіленими точками всередині цього обмежуючого прямокутника, деякі M важче, ніж інші. У вашому випадку чотири в кутах прямокутника і один в центрі

  • О(н(лог(н)))

  • О(м(лог(н)))

О(н(лог(н)))МN

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