2016-04-10 3 views
1

Ich erstellte ein Diagramm mit NetworkX Bibliothek. Ich habe all_shortest_paths(graph, src, dest) verwendet, das eine Liste von allen möglichen kürzesten Wegen von einer gegebenen Quelle und einem gegebenen Ziel zurückgibt (Zum Beispiel, zwischen Knoten 3 und 4 kann es [[3,5,4], [3,5,7 , 6,4]]). Für mein Experiment möchte ich jede zurückgegebene Liste in einem Wörterbuch speichern. Mein Problem ist, wie man Python-Wörterbuch dazu benutzt. Wenn ich das folgende Szenario verwenden, wird es kompliziert:So vereinfachen Sie ein vorgeschlagenes Wörterbuch verschiedener Schlüssel

dict = {'n1':['n2':[n1,n3,n4,n2], 'n3':[n1,n7,n3]], 'n2':['n6':[n2,n6,n8,n10,n2]], ...} 

Ist es möglich, in Python-Wörterbuch in einem Wörterbuch haben, wo der der Schlüssel src Knoten sein wird, und der Wert ist ein weiteres Wörterbuch eines Schlüssels dest und Wert alle möglichen Wege zum Ziel.

Vielen Dank für jede Hilfe.

+2

"Pfad von einem beliebigen SRC-Knoten zu allen seinen Nachbarn" - aber Sie können von einem Knoten zu jedem seiner Nachbarn in einem Schritt gelangen. Sonst wären sie keine Nachbarn. – user2357112

+0

Ich entschuldige mich .. ich meine das Ziel nicht der Nachbar. Es ist behoben .. –

Antwort

1

Sie könnten Ihr Diagramm als Adjazenzmatrix darstellen. Dies ist nur ein zweidimensionales Array aus 1 und 0, mit der Größe (Anzahl der Knoten x Anzahl der Knoten) mit den Zeilen und Spalten, die die Knoten darstellen, und einem Eintrag von 1 in einer Zeile und Spalte, in der die dargestellten Knoten Nachbarn sind. und eine 0, wobei die durch diese Zeile und Spalte dargestellten Knoten keine Nachbarn sind.

Wenn Sie umfangreiche Arbeiten mit Graphen in Python planen, empfehle ich dringend, in das Python-Paket von NetworkX zu schauen. Es ist dokumentiert unter http://networkx.github.io/. Wenn Sie die wissenschaftliche Python-Distribution von Anaconda verwenden, wird NetworkX mitgeliefert.

Es gibt andere Methoden in NetworkX, wie all_pairs_shortest_path() und floyd_warshall(), dass ihre Ergebnisse als Wörterbuch kürzester Pfade durch den Knoten zurück, verkeilt von Quellen- und Zielknoten.

Und all_pairs_shortest_path_length(), die ihre Ergebnisse als Wörterbuch der kürzesten Pfadlängen zurückgibt, die von Quell- und Zielknoten kodiert werden.

Möglicherweise könnte einer von ihnen für Sie arbeiten?

+0

Der Grund ist, dass ich NetworkX-Methode 'all_shortest_paths (graph, src, dest)' verwende, die eine Liste aller kürzesten Pfad von einem src zu dest zurückgibt. Ich möchte dies in einem Diktat speichern, warum ich nicht weiß, wie –

+0

Das ist ein bisschen anders als die ursprüngliche Frage, können Sie es bearbeiten, um zu klären? Möchten Sie den Graphen oder die kürzesten Wege durch ihn darstellen? – paisanco

+0

Danke. Du hast recht. Ich habe gerade die Frage aktualisiert. –

Verwandte Themen