Was bedeutet pi in diesem Pseudocode des BFS-Algorithmus?


9

Ich habe folgende Pseudo - Code für die Breitensuche Algorithmus

BFS(G,s)
 1 for each vertex uV(G) \ {s}
 2     color[u] = white
 3     d[u] = ∞
 4     π[u] = nil
 5 color[s] = gray
 6 d[s] = 0
 7 π[s] = nil
 8 Q = ∅
 9 Enqueue(Q,s)
10 while q ≠ ∅
11     u = Dequeue(Q)
12     for each vAdj[u]
13         if color[v] == white
14             color[v] = gray
15             d[v] = d[u] + 1
16             π[v] = u
17             Enqueue(Q,v)
18     color[u] = black

Original Bild

Ich verstehe nicht, was der Buchstabe π in diesem Zusammenhang anzeigt. Ich bin mit diesem Algorithmus nicht vertraut und es ist schwer zu erraten.

Ich denke, dzeigt die Entfernung an, colorist natürlich die Farbe, aber das π... es scheint eine Variable zu sein, aber ich verstehe ihre Funktion in diesem Pseudocode nicht.


2
@Snowman Ich würde mich eher für den Stil der Informatik und der akademischen Veröffentlichungen als für Mathematik entscheiden , aber ich stimme der allgemeinen Idee zu. Diese Frage zu dieser Verwendung wurde möglicherweise durch Lesen der Wikipedia-Seite beantwortet , und π wird nicht häufig verwendet, sondern ist spezifisch dafür, wie der Autor den Algorithmus schreibt. Ich mache mir Sorgen, dass es viel zu viele Variationen des Pseudocodes gibt und ich frage, was jedes Zeichen in jedem Stil bedeuten könnte, außer Kontrolle zu geraten.

1
Wird im Pseudocode häufig der Buchstabe π verwendet? Manchmal, aber die Bedeutung variiert je nach Kontext.
Rufflewind

1
@Snowman: π hier ist keine Funktion. Es ist ein veränderliches Array von Scheitelpunkten, die durch Scheitelpunkte indiziert sind.
Rufflewind

1
In diesem Zusammenhang ist π nur ein Symbol, das im Algorithmus verwendet wird, ähnlich wie d und color. Manchmal verwenden Algorithmusschreiber lieber Einzelbuchstabensymbole als niedliche Namen wie "parentVertices" oder etwas, das in einer Programmiersprache verwendet wird.
Brandin

@Snowman Machst du Witze? Es ist keine mathematische Frage. Es geht darum, einen Pseudocode zu interpretieren, um ein Programm zu schreiben. Warum sollte es nicht um Softwareentwicklung gehen, kann ich wirklich nicht verstehen.
nbro

Antworten:


17

Ich glaube, dass die Verwendung von π hier tatsächlich "Eltern von" ist. Also in diesem Fall die „Eltern“ von v   sind u , weil wir an allen Knoten neben freuen u .


0

Der π-Vektor behält sicher den Knoten u bei, mit dem Sie in Knoten v gekommen sind. Dies ist hilfreich, wenn Sie den BFS-Baum des Diagramms erstellen müssen. Obwohl dies nicht erforderlich ist, reduziert diese Technik die Komplexität erheblich, wenn Sie mehr Zeit für das BFS benötigen (z. B. den Edmonds-Karp-Algorithmus zur Berechnung des maximalen Flusses zwischen zwei Knoten in einem Diagramm). In diesem Fall müssen Sie das BFS nicht mehrmals ausführen, da Sie den BFS-Baum bereits erstellt haben, und ihn von den Blättern zur Wurzel durchlaufen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.