Eu tenho o seguinte pseudocódigo para o algoritmo de pesquisa da primeira largura
BFS(G,s)
1 for each vertex u ∈ V(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 v ∈ Adj[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
Não entendo o que a letra π indica nesse contexto. Não conheço esse algoritmo e é difícil adivinhar.
Acho que d
indica a distância, color
é claro a cor, mas isso π
... parece ser uma variável de algum tipo, mas não entendo sua função nesse pseudocódigo.
Respostas:
Eu acredito que o uso de π aqui é "pai de" real. Portanto, neste caso, o "pai" de v é u porque estamos vendo todos os nós adjacentes a u .
fonte
O vetor π certamente mantém o nó u com o qual você entrou no nó v. Isso ajuda quando você precisa construir a árvore BFS do gráfico. Embora não seja necessário, essa técnica reduz muito a complexidade quando você precisa executar mais tempo o BFS (por exemplo, o algoritmo Edmonds – Karp para calcular o fluxo máximo entre dois nós em um gráfico). Nesse caso, você não precisa executar o BFS mais vezes, já que a árvore do BFS foi construída e atravessá-la das folhas para a raiz.
fonte