Zuordnen eines Satzes von 3D-Punkten zu einem anderen Satz mit einer minimalen Summe von Abständen

8

Gegeben sind zwei Sätze von dreidimensionalen Punkten, eine Quelle und eine Zielmenge. Die Anzahl der Punkte in jedem Satz ist beliebig (kann Null sein). Die Aufgabe besteht darin, jedem Zielpunkt einen oder keinen Quellpunkt zuzuweisen, so dass die Summe aller Entfernungen minimal ist. Wenn es mehr Quell- als Zielpunkte gibt, werden die zusätzlichen Punkte ignoriert.

Es gibt eine Brute-Force-Lösung für dieses Problem, aber da die Anzahl der Punkte groß sein kann, ist es nicht machbar. Ich habe gehört, dass dieses Problem in 2D mit gleichen Größenordnungen einfach ist, aber leider sind diese Voraussetzungen hier nicht gegeben.

Ich bin an Annäherungen und genauen Lösungen interessiert.

Edit: Haha, ja, ich nehme an, es hört sich nach Hausaufgaben an. Eigentlich ist es nicht. Ich schreibe ein Programm, das Positionen von einer großen Anzahl von Autos erhält, und ich versuche, sie ihren jeweiligen Parkzellen zuzuordnen. :)

    
mafu 09.03.2009, 14:31
quelle

3 Antworten

1

Von meinem Kopf weg, räumliche Sortierung gefolgt von simulierter Ausheilung.

Gitter den Raum & Amp; sortiere die Sätze in räumliche Zellen.

Löse das O (NM) -Problem innerhalb jeder Zelle, dann innerhalb von Zellennachbarschaften und so weiter, um eine Testübereinstimmung zu erhalten.

Führen Sie abschließend viele Simulationsglühzyklen durch, in denen Sie die Treffer zufällig ändern, um den nahegelegenen Raum zu erkunden.

Dies ist eine Heuristik, die Ihnen eine gute Antwort liefert, aber nicht unbedingt die beste, und sie sollte aufgrund der anfänglichen Gittersortierung ziemlich effizient sein.

    
Mike Dunlavey 10.03.2009, 11:44
quelle
3

Eine Möglichkeit, wie Sie dieses Problem angehen könnten, ist die Behandlung als klassisches Aufgabe-Problem: Ссылка

Sie behandeln die Punkte als die Scheitelpunkte des Graphen, und die Gewichte der Kanten sind die Entfernung zwischen den Punkten. Da die schnellsten Algorithmen davon ausgehen, dass Sie nach maximalem Matching suchen (und nicht nach Minimum wie in Ihrem Fall) und dass die Gewichte nicht negativ sind, können Sie Gewichte neu definieren, z. B .:

%Vor%

Dabei ist bigNumber größer als Ihre längste Entfernung.

Offensichtlich haben Sie einen zweiteiligen Graphen. Dann verwenden Sie einen der Standardalgorithmen für den maximalen gewichteten zweiteiligen Matching (viele Ressourcen im Web, zB Ссылка oder Wikipedia für die Übersicht: Ссылка ) Auf diese Weise werden Sie am Ende landen mit einem O (NM max (N, M)) - Algorithmus, wobei N und M die Größe Ihrer Punkte sind.

    
Grzenio 09.03.2009 15:02
quelle
1
___ answer62683 ___

Obwohl ich keine Antwort auf Ihre Frage habe, kann ich vorschlagen, die folgenden Themen zu untersuchen. (Ich weiß sehr wenig darüber, aber ich habe es vorher auf Stack Overflow gesehen.)

Hoffe, das hilft ein bisschen.

    
___ qstntxt ___

Gegeben sind zwei Sätze von dreidimensionalen Punkten, eine Quelle und eine Zielmenge. Die Anzahl der Punkte in jedem Satz ist beliebig (kann Null sein). Die Aufgabe besteht darin, jedem Zielpunkt einen oder keinen Quellpunkt zuzuweisen, so dass die Summe aller Entfernungen minimal ist. Wenn es mehr Quell- als Zielpunkte gibt, werden die zusätzlichen Punkte ignoriert.

Es gibt eine Brute-Force-Lösung für dieses Problem, aber da die Anzahl der Punkte groß sein kann, ist es nicht machbar. Ich habe gehört, dass dieses Problem in 2D mit gleichen Größenordnungen einfach ist, aber leider sind diese Voraussetzungen hier nicht gegeben.

Ich bin an Annäherungen und genauen Lösungen interessiert.

Edit: Haha, ja, ich nehme an, es hört sich nach Hausaufgaben an. Eigentlich ist es nicht. Ich schreibe ein Programm, das Positionen von einer großen Anzahl von Autos erhält, und ich versuche, sie ihren jeweiligen Parkzellen zuzuordnen. :)

    
___ tag123algorithm ___ Ein Algorithmus ist eine Folge wohldefinierter Schritte, die eine abstrakte Lösung für ein Problem definieren. Verwenden Sie dieses Tag, wenn sich Ihr Problem auf den Algorithmusentwurf bezieht. ___ tag123mapping ___ Korrespondiert jedes Element eines gegebenen Satzes mit einem eindeutigen Element eines anderen Satzes oder verweist auf einen Prozess des Erstellens von Datenelementzuordnungen zwischen zwei unterschiedlichen Datenmodellen (Objekten). ___ answer629787 ___

Von meinem Kopf weg, räumliche Sortierung gefolgt von simulierter Ausheilung.

Gitter den Raum & Amp; sortiere die Sätze in räumliche Zellen.

Löse das O (NM) -Problem innerhalb jeder Zelle, dann innerhalb von Zellennachbarschaften und so weiter, um eine Testübereinstimmung zu erhalten.

Führen Sie abschließend viele Simulationsglühzyklen durch, in denen Sie die Treffer zufällig ändern, um den nahegelegenen Raum zu erkunden.

Dies ist eine Heuristik, die Ihnen eine gute Antwort liefert, aber nicht unbedingt die beste, und sie sollte aufgrund der anfänglichen Gittersortierung ziemlich effizient sein.

    
___ tag123math ___ Mathematik ist das Studium von Quantität, Struktur, Raum und Veränderung. Alle mathematischen Fragen auf dieser Website sollten programmbezogen sein. ___ answer626585 ___

Eine Möglichkeit, wie Sie dieses Problem angehen könnten, ist die Behandlung als klassisches Aufgabe-Problem: Ссылка

Sie behandeln die Punkte als die Scheitelpunkte des Graphen, und die Gewichte der Kanten sind die Entfernung zwischen den Punkten. Da die schnellsten Algorithmen davon ausgehen, dass Sie nach maximalem Matching suchen (und nicht nach Minimum wie in Ihrem Fall) und dass die Gewichte nicht negativ sind, können Sie Gewichte neu definieren, z. B .:

%Vor%

Dabei ist %code% größer als Ihre längste Entfernung.

Offensichtlich haben Sie einen zweiteiligen Graphen. Dann verwenden Sie einen der Standardalgorithmen für den maximalen gewichteten zweiteiligen Matching (viele Ressourcen im Web, zB Ссылка oder Wikipedia für die Übersicht: Ссылка ) Auf diese Weise werden Sie am Ende landen mit einem O (NM max (N, M)) - Algorithmus, wobei N und M die Größe Ihrer Punkte sind.

    
___ qstnhdr ___ Zuordnen eines Satzes von 3D-Punkten zu einem anderen Satz mit einer minimalen Summe von Abständen ___ tag123mathematische Optimierung ___ Die mathematische Optimierung befasst sich mit der Maximierung oder Minimierung einer Zielfunktion, indem Werte aus einem zulässigen zulässigen Satz möglicher Werte ausgewählt werden. Mathematische Optimierung wird oft auch als mathematische Programmierung oder einfach als Optimierung bezeichnet. ___
mweerden 09.03.2009 15:01
quelle