Anda di halaman 1dari 7

MODUL 1 : PRAKTIKUM TEKNIK SEARCHING DASAR (Breadth First Search)

1. Tujuan Praktikum
Tujuan dari praktikum ini adalah untuk mengetahui dan mempelajari implementasi
dari algoritma Breadth First Search pada proses pencarian sederhana.
2. Alat dan Bahan
 Alat
- Perangkat keras yang dibutuhkan adalah Laptop dengan minimal spesifikasi prosesor
Intel Core i5 dan RAM sebesar 4GB.
- Perangkat Lunak Matlab yang siap digunakan
 Bahan
 Data masukan berupa jalur dan obstacle pada grid pencarian

3. Teori Dasar
Breadth-first search adalah algoritma yang melakukan pencarian secara melebar yang
mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian
mengunjungi semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu.
Selanjutnya, simpul yang belum dikunjungi dan bertetangga dengan simpulsimpul yang tadi
dikunjungi , demikian seterusnya. Jika graf berbentuk pohon berakar, maka semua simpul
pada aras d dikunjungi lebih dahulu sebelum simpul-simpul pad aras d+1.
Algoritma ini memerlukan sebuah antrian q untuk menyimpan simpul yang telah
dikunjungi. Simpulsimpul ini diperlukan sebagai acuan untuk mengunjungi simpul-simpul
yang bertetanggaan dengannya. Tiap simpul yang telah dikunjungu masuk ke dalam antrian
hanya satu kali. Algoritma ini juga membutuhkan table Boolean untuk menyimpan simpul
yang te lah dikunjungi sehingga tidak ada simpul yang dikunjungi lebih dari satu kali.
CARA KERJA ALGORITMA BFS
Dalam algoritma BFS, simpul anak yang telah dikunjungi disimpan dalam suatu
antrian. Antrian ini digunakan untuk mengacu simpul-simpul yang bertetangga dengannya
yang akan dikunjungi kemudian sesuai urutan pengantrian.
Untuk memperjelas cara kerja algoritma BFS beserta antrian yang digunakannya,
berikut langkah-langkah algoritma BFS:
1. Masukkan simpul ujung (akar) ke dalam antrian
2. Ambil simpul dari awal antrian, lalu cek apakah simpul merupakan solusi
3. Jika simpul merupakan solusi, pencarian selesai dan hasil dikembalikan.
4. Jika simpul bukan solusi, masukkan seluruh simpul yang bertetangga
dengan simpul tersebut (simpul anak) ke dalam antrian
5. Jika antrian kosong dan setiap simpul sudah dicek, pencarian selesai dan
mengembalikan hasil solusi tidak ditemukan
6. Ulangi pencarian dari langkah kedua
Contohnya terlihat dibawah ini:

Maka penyelesaiannya adalah:


Gambar (a) BFS(1): 1, 2, 3, 4, 5, 6, 7, 1.
Gambar (b) BFS(1): 1, 2, 3, 4, 5, 6, 7, 1
Gambar (c) BFS(1): 1, 2, 3, 4, 5, 6, 7, 8, 9

4. Langkah Praktikum
Langkah-langkah yang perlu dilakukan untuk menjalankan praktikum Teknik
Searching dengan BFS ini adalah sebagai berikut:
1. Menyiapkan alat dan bahan yang dibutuhkan dalam melaksanakan praktikum.
2. Tuliskan program Breadth First Search di bawah pada Matlab.
%Jika tidak gagal tes pertama, uji untuk melihat apakah
%node sudah di set fringe.
if (failsTest<1)
for i=1:size(fringe,1)
if (tempNode(1,1)==fringe(i,1)) &
(tempNode(1,2)==fringe(i,2))
failsTest=failsTest+1;
end
end
end

%Jika tidak gagal dalam tes lainnya, uji untuk melihat


%apakah node merupakan obstacle
if (failsTest<1)
for i=1:size(obstacles,1)
if
(tempNode(1,1)==obstacles(i,1))&(tempNode(1,2)==obstacles(i,2))
failsTest=failsTest+1;
end
end
end

% Jika tidak gagal tes apa pun, tambahkan ke ujung set fringe. Di BFS,
% node dihapus dari ujung set fringe, jadi untuk mempermudah kita
% menambahkan node baru ke ujung.
if (failsTest<1)
fringe(fringeCount+tempCount,:)=tempNode;

scatter(tempNode(1,1),tempNode(1,2),100,expandColor,'filled');
tempCount=tempCount+1;
end
end
end
end

% Kenaikan ke simpul berikutnya. Ketika Anda menaikkan, Anda juga


% harus menurunkan tempCount karena didefinisikan sebagai posisi
dalam
% set fringe relatif terhadap fringeCount
fringeCount = fringeCount + 1;
tempCount=tempCount-1;
pause(.1);
end

%Initialize a counter
i=1;

%Telusuri kembali melalui node induk untuk memulihkan path


while ~(fringeCount==1)
path(i,:)=[fringe(fringeCount,1),fringe(fringeCount,2)];
fringeCount=fringe(fringeCount,3);
i=i+1;
end

%tuliskan posisi awal path


path(i,:)=startingPosition;

%Plot the path


plot(path(:,1),path(:,2));
scatter(path(:,1),path(:,2),100,pathColor,'filled');
%Jika tidak gagal tes pertama, uji untuk melihat apakah
%node sudah di set fringe.
if (failsTest<1)
for i=1:size(fringe,1)
if (tempNode(1,1)==fringe(i,1)) &
(tempNode(1,2)==fringe(i,2))
failsTest=failsTest+1;
end
end
end

%Jika tidak gagal dalam tes lainnya, uji untuk melihat


%apakah node merupakan obstacle
if (failsTest<1)
for i=1:size(obstacles,1)
if
(tempNode(1,1)==obstacles(i,1))&(tempNode(1,2)==obstacles(i,2))
failsTest=failsTest+1;
end
end
end

% Jika tidak gagal tes apa pun, tambahkan ke ujung set fringe. Di BFS,
% node dihapus dari ujung set fringe, jadi untuk mempermudah kita
% menambahkan node baru ke ujung.
if (failsTest<1)
fringe(fringeCount+tempCount,:)=tempNode;

scatter(tempNode(1,1),tempNode(1,2),100,expandColor,'filled');
tempCount=tempCount+1;
end
end
end
end

% Kenaikan ke simpul berikutnya. Ketika Anda menaikkan, Anda juga


% harus menurunkan tempCount karena didefinisikan sebagai posisi
dalam
% set fringe relatif terhadap fringeCount
fringeCount = fringeCount + 1;
tempCount=tempCount-1;
pause(.1);
end

%Initialize a counter
i=1;

%Telusuri kembali melalui node induk untuk memulihkan path


while ~(fringeCount==1)
path(i,:)=[fringe(fringeCount,1),fringe(fringeCount,2)];
fringeCount=fringe(fringeCount,3);
i=i+1;
end

%tuliskan posisi awal path


path(i,:)=startingPosition;

%Plot the path


plot(path(:,1),path(:,2));
scatter(path(:,1),path(:,2),100,pathColor,'filled');
5. Tugas dan Evaluasi

Tampilkan hasil yang dikeluarkan dari source code program pada praktikum ini, jelaskan dan
lakukan analisis terhadap teknik searching tersebut dengan melakukan variasi letak
obstaclenya!

Anda mungkin juga menyukai