G = (V, E) - eine gerichtete gewichtete Kurve.Wie berechnet man das Gesamtgewicht der Pfade von gerichteten gewichteten Graphen in DFS in einer Iteration?
D -> G (w:4)
D -> C (w:2)
D -> E (w:2)
C -> F (w:5)
C -> A (w:4)
B -> D (w:3)
B -> E (w:10)
G -> F (w:1)
E -> G (w:6)
A -> D (w:1)
A -> B (w:2)
ich DFS verwenden, um alle einfachen Weg zwischen START zu finden = A Knoten zu END = F Knoten:
def find_all_paths(self, start, end, path=[]):
path = path + [start]
if start == end:
return [path]
if start not in self.edges:
return []
paths = []
for node in self.edges[start]:
if node not in path:
paths.extend(self.find_all_paths(node, end, path))
return paths
Ergebnis:
['A', 'D', 'G', 'F']
['A', 'D', 'C', 'F']
['A', 'D', 'E', 'G', 'F']
['A', 'B', 'D', 'G', 'F']
['A', 'B', 'D', 'C', 'F']
['A', 'B', 'D', 'E', 'G', 'F']
['A', 'B', 'E', 'G', 'F']
Ich muss bekommen Ergebnis wie folgt:
['A', 'D', 'G', 'F'], TOTAL_WEIGHT_OF_PATH = 6
['A', 'D', 'C', 'F'], TOTAL_WEIGHT_OF_PATH = 8
['A', 'D', 'E', 'G', 'F'], TOTAL_WEIGHT_OF_PATH = 10
....
....
Wobei TOTAL_WEIGHT_OF_PATH Summe der Gewichte für jede Kante im Pfad ist. Natürlich konnte ich zählen nur die TOTAL_WEIGHT_OF_PATH Wert nach Ergebnis der DFS bekommen, aber ich brauche es in DFS Schritte für Cutoff-Zustands Suche auf TOTAL_WEIGHT_OF_PATH berechnen