Como entrada, tenho dois conjuntos de pontos em R N , normalmente para N grande, por exemplo N = 40. Suponha que ambos os conjuntos tenham m elementos:
S = s 1 ... s m
T = t 1 ... t m
Semanticamente, os dois conjuntos são iguais, mas, devido ao ruído (de qualquer tipo) nos pontos R ^ N, elementos que devem ser semanticamente iguais ainda têm uma distância maior que 0.
O que eu quero encontrar é m tuplas (s i , t j ), de modo que a soma da distância (s i , t j ) seja minimizada e tal que s k e t k ocorram exatamente uma vez no conjunto de tuplas para k = 1 ... m. Basicamente (i, j) devem ser escolhidas como torres em um tabuleiro de xadrez que não podem se atingir, minimizando as distâncias somadas.
Em outras palavras, eu quero encontrar um mapa um para um entre S e T que 'seja uma espécie de mapa de identidade, mas robusto ao ruído'. Assumimos que a medida da distância é uma boa indicação de como os elementos são semelhantes.
Basicamente, preciso encontrar uma permutação de 1 ... N, e, portanto, acho que esse problema é NP-hard ou NP-complete, uma vez que "parece" bastante semelhante ao TSP; no entanto, não pude reescrever o problema do TSP em um subconjunto do meu problema aqui.
Esse problema é realisticamente solucionável para N grande? Existe um nome para este problema? O que seria uma solução viável? Existe outro critério que possa ser melhor do que as distâncias somadas?
Pensei em uma abordagem gananciosa, seja D uma matriz das distâncias, dj = distância (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.
Isso não resulta na solução ideal, mas encontra uma solução. Essa seria minha melhor aposta? Devo usar recozimento simulado ou é um exagero?
PS: do meu ponto de vista, este é apenas um problema menor em um problema de ML maior, no entanto, estou muito interessado no histórico do CS.