Encontre as menores distâncias somadas ao emparelhar exclusivamente elementos de um conjunto com elementos de outro conjunto


8

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.


Não tenho certeza, mas talvez esse tópico possa ser útil para você?

Estou muito interessado neste problema como eu também tenho que correr para ele ao projetar alguns algoritmos ML ...
daaxix

Não vejo como evitar o problema da soma das raízes quadradas como parte desse problema. (também não vejo nenhum argumento de que esse problema seja difícil para o SoSR.)

"Basicamente, preciso encontrar uma permutação de 1 ... N, e, portanto, acho que esse problema é NP-difícil ou NP-completo" - assim como a classificação, hum?
Raphael

@ Rafael: Bom ponto. Era mais um pressentimento, que, como afirmado no OP, não consigo encontrar argumentos. Daí a pergunta "Esse problema é realisticamente solucionável para N grande?"
Herbert

Respostas:


6

Esse é o problema de encontrar a correspondência máxima em um gráfico bipartido ponderado. Existem algoritmos eficientes que resolvem esse problema em tempo polinomial.

Basicamente, você tem um gráfico bipartido completo com vértices de . forma um conjunto de vértices; forma o outro conjunto de vértices. Para cada , crie uma aresta de a cujo peso seja igual a , a negação da distância entre e .2mSTi,jsitjd(si,tj)sitj

Agora, você deseja encontrar uma correspondência cujo peso seja o maior possível. Isso corresponde a um conjunto de pares cuja distância total é a menor possível. A partir daí, você pode usar algoritmos existentes neste gráfico para encontrar a correspondência de peso máximo.(si,tj)


3

Aqui está um método probabilístico rápido que pode funcionar para você.

  1. Projete seus pontos em uma linha aleatória e resolva o problema de correspondência 1D nesta linha.

  2. Repita o processo para várias linhas aleatórias diferentes para obter uma coleção de correspondências de candidatos.

  3. Faça com que as correspondências de seus candidatos "votem" ponto por ponto para encontrar a "melhor" correspondência.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.