Selezione della maggior parte dei punti sparsi da una serie di punti


15

Esiste un algoritmo (efficiente) per selezionare un sottoinsieme di punti da un insieme di punti ( ) in modo tale da "coprire" la maggior parte dell'area (su tutti i possibili sottoinsiemi di dimensione )?MNM<NM

Presumo che i punti siano in piano 2D.

L'algoritmo ingenuo è semplice, ma proibitivo in termini di complessità temporale:

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

Sto cercando un metodo più efficiente o addirittura approssimativo.

Esempio, ecco un piano con alcuni punti casuali in esso:

inserisci qui la descrizione dell'immagine

Per , mi aspetto di selezionare punti come questi:M=5

inserisci qui la descrizione dell'immagine

Nota i punti selezionati (rosso) sono sparsi su tutto il piano.

Ho trovato un articolo " SELEZIONE EFFICIENTE DEI PUNTI CHIAVE DISTRIBUITI DISTRIBUITO PER IL TRACCIAMENTO VISIVO " relativo a questo problema. Tuttavia, ciò presuppone che i punti siano ponderati.



Sfortunatamente, è di solito intorno 1500-5000 e è come 10-50. NM
Libor,

Sono e sia fissi, o stai variando pure (ad esempio, perché si vuole massimizzare la media delle distanze, nel qual caso l'aumento inoltre può produrre una diminuzione)? MNMM
Wolfgang Bangerth,

1
Sospetto fortemente che questo sia NP-difficile. Assomiglia da vicino a un problema di cricca di peso massimo in cui il peso del bordo tra due vertici è la distanza euclidea tra loro. (Credo che ci siano euristiche praticamente efficaci conosciute per max-cricca. Non sono sicuro di quali siano.)
tmyklebu,

1
@hardmath Mi dispiace che fosse un errore di battitura. Ho cercato di illustrare ciò che devo ottenere. Il problema deriva dall'estrazione delle caratteristiche dell'immagine in cui ho bisogno di ottenere solo una manciata di caratteristiche puntuali ma di averle sparse su tutta l'immagine perché vengono utilizzate per la stima della trasformazione e quando sono sparse nello spazio, la stima è più stabile. Forse "entropia" è una misura migliore - Vorrei selezionare i punti modo che siano ovunque, come un gas in stato di entropia massima. D'altra parte, sto cercando di evitare che i punti selezionati vengano raggruppati. M
Libor,

Risposte:


11

Ecco una soluzione approssimativa. Poiché N è così grande e M è così piccolo, che ne dici di quanto segue:

  1. Calcola lo scafo convesso di N
  2. Seleziona fino a M punti dallo scafo che soddisfano i tuoi criteri di distanza massima.
  3. Se il passaggio 2 ti lascia con meno di M punti, seleziona 1 punto dall'interno che massimizza la sua distanza dai punti precedentemente selezionati.
  4. Ripetere il passaggio 3 fino a quando il numero di punti selezionati è M

L'intuizione alla base è che, dal momento che N >> M , e vuoi punti il ​​più lontano possibile l'uno dall'altro, probabilmente saranno vicini ai bordi dei dati, quindi potresti anche iniziare con lo scafo e poi iterativamente vieni da lì.

Inoltre, iniziando dallo scafo, si riduce la ricerca iniziale da N a N 1/2 .


AGGIORNARE

Se i passaggi 3 e 4 sopra richiedono troppo tempo (dal momento che stai testando iterativamente l'interno del tuo set di dati) mi sono venute in mente altre due idee per accelerare il tuo problema.

  1. Ricerca randomizzata : supponi di aver trovato punti P sullo scafo nel Passaggio 2. Quindi disegna casualmente punti M - P dall'interno. Seleziona il set migliore dopo X prove.
  2. Ricottura simulata : calcola il riquadro di delimitazione più piccolo che copre il tuo set di dati (non deve essere allineato con gli assi, potrebbe essere inclinato). Quindi definire un insieme di M punti della griglia uniformemente distribuiti su quel rettangolo di selezione. Nota, questi punti non coincidono necessariamente con nessuno dei punti del tuo set di dati. Quindi, per ogni punto della griglia, trova i vicini più vicini a k nel tuo set di dati. Esegui tutte le combinazioni M x k e seleziona quella che soddisfa i tuoi criteri di distanza massima. In altre parole, stai usando la griglia iniziale come bootstrap per trovare una buona soluzione iniziale.

Grazie. Forse un ha formulato la domanda in modo errato. Sto mirando a una serie di punti in modo tale che "coprano" la maggior parte dell'area. Ho pensato che bastassero solo i criteri di distanza ma sembra che sia necessario aggiungere qualcosa in più.
Libor,

M

1
Forse un modo più formale di affermare il tuo problema è che desideri una tassellatura di dimensione M che copra N e riduca al minimo l'area delle sfaccettature della tassellatura media? Ridurre al minimo le aree delle sfaccettature sembra essere un modo per diffondere i punti e assicurarsi che non si raggruppino.
dpmcmlxxvi,

Sì. Volevo evitare di usare la griglia perché se i punti possono essere raggruppati accidentalmente attorno alle linee della griglia e quindi saranno raggruppati nella selezione.
Libor,

L'unico problema con il tuo avido algoritmo che menzioni è che sarà molto sensibile al punto iniziale iniziale. Gli algoritmi per la crescita dei semi (da cui si inizia dall'interno verso l'esterno) hanno questo problema. L'approccio dello scafo che cito sarà probabilmente più stabile poiché funziona dall'esterno.
dpmcmlxxvi,

6

NM

MM

M1M=3,4,5

M=31M=4M=51

Se desideriamo evitare la selezione predominante di punti alla periferia, un obiettivo diverso potrebbe rivelarsi utile. La massimizzazione della distanza minima tra i punti è un tale criterio. Problemi correlati sono stati risolti presso StackOverflow , Computer Science SE , Math.SE e MathOverflow .

MDMD


1

OK, quindi vuoi selezionare M punti da una data serie di N punti nel piano euclideo, in modo che la somma delle distanze a coppie dei punti selezionati sia massima, corretta?

L'algoritmo di ricerca locale standard è piuttosto veloce e offre una buona approssimazione. L'autonomia è lineare in N e quadratica in M. Il suo rapporto di approssimazione è 1 - 4 / M. Ciò significa che il rapporto migliora all'aumentare di M. Ad esempio, per M = 10 ottiene il 60% del valore ottimale e per M = 50 ottiene il 92% del valore ottimale.

L'algoritmo funziona anche per spazi euclidei di dimensione generale. In questo caso, il problema è NP-difficile. Ma sull'aereo, non si sa se è NP-difficile.

La fonte è questo documento . Spero che sia di aiuto! Meglio, Alfonso



1
Ho già risolto questo problema utilizzando l'algoritmo "Soppressione tramite copertura del disco" dal documento "Selezione efficiente di punti chiave distribuiti spazialmente per il monitoraggio visivo" 18ª Conferenza internazionale IEEE sull'elaborazione delle immagini 2011. IEEE, 2011
Libor,

1
Alfonso, rendi esplicita la tua affiliazione per il documento suggerito.
Nicoguaro

0

Una soluzione è:

  • O(n)

  • Rendi M punti artificiali anche distribuiti all'interno di questo rettangolo di delimitazione, alcuni M sono più difficili di altri. Nel tuo caso quattro negli angoli del rettangolo e uno al centro

  • O(n(log(n)))

  • O(m(log(n)))

O(n(log(n)))MN

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.