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.