0
Pemrograman Graf
Posted by Unknown
on
10:26 AM
Sesuai judul diatas, kali ini saya akan mem-posting tentang pemrograman graf dimana program berikut ini bertujuan untuk menentukan apakah graf adalah sebuah pohon perentang atau tidak, dan jika tidak maka graf tersebut akan diubah menjadi sebuah pohon perentang dengan metode perkalian matriks
#include
#include
int main(){
int i,j,k, x, y, n,sum=0, deg=0, sisi=0, stat_1=0, stat_2=0, limit;
printf("Berikan banyak titik : ");
scanf("%d",&x);
y=x;
int matriksA[x][y], matriksT[x][y], matriksU[x][y], matriksV[x][y];
printf("\nBerikan nilai matriks sesuai bentuk graf \n");
for(i=0;i
for(j=0;j
printf("titik[%d][%d] = ",i+1,j+1);
scanf("%d",&matriksA[i][j]);
if(matriksA[i][j]!=1 && matriksA[i][j]!=0 ){
printf("Nilai harus 1 atau 0\n");
if(i==0)
j--;
else if(i>0 || j>0)
j--;
else
printf("matriks error");
}
}
}
printf("\n Matriks Graf : \n");
for(i=0;i
for(j=0;j
printf(" %d ",matriksA[i][j]); }
printf("\n");
}
for(i=0;i
for(j=0;j
if(matriksA[i][j]==1)
deg++;
}
}
limit=x-1;
sisi=deg/2;
if(sisi==limit)
stat_1=1;
for(n=1;n
if(n==1){
for(i=0;i
for(j=0;j
matriksT[i][j]=matriksA[i][j];
matriksV[i][j]=matriksT[i][j];
}
}
}
else{
for(i=0;i
for(j=0;j
for(k=0;k
matriksU[i][j]+=matriksV[i][k]*matriksA[k][j];
}
matriksT[i][j]+=matriksU[i][j];
}
}
for(i=0;i
for(j=0;j
matriksV[i][j]=matriksU[i][j];
matriksU[i][j]=0;
}
}
}
}
for(i=0;i
for(j=0;j
if(matriksT[i][j]==0){
sum=0;
break;}
else
sum++;}
}
if(sum>0)
stat_2=1;
if(stat_1==1 && stat_2==1)
printf("\n Graf merupakan sebuah pohon \n");
else
printf("\n Graf bukan merupakan sebuah pohon \n");
if(stat_2==1 && stat_1!=1){
for(i=0;i
for(j=0;j
if(matriksA[i][j]==1){
if(sisi > limit){
sisi=sisi-1;
matriksA[i][j]=0;
matriksA[j][i]=0;
}
}
}
}
printf("\n graf sekarang merupakan sebuah pohon perentang dengan matriks sebagai berikut :");
for(i=0;i
for(j=0;j
printf(" %d ",matriksA[i][j]);
}
printf("\n");
}
#include
#include
int main(){
int i,j,k, x, y, n,sum=0, deg=0, sisi=0, stat_1=0, stat_2=0, limit;
printf("Berikan banyak titik : ");
scanf("%d",&x);
y=x;
int matriksA[x][y], matriksT[x][y], matriksU[x][y], matriksV[x][y];
printf("\nBerikan nilai matriks sesuai bentuk graf \n");
for(i=0;i
scanf("%d",&matriksA[i][j]);
if(matriksA[i][j]!=1 && matriksA[i][j]!=0 ){
printf("Nilai harus 1 atau 0\n");
if(i==0)
j--;
else if(i>0 || j>0)
j--;
else
printf("matriks error");
}
}
}
printf("\n Matriks Graf : \n");
for(i=0;i
printf("\n");
}
for(i=0;i
deg++;
}
}
limit=x-1;
sisi=deg/2;
if(sisi==limit)
stat_1=1;
for(n=1;n
for(i=0;i
matriksV[i][j]=matriksT[i][j];
}
}
}
else{
for(i=0;i
}
matriksT[i][j]+=matriksU[i][j];
}
}
for(i=0;i
matriksU[i][j]=0;
}
}
}
}
for(i=0;i
sum=0;
break;}
else
sum++;}
}
if(sum>0)
stat_2=1;
if(stat_1==1 && stat_2==1)
printf("\n Graf merupakan sebuah pohon \n");
else
printf("\n Graf bukan merupakan sebuah pohon \n");
if(stat_2==1 && stat_1!=1){
for(i=0;i
if(sisi > limit){
sisi=sisi-1;
matriksA[i][j]=0;
matriksA[j][i]=0;
}
}
}
}
printf("\n graf sekarang merupakan sebuah pohon perentang dengan matriks sebagai berikut :");
for(i=0;i
}
printf("\n");
}