tiefes Kopieren einer Graphenstruktur

8

Ich habe eine Grafikklasse mit Knoten, wo jeder Knoten sich mit anderen verbinden kann:

%Vor%

Ich möchte eine vollständige Kopie des gesamten Graphen erstellen. Als ersten Versuch habe ich versucht, einen Kopierkonstruktor wie:

zu erstellen %Vor%

So tiefes Kopieren eines Graphen wäre einfach:

%Vor%

Aber das funktioniert nicht, da dies die Verbindungsbeziehung zwischen den Knoten zerstört. Ich frage mich, ob jemand Vorschläge hat, dies auf eine einfache Art und Weise zu tun? Danke.

    
JRR 14.10.2012, 20:06
quelle

2 Antworten

13

Das Problem besteht darin, dass Sie die Identitäten der Knoten kopieren müssen, nicht nur ihre Werte. Insbesondere wenn Sie einen Knoten kopieren, müssen Sie sich mit den Identitäten der Knoten befassen, auf die er sich bezieht. Das bedeutet, dass ein Kopierkonstruktor oder eine andere Art von rein lokalem Kopiermechanismus die Aufgabe nicht erfüllen kann, da es sich jeweils nur um einen Knoten handelt. Ich bin mir nicht sicher, ob das Sinn macht, aber ich habe es eingegeben und meine Rücktaste funktioniert nicht.

Wie auch immer, Sie können ein anderes Objekt übergeben, das erkennen kann, welcher neue Knoten welchem ​​alten Knoten entspricht. Wenn Sie Lust haben (und wer nicht?), Können Sie dies als Graphisomorphismus bezeichnen. Dies kann so einfach wie eine Karte sein. Wie in diesem komplett nicht getesteten Code:

%Vor%

Sergii erwähnt Serialisierung; Die Serialisierung macht tatsächlich etwas ziemlich Ähnliches, wenn sie einen Objektgraphen durchläuft.

    
Tom Anderson 14.10.2012, 20:40
quelle
6

Ja, tiefe Kopie in Java (nicht nur in Java) kann mit dem Speicher serialization/deserialization gemacht werden wie das

%Vor%     
Sergii Zagriichuk 14.10.2012 20:12
quelle