J'ai 2 ensembles d'entiers, A et B, pas nécessairement de la même taille. Pour mes besoins, je prends la distance entre chaque 2 éléments a et b (entiers) pour être juste abs(a-b)
.Mesure de distance entre deux ensembles de taille éventuellement différente
Je définissant la distance entre les deux ensembles de la manière suivante:
- Si les ensembles sont de la même taille, de minimiser la somme des distances de toutes les paires [a, b] (a partir de A et B à partir de B), minimisation sur toutes les 'partitions paires' possibles (il y a n partitions possibles).
- Si les ensembles n'ont pas la même taille, disons A de taille m et B de taille n, avec m < n, puis minimisez la distance de (1) sur tous les sous-ensembles de B qui sont de taille m.
Ma question est, est l'algorithme suivant (juste une supposition intuitive) donne la bonne réponse, selon la définition écrite ci-dessus.
- construire une matrice
D
de taillem X n
, avecD(i,j) = abs(A(i)-B(j))
- Trouver l'élément de
D
plus petit, accumulez, et supprimer la ligne et la colonne de cet élément. Accumulez la plus petite entrée suivante et continuez à accumuler jusqu'à ce que toutes les lignes et colonnes soient supprimées.
par exemple, si A={0,1,4}
et B={3,4}
, puis D
est (avec les éléments ci-dessus et à gauche):
3 4
0
3 4
1
2 3
4
1 0
Et la distance est 0 + 2 = 2
, venant de jumelage 4
avec 4
et 3
avec 1
.
+1: agréable de souligner que le problème a une structure non présente en général bipartite correspondant – lijie
Merci. Puisque la taille maximale 'N' est limitée dans mon cas d'utilisation, je peux réellement construire une table de toutes les distances pour toutes les tailles possibles entre' 0' et 'N', et l'utiliser en exécution (au lieu de le calculer en cours d'exécution -temps). –
Quelle est la différence entre l'appariement bipartite de poids minimum et le problème d'assignation mentionné ci-dessous par @lijie? –