알고리즘 - 프림 알고리즘, 크루스칼알고리즘, 솔린 알고리즘
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

알고리즘 - 프림 알고리즘, 크루스칼알고리즘, 솔린 알고리즘에 대한 보고서 자료입니다.

본문내용

x,y 에 각각의 노드를 저장
y = j;
}
cout << endl << minium << \" :: \" ;
if(isInGroup(x,y)) // x,y 가 하나의 그룹에 같이 속할 경우
{
count++;
cout << \" \" << \"rejected \" < continue;
}
if(isOneInGroup(x,y)) // x와y중 하나의 노드만 그룹에 속할경우
{ // 나머지 하나의 노드를 해당 그룹에 추가
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" < count_edge++;
count++;
continue;
}
if(groupA.size()==0) // 그룹 A가 비었을경우
{
groupA.push_back(x);
groupA.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" < }
else if(groupB.size()==0) // 그룹 B가 비었을경우
{
groupB.push_back(x);
groupB.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" < }
else if(groupC.size()==0) // 그룹 C가 비었을경우
{
groupC.push_back(x);
groupC.push_back(y);
cout << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" < }
count_edge++;
count++;
}
}
bool isInGroup(int x, int y)
{
for(int i=0; i if(x == groupA[i])
for(int j=0; j if(y == groupA[j])
return true;
for(i=0; i if(x == groupB[i])
for(int j=0; j if(y == groupB[j])
return true;
for(i=0; i if(x == groupC[i])
for(int j=0; j if(y == groupC[j])
return true;
return false;
}
bool isOneInGroup(int x,int y)
{
int temp=x;
x>y?x=y,y=temp: true;
for(int i=0; i if(x == groupA[i])
{
groupA.push_back(y); // 하나의 노드가 A에 속할 경우 나머지 노드도 A에 추가
return true;
}
for(i=0; i if(x == groupB[i])
{
groupB.push_back(y); // 하나의 노드가 B에 속할 경우 나머지 노드도 B에 추가
return true;
}
for(i=0; i if(x == groupC[i])
{
groupC.push_back(y); // 하나의 노드가 C에 속할 경우 나머지 노드도 C에 추가
return true;
}
return false;
}
void connectGroup()
{
int miniumAtoB = MAXIUM;
int miniumAtoC = MAXIUM;
int miniumBtoC = MAXIUM;
int minium = MAXIUM;
int x,y;
for(int i=0; i for(int j=0; j if(cost[groupA[i]][groupB[j]] < miniumAtoB)// A그룹과 B그룹간의 edge중 최소값검사
miniumAtoB = cost[groupA[i]][groupB[j]];
for(i=0; i for(int j=0; j if(cost[groupA[i]][groupC[j]] < miniumAtoC)// A그룹과 C그룹간의 edge중 최소값검사
{
miniumAtoC = cost[groupA[i]][groupC[j]];
x = groupA[i];
y = groupC[j];
}
cout << endl;
cout << cost[x][y] << \" :: \" << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" < if(miniumAtoC < miniumAtoB)
for(int j=0; j groupA.push_back(groupC[j]);
groupC.clear();
for(i=0; i for(int j=0; j if(cost[groupA[i]][groupB[j]] < miniumAtoB)
{
miniumAtoB = cost[groupA[i]][groupB[j]];
x = groupA[i];
y = groupB[j];
}
for(int j=0; j groupA.push_back(groupB[j]);
groupB.clear();
cout << endl;
cout << cost[x][y] << \" :: \" << \"( \" << x << \" , \" << y << \" )\"<< \" cost = \" < }
  • 가격9,660
  • 페이지수11페이지
  • 등록일2014.05.27
  • 저작시기2014.3
  • 파일형식한글(hwp)
  • 자료번호#919795
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니