Networkx-Diagrammsuchen: dfs_successors vs. dfs_predecessors

Betrachten Sie die folgende Diagrammstruktur (entlehnt vondiese Frage):

G = networkx.DiGraph()
G.add_edges_from([('n', 'n1'), ('n', 'n2'), ('n', 'n3')])
G.add_edges_from([('n4', 'n41'), ('n1', 'n11'), ('n1', 'n12'), ('n1', 'n13')])
G.add_edges_from([('n2', 'n21'), ('n2', 'n22')])
G.add_edges_from([('n13', 'n131'), ('n22', 'n221')])

was ergibt:

n---->n1--->n11
 |     |--->n12
 |     |--->n13
 |           |--->n131 
 |--->n2              
 |     |---->n21     
 |     |---->n22     
 |            |--->n221 
 |--->n3

Ich kann eine Tiefensuche nach Nachfolgern durchführen, die am Knoten beginntn und bekomme:

> dfs_successors(G, 'n')
{'n': ['n1', 'n2', 'n3'],
 'n1': ['n12', 'n13', 'n11'],
 'n13': ['n131'],
 'n131': ['n221'],
 'n2': ['n22', 'n21']}

Wenn ich jedoch eine Tiefensuche nach Vorgängern bei z. Knotenn221, nichts passiert:

> dfs_predecessors(G, 'n221')
{}

Ich würde erwarten, dass die Ausgabe ist:

{'n221': ['n22', 'n2', 'n']}

Was läuft hier falsch und wie kann ich mein erwartetes Verhalten erreichen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage