Contoh Program Algoritma DFS dan BFS Menggunakan CFree/Turbo C
Assalamu’alaikum..
Dalampembahasan sebelumnya aku telah membahas tentang Algoritma Brute Force Untuk Mencari Bilangan Dan Menyortir Bilangan.pada pembahasan kali ini saya akan membahas mengenai Membuat Program Algoritma DFS serta BFS Menggunakan C-Free/Turbo C.
Sedikitmengenai Algoritma BFS (BreadthFirst Search) serta DFS (Depth FirstSearch) adalah Algoritma buat mencari solusi supaya lebih mudah. Perbedaan darikedua prosedur pemecahan tersebut merupakan BFSjika solusi sudah ketemu maka percabangan yg lain dalam program harus diselesaikanterlebih dahulu, tetapi sebaliknya dalam DFS,bila solusi telah ketemu maka acara selesai.
=>Perintah Diatas dipakai sebagaistandard library yang berfungsi buat I/Opackage. Maksudnya supaya pada program kita memakai fungsi standardinput atau hasil bisa dikatakan seperti portable input/hasil package. Tanpamenggunakan library ini, kita tidak sanggup memakai perintah-perintahinput/hasil dalam program kita. Library pada C yg dipakai untukmengkoneksikan pernyataan clrscr() dengan acara yg kita buat.
Dalampembahasan sebelumnya aku telah membahas tentang Algoritma Brute Force Untuk Mencari Bilangan Dan Menyortir Bilangan.pada pembahasan kali ini saya akan membahas mengenai Membuat Program Algoritma DFS serta BFS Menggunakan C-Free/Turbo C.
Sedikitmengenai Algoritma BFS (BreadthFirst Search) serta DFS (Depth FirstSearch) adalah Algoritma buat mencari solusi supaya lebih mudah. Perbedaan darikedua prosedur pemecahan tersebut merupakan BFSjika solusi sudah ketemu maka percabangan yg lain dalam program harus diselesaikanterlebih dahulu, tetapi sebaliknya dalam DFS,bila solusi telah ketemu maka acara selesai.
1. Listing Program
#include
#include
#include
int q[20],top=-1,front=-1,rear=-1,a[20][20],vis[20],stack[20];
int del();
void add(int item);
void bfs(int s, int n);
void dfs(int s, int n);
void push(int item);
int pop();
main()
int n,i,s,ch,j;
clrscr();
printf("masukkanangka ");
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("tambahkan %djika mempunyai simpul %d selain itu 0",i,j);
scanf("%d",&a[i][j]);
}
}
printf("matriksadjasensin");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d",a[i][j]);
}
printf("n");
for(i=1;i<=n;i++)
a:
vis[i]=0;
printf("nmenu");
printf("n1.bfs");
printf("n2.dfs");
printf("npilihan:");
scanf("%d",&ch);
printf("nmasukansimpul sumber:");
scanf("%d",&s);
switch(ch)
{
case 1:bfs(s,n);
gotoa ;
case dua:dfs(s,n);
gotoa ;
case tiga:
break;
}
return(0);
}
void bfs(int s,int n)
int p,i;
add(s);
vis[s]=1;
p=del();
if(p!=0)
printf("%d",p);
while(p!=0)
for(i=1;i<=n;i++)
if((a[p][i]!=0)&&(vis[i]==0))
add(i);
vis[i]=1;
}
p=del();
if(p!=0)
printf("%d",p);
}
for(i=1;i<=n;i++)
if(vis[i]==0)
bfs(i,n);
}
void add(int item)
if (rear==19)
printf("antrianfull");
else
if(rear==-1)
q[++rear]=item;
front++;
}
else
q[++rear]=item;
}
int del()
int k;
if((front>rear)(front==-1))
return(0);
else
k=q[front++];
return(k);
void dfs(int s, int n)
int i,k;
push(s);
vis[s]=1;
k=pop();
if(k!=0)
printf("%d",k);
while(k!=0)
for(i=1;i<=n;i++)
if((a[k][i]!=0)&&(vis[i]==0))
push(i);
vis[i]=1;
}
k=pop();
if(k!=0)
printf("%d",k);
}
for(i=1;i<=n;i++)
if(vis[i]==0)
dfs(i,n);
void push(int item)
if(top==19)
printf("stackoverflow");
else
stack[++top]=item;
}
int pop()
int k;
if (top==-1)
return(0);
else
k=stack[top--];
return(k);
2. Logika Program
#include
#include
#include
=>Perintah Diatas dipakai sebagaistandard library yang berfungsi buat I/Opackage. Maksudnya supaya pada program kita memakai fungsi standardinput atau hasil bisa dikatakan seperti portable input/hasil package. Tanpamenggunakan library ini, kita tidak sanggup memakai perintah-perintahinput/hasil dalam program kita. Library pada C yg dipakai untukmengkoneksikan pernyataan clrscr() dengan acara yg kita buat.
void add(int item);
=>Perintah Diatas digunakan buat mendefinisikanprosedur antrian penuh
void bfs(int s, int n);
void dfs(int s, int n);
=>Perintah Diatas dipakai untukperhitungan bfs serta perhitungan dfs.
void push(int item);
=>Perintah Diatas dipakai buat jikaterjadi kelebihan data .
main()
=>Perintah Diatas digunakan buat prosedurutama dalam program.
clrscr();
=> Pernyataan pada atas digunakan untukmembersihkan layar waktu acara dihukum.
int n,i,s,ch,j;
=>Pernyataan diatas digunakan untukmendeklarasikan variable n, i, s, ch serta j yang bertipe data integer (bilanganbulat).
printf("matriksadjasensin ");
=>Perintah Diatas dipakai untuk mencetaktulisan matriks adjasensi. Pernyataan n dipakai agar goresan pena utama yangdicetak terdapat jedanya (enter) dalam waktu program dieksekusi.
scanf("%d",&n);
=> Perintah Diatas dipakai buat menyimpanangka yg kita input waktu program dieksekusi. Disinimasih ada %d yangmengartikan data inputan akan ditampilkan dalam bentuk decimal.
switch(ch)
=> Perintah Diatas digunakan buat kondisipercabangan
case 1:bfs(s,n);
=> Perintah Diatas dipakai buat pilihanpertama menurut percabangan, dimana program akan mengeksekusi blok procedure bfs.
case dua:dfs(s,n);
=>Perintah Diatas digunakan buat pilihan keduadari percabangan, dimana acara akan mengeksekusi blok procedure dfs.
case tiga: break;}
=> Perintah Diatas digunakan untuk pilihanketiga apabila angka yang kita tambahkan bukan 1 atau 2, maka acara akan berhentimengeksekusi.
return(0);
=> Perintah Diatas dipakai buat mengambildata tambahkan untuk melanjutkan hukuman ke baris program berikutnya.
for(i=1;i<=n;i++)
=>Perintah Diatas dipakai buat kondisiperulangan, dimana mengeksekusi dimulai berdasarkan sapta 1, acara akan berhentimengeksekusi bila variable i sudah lebih akbar daripada variable n, danvariable i akan bertambah satu setiap terjadi iterasi.
if(p!=0)
=>Perintah Diatas dipakai untuk kondisipercabangan apabila hasil bagi variable p tidak sama dengan 0.
getch();
=>Perintah Diatas dipakai untuk membacasebuah karakter, menampilkan karakter berdasarkan tombol yg ditekan, serta menunggusembarang tombol ditekan.
3. Output
PadaBFS serta DFS
Mungkinitu saja pembahasan kali ini mengenai MembuatProgram Algoritma DFS serta BFS Menggunakan C-Free/Turbo C. mohon maafapabila ada kata yang kurang berkenan serta salah, semoga bermanfaat.. terimakasih… ^^
Wassalamu’alaikum…
Download C-Free (Pro) : DisiniAtau Disini