최소 스패닝 트리 알고리즘은 크루스 칼을 생성

kurskal 알고리즘 희소 그래프 더 적합

크루스 칼 의사 :

. (1 개)  INT 크루스 칼은 () {
 2      ; 그래서 에지 가중치 ANS, 양쪽 num_edge의 현재 개수의 최소 스패닝 트리의 합의 최소 스패닝 트리 있음
 . (3)      에서 작은 가장자리 중량 사방 대형]
 . (4)      에 대한 큰 작은은 (모두 열거 측) {
 . 5          IF 두 단부 통신 블록 점) {의 다른 측면에서 (현재 테스트
 6              테스트 최소 스패닝 트리가 첨가된다
 . 7              ANS = + 시험의 오른쪽 측면;
 8              최소 스패닝 트리의 에지의 현재 개수 Num_Edge 더하기 하나는,
 9              사이클이 1 인 현재의 정점 수는 마이너스 측 Num_Edge 단부의 수와 동일하다;
 10          }
 . 11  
(12)이다      }
 (13)는      복귀 ANS;
 14 }

특정 구현 :

. (1 개)  구조체 에지 {
 2      INT U, V]             // 양쪽 엔드 포인트 번호 
. 3      INT의 선정]             // 에지 중량 
4.  } E [MAXV]
 . 5  
6.  BOOL CMP (에지 A, 에지 B) {
 7.      리턴 a.cost < b.cost]
 . 8  }
 9.  INT 아버지 [MAXV]; // 이산 집합 배열
 (10)  
(11).  @ 이산 세트 조회 함수 
12  INT findFather ( INT X) {
 13는      INT에서 A = X;
 14      그동안 (X =!아버지 [X]) {
 15          X = 아버지 [X]
 (16)      }
 . 17  
(18)가      // 로 압축 
. 19      그동안 ! (A는 = 아버지 [A]) {
 20는          INT Z = ;
 21은          A = 아버지 [A]
 (22)가          아버지 [Z] =의 X;
 23이다      }
 24  
25      복귀 X;
 26이다  }
 27  
28  // 크루스 칼 함수 정점 파라미터 N도 1의 m의 수에 대해, 우측의 최소 스패닝 트리를 반환 에지의 수가 
29  의 INT 크루스 칼 ( INT의 N , INT의 m) {
 30      INT ANS =0 , num_edge = 0 ;     // 에지의 가중치의 총합이 최소가 스패닝의 현재 수는 에지
 (31)      // 초기화 이산 세트 
(32)      에 대해 ( INT I = 1. ; I <= N-; I는 ++ ) {
 33은          아버지 [I] = I ,
 34      }
 35  
36      // 사방 정렬 
37      정렬 (E, E + m, CMP),
 38 인      // 모든 통과가 에지 
(39)      에 대해 ( INT I = 0 ; I은 m이 <; I는 ++ ) {
 40          INT FAU = findFather (E [I]는 .u)         // 에지 쿼리 테스트 세트 여기서 두 기단 
41         INT FAV = findFather (E [I] .V)
 42          IF (FAU =! FAV) {
 43은              아버지 [FAV = FAU,
 44은              ANS + = , E [I] .cost
 45              num_edge ++ ;
 (46)는              IF (== num_edge N-- 1. ) BREAK ;     // 트리가 루프에서 구축 된 경우 
(47)          }
 (48)      }
 (49)      IF (N- num_edge =! - 1. )  - 1이다. ]         // 도 없음이 반환 -1 
50      사람의  리턴ANS;         // 오른쪽과 나무에 걸쳐 최소 그렇지 않으면 
51 }

 

추천

출처www.cnblogs.com/hi3254014978/p/11497610.html