그래프 이론 - 최단 경로 알고리즘

가장 일시적으로 네 마스터,하지만 난 다 익스트라의 복잡성 사용할 수 있습니다 느낄 단락의 경우;

1 플로이드 알고리즘 :

환승 지점, 모든 지점을 통해 때마다 각 지점 폭력의 트리플 사이클이 통과 지점 가장 짧은 경로를 통해 업데이트 할 수있는 경우, 참조입니다;

장점 : N <이와 같이,도 인접 행렬 메모리와가 수정 (200)의 임의의 두 지점이 짧다; 좋은 기록하는 단계;

단점 : 복잡도가 너무 높으면, O (N ^ 3) 복잡한 너무 불필요한 계산이고;

보이드 플로이드 () {
     // J에게 DIS 어레이 난 최단 경로 나타내는 
     ( INT에서 K = 0 , K <N-; K ++) // 포커스 외부에 있어야 
     ( INT 난 = 0 ; I <N-; I ++ )
      ( INT J = 0 ; J <N-, J ++ )
    12월 [I] [J] = 분 (DIS [I] [J], 불이익 [I] [K] + 12월 [K] [J]);

}
코드보기

 

 

 2 벨보이 - 플로이드 알고리즘 :

그것은 이웃 업데이트 최단 경로 단일 소스를 해결할 수 있는지 최단 경로를 n 회 반복하고, 각각의 시간 참조 각 가장자리에 의하면

장점은이 방법이 고려 될 수 1E7 N <병렬로 계산도 저장 구조의 어레이를 이용하여, 라인주기를 결합하는 방법이다

단점 : 복잡도는 매우 높은 여전히 ​​각 점 O (N * m) 복잡성;

보이드 벨만 () {
     INT S, t는; // 출발 지점, t는 종점 s의 
     ( INT I = 1. ; I <= N-; I ++) DIS [I] = INF;
     // DIS는 S 배열에 모든 점을 대표 최단 
    DIS [S] = 0 ;
      ( INT K = . 1 ; K <= N-; K ++ )
      ( INT I = 0 ; I <CNT; I ++ ) {
     INT X = E [I] .u, Y = E [I] .V;
     IF (DIS [X]> DIS [Y] + E [I] .W) { // 업데이트 거리 
    DIS [X] = DIS [Y] + E [I] .W;
        }
    }
    COUT << DIS [t];
}
코드보기

 

3 SPFA :

단점 : 불안정한 점,

알고리즘 : 검색 및 다양한 같은;

학습 한 후 업데이트;

 4 익스트라 :

알고리즘은 : 상기 제 1 반복 그리 생각에 기초하여, 즉, 각 업데이트 후, 최종 지점까지의 최단 경로는 다른 지점에 이르기까지 경로의 거리보다 커야하기 때문에, 최단 경로 여야;

장점 :도 인접성 테이블 메모리 복잡도가 수용 고려 안정된, 단일 소스 최단 경로 문제 해결, O (m * 로그 (N))의 복잡성;

INT 익스트라 () {
     INT의 S, t; // S는 t가 끝이고, 시작점을 나타내는 
    대를 ( INT I = 0 ; I <= MAXN; I ++) DIS는 [I]가 = INF가 완료 [I] = 0 ;
    DIS는 [S] = 0 ;
     //는 각 지점이 최단 기록 배열 할 것인지, 짧은 S를 나타내고 DIS 
    priority_queue <노드> Q;
    Q.push (노드 (S, 0 ));
    동안 (! Q.empty ()) {
    노드 U = Q.top ();
    () Q.pop;
    경우 (다 [u.id]) 계속 ;
    완료 [u.id] = 1 ;
    위한 ( INT 난 = 0 ; I <E [u.id] 크기는 ()을, 난 ++ ) {
    에지 Y = E [u.id [I];
    경우 (다 [YV]가) 계속 ;
    경우 (DIS [YV]>에 .W + u.dis) {
    DIS [YV은] = + Y. W.는 u.dis; // 업데이트 최단 이웃 
    }
    Q.push (노드 (YV, DIS [YV])) // 각 이웃 노드 확장 올 
    }

    }
    반환 DIS [t]을;
}
코드보기

 

 

몰수 문제 원, 추가 학습;

추천

출처www.cnblogs.com/littlerita/p/12343890.html