Trova le distanze sommate più piccole abbinando in modo univoco gli elementi di un set agli elementi di un altro set


8

Come input ho due serie di punti in R N , in genere per N grande, ad esempio N = 40. Supose entrambi i set hanno m elementi:

S = s 1 ... s m

T = t 1 ... t m

Semanticamente entrambi gli insiemi sono uguali, ma a causa del rumore (di qualsiasi tipo) sui punti R ^ N, gli elementi che dovrebbero essere semanticamente uguali hanno comunque una distanza maggiore di 0.

Quello che voglio trovare sono m tuple (s i , t j ) in modo tale che la somma della distanza (s i , t j ) sia minimizzata e tale che s k e t k si verifichino esattamente una volta nell'insieme di tuple per k = 1 ... m. Fondamentalmente (i, j) devono essere scelti come torri su una scacchiera che non possono colpire l'un l'altro minimizzando le distanze sommate.

In altre parole, voglio trovare una mappa su una tra S e T che "è una specie di mappa identitaria, ma robusta al rumore". Partiamo dal presupposto che la misura della distanza sia una buona indicazione di quanto elementi simili siano.

Fondamentalmente ho bisogno di trovare una permutazione di 1 ... N, e quindi penso che questo problema sia NP-hard o NP-complete, poiché "sembra" abbastanza simile al TSP; tuttavia non sono stato in grado di riscrivere il problema TSP in un sottoinsieme del mio problema qui.

Questo problema è realisticamente risolvibile per N di grandi dimensioni? C'è un nome per questo problema? Quale sarebbe una soluzione fattibile? Esistono altri criteri che potrebbero essere migliori delle distanze sommate?

Ho pensato a un approccio avido, lascia che D sia una matrice delle distanze, d ij = distance (s i , t j ).

T = {}
while D is not empty:
    (i,j) = argmin-(i,j) dij
    append (i,j) to T
    set row i and column j to infinity.

Ciò non risulta nella soluzione ottimale, ma trova una soluzione. Questa sarebbe la mia scommessa migliore? Dovrei usare la ricottura simulata o è eccessiva?

PS: dal mio punto di vista, questo è solo un piccolo problema in un problema ML più grande, tuttavia, sono molto interessato al background CS di esso.


Non sono sicuro, ma forse questa discussione può esserti di aiuto?

Sono molto interessato a questo problema poiché mi sono imbattuto anche durante la progettazione di alcuni algoritmi ML ...
daaxix,

Non riesco a vedere alcun modo per evitare di risolvere il problema della somma delle radici quadrate come parte di questo problema. (Inoltre, non vedo alcun argomento sul fatto che questo problema sia difficile da SoSR.)

"Fondamentalmente ho bisogno di trovare una permutazione di 1 ... N, e quindi penso che questo problema sia NP-difficile o NP-completo" - proprio come l'ordinamento, hm?
Raffaello

@Raphael: buon punto. Era più una sensazione viscerale, che come affermato nell'OP non riesco a trovare argomenti. Da qui la domanda "Questo problema è realisticamente risolvibile per N di grandi dimensioni?"
Herbert,

Risposte:


6

Questo è il problema di trovare la corrispondenza massima in un grafico bipartito ponderato. Esistono algoritmi efficienti che risolvono questo problema in tempi polinomiali.

Fondamentalmente, hai un grafico bipartito completo con 2m vertici. S forma un insieme di vertici; Tforma l'altro insieme di vertici. Per ciascunoi,j, crea un vantaggio da si per tj il cui peso è uguale a d(si,tj), la negazione della distanza tra si e tj.

Ora, vuoi trovare un abbinamento il cui peso sia il più grande possibile. Ciò corrisponde a un insieme di coppie(si,tj)la cui distanza totale è il più piccola possibile. Da lì, è possibile utilizzare gli algoritmi esistenti su questo grafico per trovare la corrispondenza del peso massimo.


3

Ecco un metodo probabilistico rapido che potrebbe funzionare per te.

  1. Proiettare i punti su una linea casuale e risolvere il problema di corrispondenza 1D in questa linea.

  2. Ripeti il ​​processo per una manciata di diverse righe casuali per ottenere una raccolta di abbinamenti candidati.

  3. Chiedi ai tuoi incontri candidati di "votare" punto per punto per trovare il "migliore" abbinamento.

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.