Час виконання оптимального жадібного


16

|P|=nkknC={c1,c2,,ck}kcost(C)=maximinjD(pi,cj)Dпозначає евклідову відстань між вхідною точкою та центральною точкою . Кожна точка присвоює собі найближчий центр кластера, групуючи вершини в різних кластерів.picjk

Проблема відома як (дискретна) проблема кластеризації, і вона -тверда. Це може бути показано зменшенням від -повної домінуючої заданої задачі, що якщо існує алгоритм апроксимації для задачі з то .kNPNPρρ<2P=NP

Оптимальний алгоритм апроксимації дуже простий та інтуїтивний. Один перший вибирає точку довільно і поміщає його в безлічі кластерних центрів. Потім вибирають наступний центр кластера таким, який знаходиться якнайдалі від усіх інших центрів кластерів. Тож поки , ми неодноразово знаходимо точку , для яких відстань максимізує і додати його в . Раз ми закінчили.2pPC|C|<kjPD(j,C)C|C|=k

Не важко помітити, що оптимальний жадібний алгоритм працює в час. Це викликає питання: чи можемо ми досягти часу? Наскільки краще ми можемо зробити?O(nk)o(nk)

Відповіді:


7

Проблему можна реально розглядати геометрично таким чином, що ми хотіли б охопити точок k кулями, де радіус найбільшої кулі мінімізований.Vk

дійсно досить просто досягти, але можна зробити і краще. Федер та Грін, Оптимальні алгоритми для приблизної кластеризації, 1988 р.Досягають часу роботи Θ ( n log k ), використовуючи більш розумні структури даних і далі показують, що це оптимально в алгебраїчній дереві рішень.O(nk)Θ(nlogk)


1

Моє запитання: Чи існує спосіб, як я можу змусити жадну стратегію збору виконуватись в час?o(|V|2)

Мені здається, ви це описали. Якщо я прочитав занадто далеко у вашому описі, ось що я зрозумів. Мати асоціативну структуру даних , яка б пов'язала кожен елемент з сумою відстані до елементів S . Цю структуру даних можна ініціалізувати за вартістю O ( | V | ) з відстанню до p . Отримана складність - OVSO(|V|)p і ця ініціалізація може створити наступний елемент як побічний ефект, не збільшуючи складність. Він може бути оновлений після вибору нового елемента вартістю , знову виробляючи наступний елемент як побічний ефект. Повторіть, щоб отримати SO(|V|)S .O(k|V|)


1
Але зверніть увагу на обмеження на : у гіршому випадку він може бути таким же великим, як | V | . Я підозрюю, що існують структури даних, які досягають ще кращих меж, але я справді не знаю. k|V|
Juho

На жаль, а не про ваше запитання. (Зверніть увагу, що у своєму запитанні ви повернулися до k 3 , тому це повинно бути вдосконаленням). Те, що я пропоную, не використовує той факт, що ви працюєте в евклідовому просторі, я думаю, вам доведеться використовувати це, щоб зробити краще, але наразі я не розумію як.oOk3
AProgrammer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.