Raphael의 의견 과 j_random_hacker의 의견 에서 알 수 있듯이 대답은 긍정적입니다. 실제로, 모든 MST는 약간의 예외를 제외 하고 모든 MST 알고리즘 으로 도달 할 수 있습니다.
그래프 , 가중치 함수에 의해 유도 된 모서리의 엄격한 약한 순서를 동일한 엄격으로 확장 할 수있는 경우 모든 모서리 (실수)의 두 가중치 함수는 (약하게) 비교 호환 가능 (서로 )으로 정의됩니다. 총 주문. 즉, 우리는 각 가중치 함수마다 일관된 타이 브레이킹 규칙을 고안하여 하나의 웨이트 함수와 그 웨이크 브레이킹 규칙에 의한 두 모서리의 비교 결과가 다른 가중치 함수 및 타이- 위반 규칙.G
렘마 1 : 과 w 2 가 두 가지 가중치 함수가되도록합니다. 다음 5 가지 내용은 서로 동일합니다.w1w2
- 과 w 2 는 비교 호환 가능합니다.w1w2
- 임의의 에지 세트에서, 및 w 2 만큼 공통의 가장 밝은 에지가 존재한다 .w1w2
- 모든 모서리 세트에서 및 w 2 만큼 공통 가장 무거운 모서리가 있습니다.w1w2
- w 3 이 w 1 및 w 2 와 비교 호환되도록 서로 다른 에지에 서로 다른 가중치를 할당 하는 가중치 함수 이 있습니다.w3w3w1w2
- 모든 에지에 대해 과 예 2 되도록 전자 (1)가 보다 가벼운 예 2 하나의 가중 함수에 의해, 즉 (1) 와 같은 광 또는보다 가벼운 같다 예 2 다른 가중 함수에 의해.e1e2e1e2e1e2
정리 1 증명은 쉬운 운동으로 남아 있습니다.
렘마 2 : 두 가중치 함수 과 w 2 가 e 1 < w 1 e 2 이면 e 1 < w 2 e 2가되도록하십시오 . 그런 다음 비교가 가능합니다.w1w2e1<w1e2e1<w2e2
(행 힌트) 증명 : 하나 개의 방식은 다른 접근 방식은 에지 중 어느 세트에 의해 밝은 에지 것을 보여 조건을 보조 정리 1의 (2)를 검증하는 표제어 (1)의 상태 5를 검증하는 것이다 도에 의해 밝은 에지이고 승 1 ,w2w1
그래프 의 비교 기반 알고리즘 은 모든 모서리에서 두 가지 (약한) 비교 호환 가중치 함수에 대해 변경없이 반복 할 수있는 방식으로 하나의 가중치 함수로 알고리즘을 실행할 수있는 경우 비교 호환 으로 정의됩니다. 다른 무게 기능으로. 특히,이 두 가지 알고리즘 실행은 동일한 출력을 갖습니다.G
모든 MST 알고리즘이 아니라면 대부분 두 가지 맛으로 표현 될 수 있습니다. 첫 번째 맛은 뚜렷한 모서리 가 서로 다른 가중치를 가지고 있다고 가정 하는데, 이는 주요 관심사가 하나의 MST (실제로 고유 한 MST이기도 함)를 찾는 경우에 사용됩니다. 두 번째 맛은 G의 다른 모서리 가 같은 무게를 갖도록합니다. 물론 모든 MST를 찾는 것이 주요 관심사 인이 답변에서는 두 번째 맛에서만 MST 알고리즘 만 관리합니다.GG
비교 호환 MST 알고리즘은 모든 MST를 찾을 수 있습니다.
위의 제안을 증명하기 위해 MST 수 계산 에서 "Kruskal이 모든 MST를 찾을 수 있음"섹션을 약간만 조정 하면 됩니다. 가중치 함수 w 1을 갖는 G의 MST 에 대해, 한 쌍의 불균일 한 에지 가중치 간의 절대 차이보다 가벼운 양의 가중치를 선택하십시오. 다른 모서리의 가중치를 변경하지 않고 m 단위의 각 모서리의 가중치에서 해당 가중치를 빼면 w 2 와 같은 새로운 가중치 함수를 얻습니다 . 에지 경우 예 1 보다 가벼운 예 2 에 의해 w (1) , 즉 1 보다 가벼운 있어야mGw1mw2e1e2w1e1 by w 2 도 마찬가지입니다. 정리 2에 의해, w 1 및 w 2 는 비교 호환 가능하다. 참고 m가 가진 고유의 MST이다 w 2 . (이 고유성을 나타내는 한 가지 방법은 하나의 MST 모서리의 무게가 줄어들 때마다 새로운 가중치 기능이있는 모든 MST에 해당 모서리가 포함되어야 함을 증명하는 것입니다. 따라서 w 2 에서 알고리즘을 실행하면 m이 됩니다. 알고리즘은 비교 호환 가능하므로 w 1 또는 w 2 와같은 방식으로 알고리즘을 실행할 수 있습니다. 그 실행이 독특한 MST를 찾을 수 있기 때문에, 해요 로e2w2w1w2mw2w2mw1w2m , w 1 과 함께 m 을찾습니다.w2mw1
모든 MST 알고리즘은 비교 호환 가능
위의 제안은 과장된 것 같습니다. 글쎄, 모든 MST 알고리즘에 따르면, 내가 잘못 보았거나 불필요한 단계가있는 것처럼 보이는 병리학 적 알고리즘을 제외하고 내가 본 일반적인 비교 기반 MST 알고리즘을 의미합니다. 비교 호환 MST 알고리즘은 모든 MST를 찾을 수 있으므로 모든 MST 알고리즘은 모든 MST를 찾을 수 있습니다. 특히, 각각의 네 개의 고전 MST 알고리즘 즉, Borůvka의, 프림의, 크루스 칼의 및 역 삭제 알고리즘은 모든 MSTS를 찾을 수 있습니다.
비교 호환 MST 알고리즘이 세 가지 더 있습니다.
- 최첨단 알고리즘. 모든 가장자리부터 시작하십시오. 사이클을 반복해서 찾아서 사이클이 남아 있지 않을 때까지 가장 큰 가장자리 중 하나를 제거합니다.
- 헤비 에지가 아닌 알고리즘 빈 세트로 시작하십시오. 모든 가장자리를 반복합니다. 각 모서리가 추가되고 사이클이 형성되면 가장 두꺼운 모서리 중 하나를 제거하십시오.
- 가장 가벼운 대체 알고리즘 스패닝 트리 시작하십시오 . T 에서 T가 아닌 모서리 e에 사이클을 찾습니다 . 에지 경우 t 그주기가보다 무거운 전자 , 제거 t을 에서 T 및 추가 전자 에 T . 더 이상 T 의 무게를 줄일 수 없을 때까지 반복 하십시오.TTeTtetTeTT
다음 MST 알고리즘은 비교 호환되지 않습니다.
- 차분 바이어스 Kruskal 알고리즘은 다음과 같이 수정 된 Kruskal 알고리즘입니다. Kruskal의 알고리즘 에 대한 Wikipedia의 설명 에서와 같이 에서 최소 가중치를 갖는 모서리를 제거 할 때 선택할 최소 가중치를 갖는 다중 모서리가 있다고 가정하십시오. 우리가 제거하기로 선택한 모서리는 두 정점의 각도 합계가 모든 선택 중에서 가장 큰 모서리입니다. 이 알고리즘은 꼭짓점이 a , b , c 및 edge a b 인 그래프 의 MST { a b , b c , c d } 를 찾지 못하므로 비교 호환 될 수 없습니다.S{ab,bc,cd}a,b,cab체중 가장자리 (B) (C) , (C)의 D , D , B 중량의 2 . 이 알고리즘은 불필요한 수정으로 인해 병리학으로 간주됩니다.1bc,cd,db2
위에서 언급 한 8 가지 MST 알고리즘은 모두 비교 기반입니다.
알고리즘이 비교 호환되는지 표시하는 방법은 무엇입니까?
Kruskal의 알고리즘을 예로 사용하겠습니다. 다음은 가중 비 방향 연결 그래프 에 대한 Kruskal 알고리즘 (두 번째 맛)에 대한 설명입니다 .G
- G 와 동일한 꼭지점이 있지만 모서리가없는 그래프 를 만듭니다. 그래서 F는 하나의 정점의 분리 나무의 숲입니다.FGF
- 그래프의 모든 모서리를 포함 하는 세트 를 만듭니다 .S
- 반면 하늘이 아닌 및 F는 아직 걸친되지 않는다
SF
- 에서 최소 무게의 모서리를 선택하십시오 .S
- 에서 해당 모서리를 제거합니다 .S
- 그 가장자리가 두 개의 다른 나무를 연결하면 두 개의 나무를 하나의 나무로 결합 하여 포리스트 추가하십시오.F
- 출력 .F
과 w 2 가 G의 두 가지 비교 호환 가중치 함수라고 하자 . Kruskal의 알고리즘은 " S 에서 최소 무게를 가진 모서리를 선택하는"단계에서만 무게 함수를 포함합니다 . lemma 1의 조건 2는이 단계에서 가장 밝은 가장자리를 선택할 수 있음을 나타냅니다. 그런 다음 w 1 및 w 2 와 동일한 방식으로 모든 단계를 실행할 수 있음을 유도하여 쉽게 확인할 수 있습니다 . 따라서 Kruskal의 알고리즘은 비교 호환됩니다.w1w2GSw1w2
알고리즘은 느슨한 용어로 세 가지 단계로 설명 할 수있는 경우 비교 호환됩니다.
- 체중이없는 것을하십시오.
- 주어진 모서리 세트에서 최소 무게를 가진 모서리를 선택
- 주어진 모서리 세트에서 최대 무게의 모서리를 선택하십시오.
이 충분한 조건은 Borůvka 's, Prim 's, Kruskal 's, reverse-delete, delete-heavy-edge 및 add-non-heavy-edge 알고리즘을 포함합니다. 이 충분한 조건에 맞추기 위해 도달 가능한 MST 세트에 영향을주지 않고 알고리즘에 대한 특정 설명을 변경해야 할 수도 있습니다. 정도 바이어스 Kruskal의 알고리즘이 비교 호환되는 것을 제외하고,이 충분한 조건이 느슨한 용어로 설명되어 있음을 강조하겠습니다