Ich habe einige kürzeste Wegdaten für ein Diagramm. Kann ich das Diagramm selbst aus diesen Daten rekonstruieren?
Genauer gesagt habe ich eine boolesche (0/1) Matrix für jeden Scheitelpunkt v in Graph (V, E) . Das Matrixelement [s, d] ist gleich 1, wenn sich v auf dem kürzesten Weg vom Quellscheitelpunkt s zum Zielscheitelpunkt d befindet . Alle Kanten im Diagramm haben die gleiche Länge.
Zum Beispiel für das Diagramm
(V1) -- (V2) -- (V3)
Die drei Matrizen wären:
V1:
1 1 1
1 0 0
1 0 0
V2:
0 1 1
1 1 1
1 1 0
V3:
0 0 1
0 0 1
1 1 1
Meine Fragen:
1) Gibt es einen Algorithmus, um die Menge der Kanten E aus diesen Matrizen zu rekonstruieren?
2) Ist die Lösung immer einzigartig? (Dies ist eher eine persönliche Neugier als eine echte Anforderung)
3) Kann der Algorithmus auf ungleichmäßige Kantenlängen verallgemeinert werden?
algorithms
kfx
quelle
quelle
v1
und eine Kante liegtv2
, befinden sich genau diese beiden Eckpunkte auf dem kürzesten Weg zwischenv1
undv2
. Also für einen anderen Scheitelpunktv
,[v1, v] == 0 == [v, v1]
in der Matrixv2
und[v2, v] == 0 == [v, v2]
in der Matrix ausv1
.Antworten:
Sie können die Adjazenzmatrix mithilfe der folgenden Eigenschaft aus den Pfadmatrizen extrahieren.
Es gibt eine Kante zwischen 2 Scheitelpunkten
s
undd
genau dann, wenn der kürzeste Pfad zwischen ihnen nurs
und enthältd
.Bei ungleichmäßiger Länge erhalten Sie nur dann die eindeutige Lösung, wenn die Dreiecksungleichung gilt. Andernfalls zeigt ein Diagramm mit
d(p1,p2)=1
d(p2,p3)=2
undd(p1,p3)=4
den kürzesten Weg zwischenp1
undp3
wie durchp2
anstelle der direkten Verbindung. Dies bedeutet, dass die Kante [p1, p3] niemals Teil eines kürzesten Pfades sein wird.quelle