Buka kembali slide teori minggu 14 mengenai Shortest Path Problem. Representasikan graf
pada contoh dalam slide tersebut ke dalam adjacency matrix. Salin kode C yang membentuk
matrix tersebut di sini.
#include <stdio.h>
#include <stdlib.h>
#define INF 999
int main()
{
int n,i,j,start;
printf("Masukan Jumlah Simpul : ");
scanf("%d",&n);
int G[n][n],tempGraf[n][n],jarak[n],visit[n],temp[n],count;
printf("Masukan Matrix Graf : \n");
for(i = 0;i < n ;i++)
{
for (j=0;j<n;j++)
{
scanf("%d",&G[i][j]);
}
}
Berdasarkan langkah-langkah yang telah dijelaskan di slide teori, buatlah program yang dapat
menentukan lintasan terpendek dari simpul satu ke simpul yang lain.
Salin kode C Anda di sini.
#include <stdio.h>
#include <stdlib.h>
#define INF 999
int main()
{
int n,i,j,start;
printf("Masukan Jumlah Simpul : ");
scanf("%d",&n);
int G[n][n],tempGraf[n][n],jarak[n],visit[n],temp[n],count;
printf("Masukan Matrix Graf : \n");
~1~
for(i = 0;i < n ;i++)
{
for (j=0;j<n;j++)
{
scanf("%d",&G[i][j]);
}
}
printf("Masukan Simpul Asal : ");
scanf ("%d",&start);
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if (G[i][j] == 0)
{
tempGraf[i][j] = INF;
}
else{
tempGraf[i][j] = G[i][j];
}
}
}
for (i = 0;i<n;i++)
{
jarak[i] = tempGraf[start][i];
temp[i] = start;
visit[i] = 0;
}
jarak[start] = 0;
visit[start] = 1;
count =1; //dimulai dari 1 karena kita tidak akan menghitung Simpul asal lagi
~2~
// untuk mengecek Simpul selanjutnya yang terhubung dengan Simpul lain yang
memiliki jarak minimum
visit[nextSimpul] = 1;
for(i = 0;i<n;i++)
{
if(visit[i]!=1)
{
if(jarakmin+tempGraf[nextSimpul][i]<jarak[i])
{
jarak[i] = jarakmin+tempGraf[nextSimpul][i];
temp[i] = nextSimpul;
}
}
}
count++;
}
//nenampilkan jalur dan jarak untuk setiap Simpul
int a[n+1],k;
for (i = 0; i < n ;i++)
{
if(i!=start)
{
printf ("\nHasil jarak untuk Simpul ke-%d adalah %d\n",i,jarak[i]);
j=i;
printf ("%d<-",i);
while(j!=start)
{
j=temp[j];
printf ("%d",j);
if(j!=start)
{
printf ("<-");
}
}
}
return 0;
}
Tampil dan jelaskan hasil running di sini.
~3~
Pada gambar diatas adalah keluaran/hasil output dari program yang dibuat.
Jarak dari simpul asal ke simpul tujuan ditunjukkan sesuai dengan indeks pada array yang
digunakan untuk merepresentasikan matrix graf.
Angka yang ditunjukkan pada program diatas merupakan indeks dari simpulnya.
~4~