Latest News

Contoh Agenda Algoritma Dfs Dan Bfs menggunakan C-Free/Turbo C

Assalamu’alaikum..

            Dalam pembahasan sebelumnya aku telah mengulas wacana Algoritma Brute Force Untuk Mencari Bilangan Dan Menyortir Bilangan. Pada pembahasan kali ini aku Bakal mengulas wacana Membuat Program Algoritma DFS dan BFS menggunakan C-Free/Turbo C.

            Sedikit mengenai Algoritma BFS (Breadth First Search) dan DFS (Depth First Search) yakni Algoritma untuk mencari solusi supaya lebih praktis. Perbedaan dari kedua algoritma tersebut yakni BFS jikalau solusi sudah ketemu maka percabangan yg lain dalam kegiatan Musti diselesaikan terlebih dahulu, namun sebaliknya pada DFS, jikalau solusi sudah ketemu maka kegiatan selesai.
 
1.      Listing Program

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
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("masukkan angka ");
                scanf("%d",&n);

                for(i=1;i<=n;i++){
                for(j=1;j<=n;j++){
        printf("masukkan %d jikalau mempunyai simpul %d selain itu 0",i,j);
        scanf("%d",&a[i][j]);
                }
                }
                 printf("matriks adjasensi\n");
                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("\nmasukan simpul sumber:");
                scanf("%d",&s);
                 switch(ch)
                {
                case 1:bfs(s,n);
                                goto a ;
                case 2:dfs(s,n);
                                goto a ;
                case 3:
                                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("antrian full");
                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("stack overflow");
                else
                                stack[++top]=item;
}
 
int pop() {
                int k;
                if (top==-1)
                                return(0);
                else {
                                k=stack[top--];
                                return(k); }}


 2.      Logika Program

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

=>        Perintah Diatas dipakai sebagai standard library yg berfungsi untuk I/O  package. Maksudnya supaya pada kegiatan kita menggunakan fungsi standard input atau output sanggup dikatakan mirip portable input/output package. Tanpa menggunakan library ini, kita tidak sanggup menggunakan perintah-perintah input/output pada kegiatan kita. library pada C yg dipakai untuk mengkoneksikan pernyataan clrscr() dengan kegiatan yg kita buat.

void add(int item);

=>        Perintah Diatas dipakai untuk mendefinisikan mekanisme antrian penuh

void bfs(int s, int n);
void dfs(int s, int n);

=>        Perintah Diatas dipakai untuk perhitungan bfs dan perhitungan dfs.

void push(int item);

=>        Perintah Diatas dipakai untuk jikalau terjadi kelebihan data .

main() {

=>        Perintah Diatas dipakai untuk mekanisme utama dalam program.
clrscr();

=>        Pernyataan di atas dipakai untuk membersihkan layar Saat kegiatan dieksekusi.

int n,i,s,ch,j;

=>        Pernyataan diatas dipakai untuk mendeklarasikan variable n, i, s, ch dan j yg bertipe data integer (bilangan bulat).

printf("matriks adjasensi\n ");

=>        Perintah Diatas dipakai untuk mencetak goresan pena matriks adjasensi. Pernyataan \n dipakai supaya goresan pena utama yg dicetak ada jedanya (enter) pada Saat kegiatan dieksekusi.

scanf("%d",&n);

=>        Perintah Diatas dipakai untuk menyimpan angka yg kita input Saat kegiatan dieksekusi. Disini terdapat %d yg mengartikan data inputan Bakal ditampilkan dalam bentuk decimal.

switch(ch){

=>        Perintah Diatas dipakai untuk keadaan percabangan

case 1:bfs(s,n);

=>        Perintah Diatas dipakai untuk pilihan pertama dari percabangan, dimana kegiatan Bakal mengeksekusi blok procedure bfs.

case 2:dfs(s,n);

=>        Perintah Diatas dipakai untuk pilihan kedua dari percabangan, dimana kegiatan Bakal mengeksekusi blok procedure dfs.

case 3: break;  }

=>        Perintah Diatas dipakai untuk pilihan ketiga jikalau angka yg kita masukkan bukan 1 atau 2, maka kegiatan Bakal berhenti mengeksekusi.

return(0); }

=>        Perintah Diatas dipakai untuk mengambil data masukkan untuk melanjutkan sanksi ke baris kegiatan berikutnya.

for(i=1;i<=n;i++)    {

=>        Perintah Diatas dipakai untuk keadaan perulangan, dimana mengeksekusi dimulai dari bilangan 1, kegiatan Bakal berhenti mengeksekusi jikalau variable i telah lebih besar daripada variable n, dan variable i Bakal bertambah satu setiap terjadi perulangan.

if(p!=0)

=>        Perintah Diatas dipakai untuk keadaan percabangan jikalau hasil bagi variable p tidak sama dengan 0.

getch();

=>        Perintah Diatas dipakai untuk membaca sebuah karakter, menampilkan abjad dari tombol yg ditekan, dan menunggu sembarang tombol ditekan.


 3.      Output
  
Pada BFS dan DFS
 


             Mungkin itu saja pembahasan kali ini wacana Membuat Program Algoritma DFS dan BFS menggunakan C-Free/Turbo C. mohon maaf apabila ada kata yg kurang berkenan dan Keliru, semoga bermanfaat.. terima kasih… ^^


Wassalamu’alaikum…


Download C-Free (Pro) : Disini Atau Disini

0 Response to "Contoh Agenda Algoritma Dfs Dan Bfs menggunakan C-Free/Turbo C"