I zwei Sätze haben, A und B mit N und M Punkte in R^n sind. Ich weiß, dass N < M immer.finden Sie den nächsten Satz von Punkten auf einem anderen Satz
Der Abstand zwischen zwei Punkten, P und Q , wird durch d ( P, Q ) bezeichnet. Da das Problem generisch ist, könnte dieser Abstand irgendeine Funktion sein (z. B. Euklidischer Abstand).
Ich mag die nächste Teilmenge von B zu A zu finden. Mathematisch würde ich sagen, dass ich die Teilmenge C von B mit Größe N mit dem minimalen globalen Abstand zu A finden möge. Der globale Abstand zwischen A und C wird durch
gegebenD(A,C) = min([sum(d(P_i,Q_i),i=1,N) with P_i in A and Q_i in C* for C* in Permutations of C])
Ich habe über dieses Problem nachgedacht und ich habe einen Algorithmus, der ein lokales Optimum, aber nicht unbedingt die optimal: Finden
Schritt 1), um den nächstgelegenen Punkt jeder Punkt der A in B. Wenn es keine wiederholten Punkte gibt, habe ich die optimale Teilmenge gefunden und beende den Algorithmus. Wenn jedoch Punkte wiederholt werden, fahren Sie mit Schritt 2 fort.
Schritt 2) Vergleichen Sie ihre Abstände (natürlich vergleiche ich den Abstand zwischen Punkten mit dem nächsten Punkt). Der Punkt mit dem minimalen Abstand behält den zuvor gefundenen Punkt und die anderen ändern ihren gewünschten Punkt für den "nächsten" nächsten Punkt, der noch nicht für einen anderen Punkt ausgewählt wurde.
Schritt 3) Überprüfen Sie, ob alle Punkte unterschiedlich sind. Wenn sie sind, beende. Wenn nicht, gehe zurück zu Schritt 2.
Irgendeine Idee? Versuchen alle Kombinationen ist nicht eine gute (ich sollte berechnen M!/(MN)! Globale Abstände)
Haben Sie den [ungarischen Algorithmus] (https://en.wikipedia.org/wiki/Hungarian_algorithm) versucht? –
Können Sie den globalen Abstand genauer definieren? Jetzt sieht es so aus, als ob es Paare mit gleichem Index "abgleicht", aber sie kommen aus Sätzen, so dass undefiniert ist – harold
@EvgenyKluev Ich wusste es nicht. Allerdings sollte ich diese Methode auf M!/((M-N)! * N!) Teilmengen von B anwenden, richtig? – sebacastroh