Tempo di esecuzione del ottimale greedy -approximation algoritmo per il -clustering problema


16

Ci viene dato un insieme di punti bidimensionali e un numero intero . Dobbiamo trovare una raccolta di cerchi che racchiudano tutti i punti in modo tale che il raggio del cerchio più grande sia il più piccolo possibile. In altre parole, dobbiamo trovare un set di punti centrali tale che la funzione di costo è ridotto a icona. Qui, D indica la distanza euclidea tra un punto di ingresso p_i e un punto centrale c_j . Ogni punto si assegna al centro del cluster più vicino raggruppando i vertici in k|P|=nkknC={c1,c2,,ck}kcost(C)=maximinjD(pi,cj)Dpicjk cluster diversi.

Il problema è noto come (discreto) problema di cluster k ed è NP -hard. Può essere mostrato con una riduzione del problema dell'insieme dominante dominante NP che se esiste un algoritmo di approssimazione ρ per il problema con ρ<2 allora P=NP .

L' algoritmo di approssimazione 2 ottimale 2è molto semplice e intuitivo. Uno prima prende un punto pP arbitrario e lo mette nell'insieme C dei centri del cluster. Quindi si seleziona il centro del cluster successivo in modo che sia il più lontano possibile da tutti gli altri centri del cluster. Quindi, mentre |C|<k , abbiamo più volte trovare un punto jP per cui la distanza D(j,C) è massimizzato e aggiungerlo alla C . Una volta |C|=k abbiamo finito.

Non è difficile vedere che l'algoritmo avido ottimale viene eseguito nel tempo O(nk) . Ciò solleva una domanda: possiamo raggiungere il tempo o(nk) ? Quanto possiamo fare di meglio?

Risposte:


7

Il problema può essere effettivamente visto geometricamente in un modo in cui vorremmo coprire i punti V con k palle, in cui il raggio della palla più grande è ridotto al minimo.

O(nk) è davvero abbastanza semplice da ottenere, ma si può fare di meglio. Feder e Greene, algoritmi ottimali per il clustering approssimativo, 1988 raggiungono un tempo di esecuzione di utilizzando strutture di dati più intelligenti e dimostrano ulteriormente che ciò è ottimale nel modello dell'albero delle decisioni algebrico.Θ(nlogk)


1

La mia domanda: esiste un modo per far funzionare l'avida strategia di raccolta in tempo?o(|V|2)

Mi sembra che tu l'abbia descritto. Nel caso in cui ho letto troppo lontano nella tua descrizione, ecco cosa ho capito. Avere una struttura dati associativa associare ciascun elemento di con la somma della distanza di elementi di . Questa struttura di dati può essere inizializzata ad un costo con la distanza di e questa inizializzazione può produrre l'elemento successivo come effetto collaterale senza aumentare la complessità. Può essere aggiornato dopo la selezione di un nuovo elemento al costo di , producendo di nuovo l'elemento successivo come effetto collaterale. Ripetere per ottenere . La complessità risultante è .VSO(|V|)pO(|V|)SO(k|V|)


1
Ma nota il limite di : nel peggiore dei casi può essere grande come. Ho il sospetto che ci siano strutture di dati che raggiungano limiti ancora migliori, ma davvero non lo so. k|V|
Juho,

Oops, non nella tua domanda. (Nota che nella tua domanda sei tornato a , quindi questo dovrebbe essere un miglioramento). Quello che propongo non usa il fatto che stai lavorando in uno spazio euclideo, penso che dovrai usarlo per fare meglio, ma al momento non vedo come. oOk3
AProgrammer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.