IMPLEMENTASI BFS.docx

19
 IMPLEMENT A SI ALGORITMA BREADTH FIRST SEARCH (BFS) Oleh: Abdurrahman !"#

Transcript of IMPLEMENTASI BFS.docx

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH (BFS)

Oleh:Abdurrahman

2015

BAB IPENDAHULUAN

BREADTH FIRST SEARCH

Prosedur Breadth First Search merupakan pencarian yang dilakukan denganmengunjungi tiap tiap node secara sistematis pada setiap level hingga keadaantujuan (goal state) ditemukan. Atau dengan kata lain, penelusuran yang dilakukanadalah dengan mengunjungi node node pada level yang sama hingga ditemukangoal state nya. Untuk lebih jelasnya, perhatikan ilustrasi dari Breadth First Searchpada gambar berikut ini.

Pengimplementasian Breadth First Search dapat ditelusuri dengan menggunakandaftar (List) open dan closed, untuk menelusuri gerakan pencarian di dalam ruangkeadaan, prosedur untuk Breadth First Search dapat dituliskan sebagai berikut(Luger : 2002) :

Prosedure breadth first search

BeginOpen := [Start];Closed := [];While Open [] doBegin Remove leftmost state from open, call it x If X is a goal then return SUCCESS Else Begin Generate children of x; Put x on closed; Discard children of x is already open or closed; Put remaining children on right end of open; End; End; Return FAIL

End.

Pada gambar di atas, U* adalah node tujuannya (goal) sehingga bila ditelusurimenggunakan prosedur Depth First Search, diperoleh :

1. Open = [A]; Closed = []2. Open = [B, C, D]; Closed = [A]3. Open = [C, D, E, F]; Closed = [B, A]4. Open = [D, E, F, G, H]; Closed = [C, B, A]5. Open = [E, F, G, H, I, J]; Closed = [D, C, B, A]6. Open = [F, G, H, I, J, K, L]; Closed = [E, D, C, B, A]7. Open = [G, H, I, J, K, L, M]; Closed = [G, F, E, D, C, B, A]8. dan seterusnya sampai U diperoleh atau open =[]

Keuntungan :1. Tidak akan menemui jalan buntu dan jika ada satu solusi maka Breadth FirstSearch akan menemukannya.2. Jika ada lebih dari satu solusi maka solusi minimum akan ditemukan

Kerugian :1. Membutuhkan memori yang besar, karena menyimpan semua node dalam satupohon.2. Membutuhkan sejumlah besar pekerjaan, khususnya bila solusi terpendek cukuppanjang, karena jumlah node yang perlu diperiksa bertambah secara eksponensialterhadap panjang lintasan.

BAB IIPEMBAHASAN

IMPLEMENTASI PADA MATLAB

LISTING CODE:

clear allclose allclc obstacles(1,:)=[4,5];obstacles(2,:)=[4,1];obstacles(3,:)=[4,2];obstacles(4,:)=[4,3];obstacles(5,:)=[4,4]; startingPosition=[0,5];goal=[5,5]; obstacleColor=[1,0,0]; %merahnodeColor=[0,1,0]; %hijauexpandColor=[0,0,0]; %hitamgoalColor=[0,0,1]; %birupathColor=[0,1,1]; %biru muda scatter(obstacles(:,1),obstacles(:,2),100,obstacleColor,'filled');grid;AXIS([0 5 0 5]);hold on; scatter(goal(1,1),goal(1,2),100,goalColor,'filled');fringeCount=1;tempCount=1;fringe(fringeCount,:)=[startingPosition, fringeCount]; while(~((fringe(fringeCount,1)==goal(1,1)) & (fringe(fringeCount, 2)==goal(1,2)))) scatter(fringe(fringeCount, 1), fringe(fringeCount, 2), 100, nodeColor, 'filled'); for x=-1:1 for y=-1:1 if(x*y==0) failsTest=0; tempNode=[fringe(fringeCount, 1)+x,fringe(fringeCount, 2)+y, fringeCount]; if((tempNode(1,1)5)) failsTest=failsTest+1; end if(failsTest