검색어 입력폼

최소비용신장트리 그래프 구하기(자료구조)

저작시기 2006.01 |등록일 2006.12.22 파일확장자기타파일 (c) | 가격 1,000원

소개글

* 자료구조.

* 연결된 그래프에서 간선의 길이의 합을 최소로 하는 그래프.

* Prime 알고리즘을 사용.

* 행렬을 이용한 값으로 표시.

컴파일 실행환경

Microsoft visual 6.0

본문내용

// 최소비용신장트리 그래프 구하기!!

// 내용 : 제가 프로그래밍한 최소비용신장트리 구하기는 인접행렬을 이용하였습니다.
// 저희 자료구조에서 사용한 인접행렬 부분을 참조하여 페이지 361 에서 구현한 인접한 행렬끼리에
// 가중치 값을 주어서 2차원 배열을 이용해서 표시하였습니다.
//
// 인용한 알고리즘은 Prim 알고리즘을 사용하였습니다.
// 여기에서 표시한 내용은 책 페이지 403페이지 그래프를 최소비용신장트리로 구현하였습니다.
// 참고로 이 그래프는 무방향 그래프여서 행렬에 표시돼는 내용이 대칭입니다.

#include <stdio.h>
#include <stdlib.h>

#define MAX_VERTEX 30 // <-- 정점의 개수 제한.
#define MAX_NUM 100 // <-- 가중치의 최대값을 임의로 입력.

typedef struct graphType{
int n;
int adjMatrix[MAX_VERTEX][MAX_VERTEX];
}graphType;

void createGraph(graphType * g, int n) // <-- 우선 그래프의 인접한 행렬을 나타내기 위한 행렬 초기화.
{ // <-- 그래프의 정점도 입력받음.
int i, j;
g->n = n;
for(i=0 ; i<MAX_VERTEX ; i++){
for(j=0 ; j<MAX_VERTEX ; j++)
g->adjMatrix[i][j] = 0;
}
}

void insertEdge(graphType * g, int u, int v,int distance) // <-- 그래프에서 점정들 사이의 간선의 가중치값을 넣음.
{
if(u>=g->n || v>=g->n){
printf("\n 그래프에 없는 정점입니다.!");
return;
}

g->adjMatrix[u][v] = distance;
}

void print_adjMatrix(graphType * g)
{
int i, j;
for(i=0 ; i<(g->n) ; i++){
printf("\n%c |",`A`+i);
for(j=0 ; j<(g->n) ; j++)
printf("%5d", g->adjMatrix[i][j]);
}
}
다운로드 맨위로