이 BFS 알고리즘 의사 코드에서 pi는 무엇을 의미합니까?


9

너비 우선 검색 알고리즘에 다음과 같은 의사 코드가 있습니다.

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

원본 이미지

이 문맥에서 π 문자가 무엇을 나타내는 지 이해하지 못합니다. 이 알고리즘에 익숙하지 않으며 추측하기 어렵습니다.

나는 d거리를 나타냅니다, color물론 색상이지만, 그것은 π... 어떤 종류의 변수 인 것처럼 보이지만이 의사 코드에서 그 기능을 이해하지 못합니다.


2
@ Snowman 저는 수학 보다는 컴퓨터 과학 및 학술 출판물에 사용 된 스타일을 사용 하지만 일반적인 아이디어에 동의합니다. 이 질문에 대해 요구하고 판독 응답되었을 수 있습니다 사용 위키 피 디아 페이지를 , 그리고 π는 일반적으로 사용되는 것이 있지만, 저자가 알고리즘을 쓰는 방법이 아니라 특정하지 않습니다. 의사 코드에는 너무 많은 변형이 있으며 각 스타일의 각 문자가 의미하는 바를 묻습니다.

1
의사 코드에 종종 π 문자가 사용됩니까? 때로는 상황에 따라 의미가 다를 수 있습니다.
Rufflewind

1
@ Snowman : π는 함수가 아닙니다. 꼭짓점으로 인덱스 된 꼭짓점의 가변 배열입니다.
Rufflewind

1
이와 관련하여 π는 알고리즘에서 사용되는 기호이며 d 및 색상과 유사합니다. 때때로 알고리즘 작성자는 "parentVertices"와 같은 귀여운 이름이나 프로그래밍 언어에서 사용되는 경향이있는 문자 대신 단일 문자 기호를 사용하려고합니다.
Brandin

@Snowman 농담 하시나요? 수학 문제가 아닙니다. 프로그램을 작성하기 위해 의사 코드를 해석하는 것입니다. 왜 이것이 소프트웨어 개발에 관한 것이 아닌지, 나는 정말로 이해할 수 없습니다.
nbro

답변:


17

나는 여기서 π의 사용이 실제“부모”라고 믿는다. 따라서이 경우의 "부모" V는   것입니다 U 우리가 인접한 모든 노드에서 찾고 있기 때문에 .


0

π 벡터는 반드시 노드 v에있는 노드 u를 유지합니다. 이것은 그래프의 BFS 트리를 빌드해야 할 때 도움이됩니다. 반드시 필요한 것은 아니지만이 기법은 BFS (예 : 그래프에서 두 노드 사이의 최대 흐름을 계산하는 Edmonds-Karp 알고리즘) 에 더 많은 시간을 수행해야 할 때 복잡성을 크게 줄 입니다. 이 경우 BFS 트리가 이미 구성되어 있으므로 나뭇잎에서 루트로 BFS 트리를 트래버스 할 때 BFS를 더 많이 실행할 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.