Ich möchte nicht die Antwort, aber ich habe Probleme, die Knoten zu verfolgen. Was bedeutet, sage, ich habe Knoten 0, 1, 2, 3,4, 5, 6, 7, wobei 0 starten, und 7 ist das Ziel, machte ich eine Adjazenzmatrix wie so:Tiefe erste Suche in einem ungerichteten, gewichteten Graph mit Adjazenzmatrix?
[
[0, 3, 0, 0, 4, 0, 0, 0],
[3, 0, 0, 0, 5, 0, 8, 0],
[0, 0, 0, 4, 0, 5, 0, 0],
[0, 0, 4, 0, 0, 0, 0, 14],
[4, 5, 0, 0, 0, 2, 0, 0],
[0, 0, 5, 0, 2, 0, 4, 0],
[0, 8, 0, 5, 0, 4, 0, 0],
[0, 0, 0, 14, 0, 0, 0, 0]
]
wenn es eine ist 0, gibt es keine Verbindung zwischen den Knoten, andernfalls, wenn es größer als 1 ist, dann ist die Anzahl das Gewicht der Kante zwischen diesen Knoten.
Ich habe Probleme zu identifizieren, was der tatsächliche Knoten wäre, im Gegensatz zu einem Pfad.
Ich kann das Ziel finden, aber ich würde nicht wissen, wie man den Weg zum Ziel zeigt, und was das Gesamtgewicht wäre?
EDIT: Hier ist, was ich zu erreichen versuchen, (das wird nicht funktionieren, aber dies ist die allgemeine Idee):
def dfs(graph, start, goal):
stack = []
visited = []
stack.append(graph[start])
visited.append(start)
while (len(stack) != 0):
current_node = stack.pop()
if current_node not in visited:
visited.append(current_node)
if current_node = goal:
return path
else:
for nodes in current_node:
if nodes not in visited:
stack.append(nodes)
, wenn die Kanten nicht gewogene waren dies einfacher sein würde, aber ich bin im Grunde alle Nachbarn des aktuellen Knotens hinzufügen, solange ich es nicht auf dem Stapel besucht habe, bis ich den Zielknoten gefunden habe, und dann möchte ich den Pfad zurückgeben. aber in diesem Fall weiß ich, dass es kaputt ist, weil 1) ich nicht sicher bin, wie ich überprüfen kann, ob es der Zielknoten ist, da ich nur die Knoten-Nachbarn speichere und 2) nicht nach dem vollständigen Pfad suche.
Während Sie das Ziel finden, können Sie den besuchten Knoten und das entsprechende Gewicht bis dahin verfolgen .. nicht sicher, ob es hilft .. –
Welchen Algorithmus benutzen Sie? Können Sie Ihren Code in die Frage einfügen? –
Ihre Frage ist nicht klar genug. Was möchten Sie mit DFS erreichen? –