-1

BFS from my textbookBreitensuche Pseudo-Code Legendes

Ich habe zwei Fragen zum pseduo Code oben.

  1. Was macht die Funktion SOLUTION (Knoten)? Wie würde man es umsetzen?
  2. In der drittletzten Zeile überprüfen wir, ob das Kind nicht in der Grenze ist. Wie würde man das in einer FIFO-Warteschlange überprüfen?
+0

Insbesondere: (1) Es gibt viele Erklärungen online für BFS; Dies ist im Wesentlichen Dijkstra-Algorithmus. SO zu bitten, Code für Sie zu schreiben, übersteigt den Zweck der Website. (3) SO zu bitten, Ihre Implementierung Korrektur zu lesen, geht * weit * über den angegebenen Zweck hinaus. Führen Sie den Code aus. Probier es aus. Debuggen Sie es. – Prune

Antwort

3
  1. SOLUTION(node) gibt die vollständige Lösung für das Problem, anstatt nur einen Knoten. In einem Wegfindung Problem, könnte es einen vollständigen Pfad von Anfang zurückkehren Knoten

Beispiel zu beenden:

def SOLUTION(node): 
    result = [] 
    while(node.predecessor is not None): 
     result.append(node.predecessor) 
     node = node.predecessor 
  1. lineare Suche über die Grenze. Wenn dies nicht möglich ist, funktioniert es immer noch so lange, wie Sie überprüfen, ob der Knoten nach dem Dequeuing untersucht wurde. Dies erfordert jedoch zusätzlichen Arbeitsspeicher.
+0

Und dann das umgekehrte Ergebnis zurückgeben? –

+0

Wie würde man Ihren zweiten Anspruch bestätigen? Warum sollte die Überprüfung unnötig sein? –

+0

Ja, du hast Recht, das Ergebnis sollte umgekehrt werden. Die Überprüfung ist nicht notwendig, da wir nicht jeden Knoten überprüfen müssen, wenn er an die Grenze _added_ ist, können wir überprüfen, wann er von der Grenze _entfernt_ ist, und alle Knoten werden noch überprüft. Das ist nicht ganz gleich dem, was ich oben geschrieben habe, also habe ich bearbeitet – user3080953