BFS를 사용하여
최단 거리
를 찾는 데 사용되는
그래프 질문을 궁극적으로 3 일 동안 낭비했습니다.
경험을 나누고 싶다.
When the (undirected for me) graph has
fixed distance (1, 6, etc.) for edges
#1
We can use BFS to find shortest path simply by traversing it
then, if required, multiply with fixed distance (1, 6, etc.)
#2
As noted above
with BFS
the very 1st time an adjacent node is reached, it is shortest path
#3
It does not matter what queue you use
deque/queue(c++) or
your own queue implementation (in c language)
A circular queue is unnecessary
#4
Number of elements required for queue is N+1 at most, which I used
(dint check if N works)
here, N is V, number of vertices.
#5
Wikipedia BFS will work, and is sufficient.
https://en.wikipedia.org/wiki/Breadth-first_search#Pseudocode
위의 모든 대안을 시도하면서 3 일을 잃어 버렸습니다. 위에서 다시 확인하고 다시 확인하는
것은 문제가 아닙니다.
(위의 5 가지 문제가 발견되지 않으면 다른 문제를 찾는 데 시간을 투자하십시오).
아래 의견에서 더 많은 설명 :
A
/ \
B C
/\ /\
D E F G
위의 그래프
그래프가 아래로 내려 간다고 가정하면
A의 경우 인접 항목은 B & C이고
B의 경우 인접 항목은 D & E
이고 C의 경우 인접 요소는 F & G입니다
예를 들어 시작 노드는 A입니다.
A, B, C에 도달하면 A에서 B & C까지의 최단 거리는 1입니다.
B를 통해 D 또는 E에 도달하면 A 및 D까지의 최단 거리는 2 (A-> B-> D)입니다.
마찬가지로 A-> E는 2 (A-> B-> E)입니다.
또한 A-> F & A-> G는 2
이제 노드 사이의 1 거리 대신 6이면 대답에 6
예제를 곱하십시오.
각 거리가 1이면 A-> E는 2입니다 (A-> B-> E = 1 + 1 )
각각 사이의 거리가 6이면 A-> E는 12 (A-> B-> E = 6 + 6)입니다.
예, bfs는 경로를 취할 수
있지만 모든 경로를 계산합니다
A에서 Z로 가야하는 경우 모든 경로를 A에서 중간 I로 이동하고 많은 경로가 있으므로 I까지 가장 짧은 경로를 제외한 모든 경로를 버리고 다음 노드 J로 가장 짧은 경로를
다시 계속합니다. I에서 J까지의 다중 경로가 있으며, 우리는 가장 짧은 한 가지
예를
가정합니다.
A-> 거리 5
(STEP)가 있다고 가정합니다. I-> J 거리가 7 & 8 인 다중 경로가 있다고 가정합니다.
우리는 A-> J를 5 (A-> I shortest) + 8 (지금 가장 짧음) = 13으로 취합니다
.A-> J는 이제 13
입니다 .J-> K에 대해 위의 (STEP)를 반복합니다. Z로
이 부분을 2 ~ 3 회 읽고 종이에 그려라. 내가 말한 것을 확실히 얻을 것이다.