벨만 포드 알고리즘 예제

이 알고리즘은 미국의 수학자 리처드 벨먼과 레스터 포드에 의해 도입되었다. 집에서 야구 경기를 해야 하는 시나리오를 상상해 보십시오. 길을 따라, 각 도로에, 두 가지 중 하나가 발생할 수 있습니다. 첫째, 때로는 당신이 사용하는 도로는 유료 도로이며, 당신은 돈의 일정 금액을 지불해야합니다. 둘째, 때로는 아는 사람이 그 거리에 살고 있습니다 (가족이나 친구처럼). 그 사람들은 당신이 당신의 지갑을 재입고 하는 데 도움이 돈을 줄 수 있습니다. 당신은 마을을 가로 질러 얻을 필요가, 당신은 핫도그를 살 수 있도록 가능한 한 많은 돈으로 마을을 가로 질러 도착하려면. 유료 도로가 어떤 도로이고 어떤 도로에 돈을 줄 수 있는 사람이 있는지 알고 있다는 점을 감안할 때 Bellman-Ford를 사용하여 최적의 경로를 계획할 수 있습니다. Bellman-Ford 알고리즘은 지정된 소스 정점과 그래프의 다른 모든 정점 사이의 최단 경로를 찾는 그래프 검색 알고리즘입니다. 이 알고리즘은 가중치 및 비가중치 그래프 모두에서 사용할 수 있습니다. Bellman-Ford 알고리즘에 매우 짧고 간단한 추가기능을 사용하면 음의 사이클을 감지할 수 있으며, 이는 최단 경로 찾기를 완전히 허용하지 않으므로 매우 중요합니다.

위에 표시된 Bellman-Ford 알고리즘이 실행된 후 음의 중량 주기를 확인하기 위해 한 번 더 짧은 루프가 필요합니다. Bellman-Ford 알고리즘의 분산 변형은 거리 벡터 라우팅 프로토콜(예: RIP)에 사용됩니다. 알고리즘은 일반적으로 ISP가 소유하는 IP 네트워크의 모음인 자율 시스템 내에 여러 노드(라우터)를 포함하기 때문에 분산됩니다. 그것은 다음과 같은 단계로 구성되어 있습니다 : 벨만 – 포드O에서 실행 ( | V | | E | ) {디스플레이 스타일 O(| V|cdot | 에이트|)} 시간, 여기서 | V | {디스플레이 스타일 | V |} 및 | E | {디스플레이 스타일 | 에이} 는 각각 정점과 모서리 수입니다. 이 설정에서 벨만-포드 알고리즘의 주요 단점은 다음과 같습니다: 클레임: 벨만-포드 부정적인 무게 주기를 보고할 수 있습니다. 음의 사이클의 검출도 중요하지만 이 알고리즘의 주요 기여는 이완의 순서에 있습니다. Dijkstra의 알고리즘은 처리되지 않은 가장 가까운 정점을 선택하는 탐욕스러운 알고리즘입니다. 벨만 포드, 다른 한편으로는, 모든 가장자리를 이완.

그래프와 소스 정점 src를 그래프에 지정하면 지정된 그래프에서 src에서 모든 정점까지의 가장 짧은 경로를 찾습니다. 그래프에 음의 가중치 가장자리가 포함될 수 있습니다. 우리는이 문제에 대한 Dijkstra의 알고리즘을 논의했다. Dijkstra의 알고리즘은 욕심 알고리즘이며 시간 복잡성은 O (VLogV)입니다 (피보나치 힙사용). Dijkstra는 음의 가중치 가장자리가있는 그래프에서 작동하지 않으며 Bellman-Ford는 이러한 그래프에 대해 작동합니다. 벨만 포드는 또한 분산 시스템에 대한 잘 Dijkstra 및 스위트 룸보다 간단합니다. 그러나 벨만 포드의 시간 복잡성은 O (VE),이는 디크 스트라 이상입니다. Bellman-Ford 알고리즘의 의사 코드는 매우 짧습니다.

중국에서는 1994년 Fanding Duan이 발행한 SPFA로 알려진 벨만-포드 알고리즘에 선입선 대기열을 추가하는 알고리즘이 NOIP 및 ACM-ICPC에 참여하는 학생들에게 인기가 있습니다. [7] 알고리즘이 가장 짧은 경로를 찾는 데 사용되는 경우 음수 주기의 존재가 문제가 되어 알고리즘이 정답을 찾지 못하게 합니다. 그러나 음의 주기를 찾자마자 종료되기 때문에 Bellman-Ford 알고리즘은 네트워크 흐름 분석에서 사이클 취소 기술과 같은 대상인 응용 프로그램에 사용할 수 있습니다. [1] Bellman-Ford 알고리즘은 Dijkstra의 알고리즘과 마찬가지로 이완 원리를 사용하여 점점 더 정확한 경로 길이를 찾습니다. Bellman-Ford, 그래도, 이 프로세스와 함께 두 가지 주요 문제를 해결: Bellman-Ford 알고리즘 은 실제로 향상 될 수 있습니다 (비록 최악의 경우) 관찰에 의해, 알고리즘의 주요 루프의 반복은 변경 하지 않고 종료 하는 경우, 후속 반복은 더 이상 변경되지 않기 때문에 알고리즘을 즉시 종료할 수 있습니다.

admin