NetworkX (Python): So ändern Sie das Kantengewicht anhand der festgelegten Regel
Ich habe ein gewichtetes Diagramm:
F=nx.path_graph(10)
G=nx.Graph()
for (u, v) in F.edges():
G.add_edge(u,v,weight=1)
gib die Knotenliste ein:
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9)]
Ich möchte das Gewicht jeder Kante nach folgender Regel ändern:
Entfernen Sie einen Knoten, z. B. Knoten 5, dann werden die Kanten (4, 5) und (5, 6) gelöscht, und die Gewichtung jeder Kante wird wie folgt geändert:
{# diese Kanten befinden sich in der Nähe der gelöschten Kanten (4, 5) und (5, 6)
(3,4): 'weight' = 1,1,
(6,7): 'weight' = 1.1,
# diese Kanten befinden sich in der Nähe der oben genannten Kanten
(2,3): 'weight' = 1,2,
(7,8): 'weight' = 1.2,
# diese Kanten befinden sich in der Nähe der oben genannten Kanten
(1,2): 'weight' = 1,3,
(8,9): 'weight' = 1.3,
# diese Kante ist in der Nähe (1,2)
(0,1): 'weight' = 1.4}
Wie schreibe ich diesen Algorithmus?
PS: path_graph ist nur ein Beispiel. Ich benötige ein Programm für jeden Grafiktyp. Außerdem muss das Programm iterierbar sein, dh ich kann jedes Mal einen Knoten aus dem Ursprungsdiagramm entfernen.
Grüß