크루스칼 알고리즘(Kruskal`s algorithm)
- 최초 등록일
- 2011.11.23
- 최종 저작일
- 2011.11
- 8페이지/ 한컴오피스
- 가격 3,000원
소개글
크루스칼 알고리즘(Kruskal`s algorithm)
목차
없음
본문내용
크루스칼 알고리즘(Kruskal`s algorithm)
개 념
최소비용 신장 트리 문제를 풀기 위한 크루스칼 알고리즘은 각 정점마다 하나씩 그 정점만 포함하는 V의 서로소 부분 집합들을 만드는 것으로 시작한다. 그리고나서 가중치가 작은 것부터 차례로 이음선을 검사한다(같은 가중치에 대해서는 임의로 선택한다). 만약 어떤 이음선이 서로소 부분집압들에 있는 두 정점을 연결하면, 이음선을 추가하고, 두 부분집합을 하나로 합친다.
.
.
<소스 코드>
. 교재에 있는 알고리즘을 최대한 사용하였습니다.
2. 정점은 5개를 사용하였고 최소비용 신장트리 구축을 위한 예제 그래프는 교재의 것을 사용하였습니다.
3. 단, 정렬을 위해 가중치는 임의로 섞어서 초기화 했습니다.
4. 가중치의 집합, 정점의 집합, 정점간 가중치를 합하는 집합 등은 사용의
편의를 위해 외부에서 선언해 전역 변수로 사용했습니다.
#include
struct edge{ /*정점간 가중치 집합을 위한 구조체 선언 */
int pair;
int pair2;
int weight;
};
struct verte{ /*정점 집합을 위한 구조체 선언*/
int parent; /*합병시 트리구조로 합병하고 그때의 부모노드*/
int depth; /*깊이를 두어 깊이 비교를 통해 레벨을 낮게 만듦*/
}; /*속도 향상을 위해*/
typedef struct edge edge;
typedef struct verte verte;
int Pivotpoint = 0; /*퀵소트시 쓰일 피봇포인트*/
verte u[5]; /*정점을 위한 집합*/
edge E[8]; /*정점간 가중치를 위한 집합*/
edge F[5]; /*최소비용 신장트리를 위해 선택된 정검간 가중치를 위한 집합*/
참고 자료
없음