Sezionare una serie di punti in due sottoinsiemi ottimali


9

Voglio dividere un insieme di punti in due sottoinsiemi di dimensioni uguali in modo tale da ridurre al minimo la somma dei quadrati all'interno del cluster. Possiamo supporre che i punti si trovino nello spazio euclideo bidimensionale. Spero in qualcosa di più veloce di un algoritmo di clustering generico k-dato dato che k = d = 2. Qualcuno può indicarmi la direzione di un buon algoritmo per questo?

Una soluzione esatta non è necessaria se abbiamo una buona approssimazione.

Grazie!

Risposte:


10

Se insisti su una partizione precisa, devi calcolare tutte le partizioni bilanciate di un insieme di punti nel piano da una linea (la partizione ottimale è una partizione Voronoi, quindi i due set di punti sono separati da una linea). Tali partizioni sono conosciute come -sets. L'algoritmo veloce attualmente noti per questo lavoro a O ( n 4 / 3 log n ) per calcolare queste partizioni nel duplice [cioè, il k -livello di un insieme di n righe, per k = n / 2KO(n4/3logn)KnK=n/2]. Una volta che hai tutte le partizioni possibili, devi solo controllare ognuna di esse. Utilizzando trucchi standard, questo può essere fatto in tempo costante per ogni partizione.

KK=n/2

KO(ε-2logn)n

http://sarielhp.org/p/03/kcoreset/

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.