Cosa significa pi in questo pseudocodice dell'algoritmo BFS?

8

Ho il seguente pseudocodice per algoritmo di ricerca per ampiezza

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

Immagine originale

Non capisco cosa indica la lettera π in questo contesto. Non ho familiarità con questo algoritmo ed è difficile da indovinare.

Penso che d indichi la distanza, color è ovviamente il colore, ma che π ... sembra essere una variabile di qualche tipo ma non capisco la sua funzione in questo pseudocodice.

    
posta nbro 17.06.2015 - 02:32
fonte

2 risposte

16

Credo che l'uso di π qui sia un vero "genitore di". Quindi in questo caso, il "genitore" di v è u perché stiamo guardando tutti i nodi adiacenti a u .

    
risposta data 17.06.2015 - 03:21
fonte
0

Il vettore π mantiene sicuramente il nodo u con cui sei entrato nel nodo v. Ciò aiuta quando devi costruire l'albero BFS del grafico. Sebbene non sia necessario, questa tecnica riduce molto la complessità quando devi eseguire più tempo con BFS (ad esempio il Algoritmo di Edmonds-Karp per calcolare il flusso massimo tra due nodi in un grafico). In questo caso non è necessario eseguire BFS più volte, dato che l'albero BFS è già stato costruito e lo attraversa dalle foglie alla radice.

    
risposta data 19.06.2015 - 09:16
fonte

Leggi altre domande sui tag