>백엔드 개발 >C++ >Prim과 Kruskal의 최소 스패닝 트리 알고리즘이 유향 그래프에서 실패하는 이유는 무엇입니까?

Prim과 Kruskal의 최소 스패닝 트리 알고리즘이 유향 그래프에서 실패하는 이유는 무엇입니까?

王林
王林앞으로
2023-09-02 17:29:07705검색

Prim과 Kruskal의 최소 스패닝 트리 알고리즘이 유향 그래프에서 실패하는 이유는 무엇입니까?

Prim의 방법과 Kruskal의 알고리즘은 무방향 그래프에서 MST(최소 신장 트리)를 찾는 두 가지 일반적인 방법입니다. 그러나 이러한 기술은 유향 그래프에 대해 올바른 MST를 생성할 수 없습니다. 이는 유방향 그래프가 Prim과 Kruskal의 알고리즘에서 사용하는 기본 가정 및 방법에 맞지 않기 때문입니다.

프림 알고리즘

먼저, 모든 정점이 포함될 때까지 탐욕적인 방식으로 확장 최소 스패닝 트리에 가장자리를 추가하는 Prim의 알고리즘이 있습니다. MST 내부의 정점은 가중치가 가장 낮은 가장자리를 통해 MST 외부의 정점과 연결됩니다. 무방향 그래프의 모든 간선은 어느 방향으로든 이동할 수 있으므로 MST에서 외부 정점까지의 최단 경로를 쉽게 찾을 수 있습니다. 그러나 유향 그래프에서는 모서리가 항상 한 방향을 가리키며 MST와 외부 꼭지점을 연결하는 직선이 없을 수 있습니다. 이는 Prim 알고리즘의 기본 원리와 모순됩니다.

이것의 예는 MST의 정점 u를 MST의 외부 그래프의 정점 v에 연결하는 방향성 가장자리(u,v)입니다. Prim 방식의 MST는 직접 Edge를 통해 외부 정점에 연결되어야 하므로 Edge(u, v)가 무시되므로 MST가 부정확하거나 부족할 수 있습니다.

Kruskal의 방법

Kruskal의 방법은 순환을 생성하지 않는 최소 가중치 간선을 그래프에 반복적으로 추가하는 가중치 간선 정렬 기술입니다. 이 방법은 간선이 두 방향을 가리키고 순환을 쉽게 감지할 수 있기 때문에 무방향 그래프에 가장 적합합니다. 유향 그래프에서는 간선의 방향이 중요하므로 순환의 개념이 더욱 미묘해집니다. Kruskal의 접근 방식은 이러한 복잡성을 무시합니다.

만들고 있는 MST에 방향성 루프가 있다고 가정해 보겠습니다. Kruskal의 기술을 방향성 그래프에 적용하면 방향성 순환이 포함된 트리를 생성할 수 있습니다. 이 방법은 무방향 에지 기반 주기 감지 메커니즘이 방향 그래프에서 주기를 올바르게 캡처하지 못하기 때문에 부정확한 MST를 생성합니다.

결론

Prim과 Kruskal의 기술은 무방향 그래프에서 MST를 찾는 데 유용하지만 유방향 그래프에는 적용할 수 없다는 결론을 내릴 수 있습니다. 이러한 방법은 기본 가정과 메커니즘이 유향 그래프 설정에 적용되지 않기 때문에 부정확하거나 부적절한 MST를 생성합니다. 방향 그래프는 고유한 속성과 복잡성을 가지므로 최소 스패닝 트리를 얻으려면 이중 그래프 관련 기술(예: Chu−Liu/Edmonds 방법)을 사용하는 것이 중요합니다.

위 내용은 Prim과 Kruskal의 최소 스패닝 트리 알고리즘이 유향 그래프에서 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제