/ / Kruskal 알고리즘 - 최적의 골격 구조

Kruskal 알고리즘 - 최적의 골격 구조

19 세기 초, 베를린의 지형은 Jacob Steiner3 개의 마을을 연결하는 방법을 설정하여 길이가 가장 짧았는지 확인하십시오. 그 후, 그는이 문제를 일반화했다. 평면에서 n 개의 다른 점까지의 거리가 가장 작은 점을 찾아야한다. 20 세기에이 주제에 대한 연구가 계속되었습니다. 몇 가지 사항을 취하고 거리를 최단 거리로 연결하기로 결정했습니다. 이것은 모두 연구중인 문제의 특별한 경우입니다.

욕심 많은 알고리즘

Kruskal 알고리즘은 "욕심 많은"알고리즘을 나타냅니다.(그라디언트라고도 함). 그 본질 - 모든 단계에서 가장 큰 승리. 항상 "욕심 많은"알고리즘이 작업에 최상의 솔루션을 제공하는 것은 아닙니다. 특정 문제에 적용될 때 최적의 솔루션을 제공한다는 이론이 있습니다. 이것은 matroids의 이론입니다. Kruskal 알고리즘은 이러한 문제와 관련이 있습니다.

최소 무게의 골격 찾기

고려중인 알고리즘은 최적의그래프의 골격. 그것에 관한 문제는 다음과 같습니다. 다중 에지와 루프가없는 방향성이없는 그래프가 주어지며, 에지의 집합에는 각 에지에 수 - 에지의 무게 - w (e)를 할당하는 가중치 함수 w가 제공됩니다. 에지 세트의 각 서브 세트의 가중치는 그 에지의 가중치의 합에 의해 결정된다. 가장 작은 무게의 골격을 찾아야합니다.

설명

Kruskal 알고리즘은 이와 같이 작동합니다. 첫째, 원래 그래프의 모든 에지가 가중치가 높은 순서로 정렬됩니다. 처음에는 프레임 워크가 가장자리를 포함하지 않지만 그래프의 모든 정점을 포함합니다. 알고리즘의 다음 단계가 끝나면 하나의 가장자리가 이미 구성된 프레임 워크의 일부인 스패닝 포리스트에 추가됩니다. 그것은 임의로 선택되지 않습니다. 골격에 속하지 않는 그래프의 모든 가장자리는 빨강 및 녹색이라고 할 수 있습니다. 각 빨간색 립의 꼭지점은 지어지는 숲의 연결성의 한 구성 요소에 있으며 녹색의 꼭지점은 다른 구성 요소에 있습니다. 따라서 빨간색 가장자리를 추가하면주기가 나타나고 결과 포리스트 단계에서 녹색 구성 요소가 있으면 연결 구성 요소가 하나씩 줄어 듭니다. 따라서 생성 된 구성에 빨간색 가장자리를 추가 할 수는 없지만 모든 녹색 가장자리를 추가하여 포리스트를 확보 할 수 있습니다. 최소 무게의 녹색 립이 추가됩니다. 결과적으로, 가장 작은 무게의 골격이 얻어진다.

구현

현재의 숲 F를 나타냅니다. 그래프의 정점 세트를 연결된 도메인 (그들의 결합 양식 F, 그리고 쌍으로 교차하지 않음)으로 분할합니다. 빨간색 모서리는 한 부분에 두 정점이 있습니다. Part (x)는 각 정점 x에 대해 x가 속한 파트의 이름을 반환하는 함수입니다. Unite (x, y)는 x와 y의 파트와 다른 모든 파트의 합집합으로 구성된 새 파티션을 작성하는 프로 시저입니다. 그래프의 모서리 수를 n이라하자. 이러한 모든 개념은 Kruskal 알고리즘에 포함되어 있습니다. 구현 :

  1. 첫 번째부터 n 번째 오름차순 가중치까지 그래프의 모든 모서리를 정렬하십시오. (ai, bi는 인덱스 i를 갖는 에지의 정점이다).

  2. i = 1에서 n까지.

  3. x : = 부분 (ai).

  4. y : = 부분 (bi).

  5. x가 y와 같지 않고 Unite (x, y)와 같지 않으면 숫자 i가있는 가장자리를 F에 포함시킵니다.

정확함

T를 Kruskal 알고리즘을 사용하여 만들어진 원래의 그래프의 골격이라하고, S를 임의의 골격이라하자. w (T)가 w (S)를 초과하지 않는다는 것을 증명할 필요가있다.

M을 S의 모서리 집합이라하고, P를 모서리 집합이라고하자.T. 경우 S는 T와 동일하지 않은 다음 모서리 때문에, S. 우리는 새로운 프레임을 얻었다 속하는 모든 에지 ES에서 제거가 C. C라고 사이클 인접 S. S. 외 속하지 않는 에지 등의 카 커스 T, 거기 그것의 피크만큼. 그 중량 (S), w (ET) 이후 더이상 전력 크루스 칼 알고리즘 (ES) w w보다 크다. 이러한 동작 (리브에 대체 T S 리브)만큼 T. 각 후속 수신 된 프레임의 무게를 수신으로 반복한다 의미 이전 중량보다 큰 것 (T)을 (S) w보다 크지 승.

또한 Kruskal 알고리즘의 정확성은 Matroids의 Rado-Edmonds 정리에서 따릅니다.

Kruskal 알고리즘의 적용 사례

Kraskal 알고리즘

정점 a, b, c, d, e 및 에지 (a,b) (A, E), (b, c), (B, E), (c, d), (C, E) (D, E). 모서리의 무게는 표와 그림에 나와 있습니다. 초기에 포레스트 F의 구조는 그래프의 모든 정점을 포함하고 단일 에지를 포함하지 않습니다. 그리고, 리브 중량이 낮은 이래로 알고리즘 크루스 칼 먼저, 리브 (a, e)를 추가하고, 정점 A 및 E는 목재 연결 F (리브 (a, e)는 녹색이다) 다른 성분에 (c, d) 때문에 그래프의 에지들의 적어도이 에지 중량 아닌 F에 속하고,이 녹색, 동일한 이유로 에지 발생을위한 다음 (a, b). 그러나 가장자리 (B, E)가 그와 나머지 가장자리의 최소 무게는 빨간색이기 때문에, 비록 전달됩니다 정점 B와 E가 숲 연결 F의 동일한 구성 요소에 속하는, 그것은 우리가 F로 가장자리 (B, E)를 추가하는 경우, 형성되어있다 사이클. 이어서 녹색 에지 (b, c), 전달 적색 에지 (C, E), 후 (D), 예를 첨가. 따라서, 에지가 추가 순차적으로 (a, E), (c, d), (a, b), (b, c). 그것으로부터, 원래의 그래프의 최적의 스켈레톤이 구성됩니다. 이 경우 알고리즘이 작동하는 방식입니다. 나는 염색했다. 보기는 이것을 보여준다.

알고리즘 염색 예

그림은 두 개의 연결 구성 요소로 구성된 그래프를 보여줍니다. 굵은 선은 Kruskal 알고리즘을 사용하여 구성된 최적 프레임 워크 (녹색)의 가장자리를 나타냅니다.

알고리즘 페인트 구현

위 그림은 원래의 그래프를 보여주고, 아래 그래프는 고려한 알고리즘의 도움으로 최소 가중치의 골격을 보여줍니다.

추가 된 에지들의 시퀀스 : (1.6); (0,3), (2,6) 또는 (2,6), (0,3) - 상관 없습니다. (3.4); (0,1), (1,6) 또는 (1,6), (0,1)도 무관합니다 (5,6).

Kruskal 알고리즘의 정확성

Kruskal의 알고리즘은 통신 패드, 각 나라의 지역에있는 새로운 이웃의 도로 및 기타의 경우에 최적화하기위한 실용적인 응용 프로그램을 찾습니다.

더 읽기 :