Ich habe einen bipartiden gewichteten Graphen (genauer ein Zuordnungsproblem) und möchte den günstigsten Pfad/Auswahl finden. Irgendeine Idee, wie ich DFS oder Greedy BFS implementieren würde, um den Pfad zu erreichen?Günstigster Pfad in einem bipartiden gewichteten Diagramm DFS/Greedy BFS
Ich habe die Grafik als adiacency Liste dargestellt (oder so glaube ich, am besten wäre) wie dieser und der DFS-Algorithmus
adjlist = {"A": ["W", "X"],
"B": ["W", "X", "Y", "Z"],
"C": ["Y", "Z"],
"D": ["W", "X", "Y", "Z"],
"W": ["A", "B", "D"],
"X": ["A", "B", "D"],
"Y": ["B", "C", "D"],
"Z": ["B", "C", "D"] }
def dfser(graph, root):
visited =[]
stack = [root, ]
while stack:
node = stack.pop()
if node not in visited:
visited.append(node)
stack.extend([x for x in graph[node] if x not in visited])
return visited
Ist es möglich, was ich will? Das Ergebnis muss so aussehen: AWBXCYDZ oder etwas mit der billigsten Summe.
Oder kann ich alle möglichen Traversals von Root bekommen? Dieses DFS gibt mir nur einen, aber ich möchte alle möglichen Transversale
Ist das Hausaufgaben? Wenn nicht, könnten Sie sich das Modul 'networkx' anschauen, das viele dieser Algorithmen implementiert hat. Sie würden auch mehr Hilfe bekommen, wenn Sie zeigen, was Sie ausprobiert haben und worauf Sie besonders fest sind. – AChampion