Angenommen, ich gebe Ihnen ein ungerichtetes Diagramm mit gewichteten Kanten und sage Ihnen, dass jeder Knoten einem Punkt im 3D-Raum entspricht. Immer wenn sich zwischen zwei Knoten eine Kante befindet, ist das Gewicht der Kante der Abstand zwischen den Punkten.
Ihr Ziel ist es, die relativen Positionen der Punkte unter Berücksichtigung der verfügbaren Abstände (dargestellt durch die Kantengewichte) zu rekonstruieren. Wenn ich Ihnen zum Beispiel , dann wissen Sie, dass die Punkte die Eckpunkte eines Tetraeders sind . Sie wissen nicht, wo es relativ zum Ursprung oder seiner Ausrichtung ist oder ob es gespiegelt wurde, aber Sie können erkennen, dass es sich um ein Tetraeder handelt.
Im Allgemeinen ist das Problem einfach, wenn ich Ihnen alle Kantenlängen gebe. Wählen Sie einfach willkürlich einen Punkt , der bei ( 0 , 0 , 0 ) liegt , wählen Sie dann einen benachbarten Punkt p 1 aus und platzieren Sie ihn bei ( d 0 , 1 , 0 , 0 ) . Dann wird ein gemeinsamer Nachbar p 2 trianguliert XY-Ebene, dann wird ein letzter gemeinsamer Nachbar p 3 in den Halbraum z > 0 trianguliertund bricht die verbleibende Symmetrie (vorausgesetzt, Sie haben keine entarteten Punkte ausgewählt). Mit diesen vier Punkten können Sie alle verbleibenden Punkte triangulieren.
Wenn andererseits einige Kantenlängen fehlen, ist es möglicherweise nicht möglich, die Einbettung wiederherzustellen. Wenn es beispielsweise einen Scheitelpunkt gibt, der das Diagramm beim Schneiden trennt, können die beiden Komponenten, die beim Entfernen getrennt werden, relativ zueinander schwingen.
Was die Fragen aufwirft:
- Wie teuer ist es, eine Lösung zu finden?
- Wie stellen Sie fest, ob eine Lösung bis zur Übersetzung / Rotation / Spiegelung eindeutig ist? Ist 3-Verbundenheit ausreichend? Notwendig?
- Welche Bedingungen machen das Problem trivial?
- Wenn ich nicht verspreche, dass die Kantengewichte tatsächlich dem Punktabstand sin 3d entsprechen, wie teuer ist es dann festzustellen, ob eine Einbettung überhaupt möglich ist?