Время выполнения оптимального алгоритма жадной

16

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

Эта проблема известна как (дискретная) проблема кластеризации и является -hard. С помощью задачи -комплектного доминирующего множества можно показать, что если для задачи с существует алгоритм -approximation, то .NP NP ρ ρ < 2 P = NPkNPNPρρ<2P=NP

Оптимальный алгоритм приближения очень прост и интуитивно понятен. Сначала произвольно выбирают точку и помещают ее в множество центров кластеров. Затем выбирают следующий кластерный центр так, чтобы он был как можно дальше от всех других кластерных центров. Так что пока , мы неоднократно находим точку , для которых расстояние максимизируется и добавить его в . Однажды мы сделали.p P C2pPC|C|<kjPD(j,C)C|C|=k

Нетрудно видеть, что оптимальный жадный алгоритм выполняется за времени. Возникает вопрос: можем ли мы достичь времени? Насколько лучше мы можем сделать?o ( n k )O(nk)o(nk)

Juho
источник

Ответы:

7

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

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

Юхо
источник
1

Мой вопрос: есть ли способ заставить жадную стратегию выбора работать за время?o(|V|2)

Мне кажется, что вы это описали. Если я читаю слишком далеко в вашем описании, вот что я понял. Иметь ассоциативную структуру данных , связывающую каждый элемент с суммой расстояния до элементов S . Эта структура данных может быть инициализирована по стоимости O ( | V | ) с расстоянием до p, и эта инициализация может создать следующий элемент как побочный эффект без увеличения сложности. Он может быть обновлен после выбора нового элемента по цене O ( | V | ) , снова создавая следующий элемент в качестве побочного эффекта. Повторите, чтобы получить SVSO(|V|)pO(|V|)S, Результирующая сложность .O(k|V|)

AProgrammer
источник
1
Но обратите внимание на ограничение на : в худшем случае оно может быть большим, чем | V | , Я подозреваю, что есть структуры данных, которые достигают даже лучших границ, но я действительно не знаю. k|V|
Юхо
Ой, а не о в вашем вопросе. (Обратите внимание, что в вашем вопросе вы вернулись к k 3 , так что это должно быть улучшение). То, что я предлагаю, не использует тот факт, что вы работаете в евклидовом пространстве, я думаю, вам придется использовать это, чтобы добиться большего успеха, но в настоящее время я не понимаю, как это сделать. oOk3
AProgrammer