Pohon Pencarian Buta Implementasi Algoritma Branch And Bound Pada Penentuan Menu Makanan Penderita Asam Urat

6 t carian Pencarian adalah suatu proses mencari solusi dari suatu permasalahan melalui sekumpulan kemungkinan ruang keadaan state space. Ruang keadaan merupakan suatu ruang yang berisi semua keadaan yang mungkin. Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas merupakan algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algortima pencarian brute-force atau pencarian uninformed menggunakan metode yang sederhana dan sangat intuitif pada ruang pencarian, sedangkan algoritma pencarian informed menggunakan heuristik untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian [14]

2.3. Pohon

Untuk menghindari kemungkinan adanya proses pelacakan suatu node secara berulang, maka digunakan struktur pohon. Sebuah pohon adalah suatu struktur data yang digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang terhubung. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. Dengan setiap kemungkinan solusi dianggap sebagai sebuah simpul dan akar dari pohon, banyak algoritma yang menggunakan ruang solusi berupa pohon ini karena lebih memudahkan dalam penelusuran solusi yang ada berupa simpul-simpul pohon. [4] Sebuah struktur data di mulai dari simpul root. Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun leaf node. Sebuah simpul dalam internal node adalah semua simpul dari pohon yang memiliki anak dan bukan merupakan daun, yang terdiri dari parent dan child. Bertentangan dengan pohon di dunia nyata, dimana akar biasanya digambarkan di bagian bawah , dan daun yang dibagian atas. Seperti yang ditunjukkan pada gambar 2.1. Universitas Sumatera Utara 7 bar 2.1 Struktur Data dari Pohon. [5]

2.4. Pencarian Buta

2.4.1. Algoritma Depth First Search DFS Pencarian dengan metode ini dilakukan dari node awal secara mendalam hingga yang paling akhir dead-end atau sampai ditemukan. Dengan kata lain, simpul cabang atau anak yang terlebih dahulu dikunjungi.[15] Sebagai ilustrasinya dapat dilihat pada gambar 2.2. 1 4 2 3 5 6 1 4 2 3 5 1 4 2 3 2 1 3 1 2 1 i ii iii iv v vi vii Gambar 2.2 Tahapan pembentukan pohon DFS [7] Algoritma DFS: 1. Masukkan simpul akar ke dalam antrian Q Queue . Jika simpul akar = simpul solusi, maka Stop. 2. Jika Q kosong, tidak ada solusi. Stop. 3. Ambil simpul v dari kepala head antrian. Jika kedalaman simpul v sama dengan batas kedalaman maksimum, kembali ke langkah 2. 4. Bangkitkan semua anak dari simpul v. Jika v tidak mempunyai anak lagi, kembali ke langkah 2. Tempatkan semua anak dari v di awal antrian Q. Jika Universitas Sumatera Utara 8 anak dari simpul v adalah simpul tujuan, berarti solusi telah ditemukan, kalau tidak, kembali lagi ke langkah 2. Penerapan DFS dapat dilihat pada contoh dibawah ini. Sebuah bidak pion bergerak di dalam sebuah matriks pada gambar 2.3. Bidak dapat memasuki elemen matriks mana saja pada baris paling atas. Dari elemen matriks yang berisi 0, bidak dapat bergerak ke bawah jika elemen matriks di bawahnya berisi 0; atau berpindah horizontal kiri atau kanan jika elemen di bawahnya berisi 1. Bila bidak berada pada elemen yang berisi 1, ia tidak dapat bergerak kemanapun. Tujuan permainan ini adalah mencapai elemen matriks yang mengandung 0 pada baris paling bawah. bar 2.3 Matriks bidak Operator yang digunakan: DOWN pindahkan bidak satu posisi ke bawah LEFT pindahkan bidak satu posisi ke kiri RIGHT pindahkan bidak satu posisi ke kanan S6 3,2 S5 3,1 S4 2,1 S7 2,3 S10 2,2 S11 2,1 S12 3,1 S13 2,3 S15 2,4 S16 3,4 S17 4,4 S3 2,2 S9 1,2 S14 1,4 S2 1,2 S8 1,3 S18 1,4 S1 1,1 S0 S6 3,2 S5 3,1 S4 2,1 S7 2,3 S10 2,4 S11 3,4 S12 4,4 S3 2,2 S9 1,4 S2 1,2 S8 1,3 S13 1,4 S1 1,1 S0 Gambar 2.4 Pohon ruang status yang terbentuk pencarian DFS [7] 1 2 3 4 1 1 2 1 3 1 4 1 Universitas Sumatera Utara 9 2.4.2. Algoritma Breadth-First Search BFS Algoritma BFS adalah salah satu teknik pencarian sederhana, dimana pada teknik ini simpul akar dikembangkan terlebih dahulu, kemudian simpul-simpul yang dihasilkan dari simpul akar dikembangkan lagi selanjutnya. Umumnya, semua simpul-simpul pada kedalaman d di pohon pencarian dikembangkan sebelum pada kedalaman d+1. Dalam suatu pencarian, dimungkinkan adanya suatu pengulangan pengembangan simpul yang tidak terbatas. Hal ini akan menghabiskan waktu pencarian dengan mengembangkan node yang sudah diperluas sebelumnya. Seperti keadaan pengulangan {1,2,3, 1, 2,3, 1,2,3, 1, 2, 3, 1,2,3, }. Pencarian untuk permasalahan ini adalah tanpa batas. Untuk menghindarinya, dapat dipotong sebagian dari keadaan yang yang diulangi menuju ke suatu ukuran terbatas. Ada tiga metode yang berhubungan dengan keadaan yang diulangi, salah satunya adalah tidak kembali pada keadaan yang baru saja didatangi, fungsi perluasan simpul harus mencegah terjadinya pengembangan simpul dari simpul orang-tua parent yang sama [6]. Seperti contoh berikut dimana sebuah mainan yang terdiri atas 3 buah blok dinomori 1, 2, dan 3 pada gambar 2.5. 1 2 3 3 2 1 a Susunan awal b Susunan akhir bar 2.5 Persoalan menyusun mainan yang terdiri atas 3 buah blok [7] Prinsip dari persoalan menyusun mainan ini adalah : 1. Operator perpindahan : Pindahkan X ke Y , yang berarti memindahkan objek X ke atas objek yang lain. 2. Pada setiap saat, hanya satu buah blok yang boleh dipindahkan. 3. Operator tidak digunakan untuk membangkitkan status yang sama lebih dari satu kali. Dengan algoritma BFS, pencarian solusi ditunjukkan pada gambar 2.6. Universitas Sumatera Utara 10 1 2 3 3 2 1 3 1 2 2 1 3 1 3 2 1 2 3 3 2 1 2 3 1 3 1 2 1 2 3 3 2 1 S0: S1: S2: S3: S4: S5: S6: S7: S8: S9: S10: + , - bar 2.6 Pohon ruang status yang dibentuk selama pencarian solusi dengan metode BFS [7] Dengan mengikuti lintasan dari simpul akar S0 ke simpul solusi S10, kita memperoleh konfigurasi urutan perpindahan blok dari status awal sampai ke status akhir. Dengan metode BFS, jika terdapat sebuah solusi, maka BFS menjamin dapat menemukannya, dan jika terdapat lebih dari satu buah solusi, BFS selalu menemukan solusi pertama pada aras pohon yang paling rendah.[7] 2.4.3. Algoritma Best First Search Merupakan metode yang membangkitkan suksesor dengan mempertimbangkan harga didapat dari fungsi heuristik tertentu dari setiap node, bukan dari aturan baku seperti DFS maupun BFS. Gambar 7 mengilustrasikan langkah-langkah yang dilakukan oleh algoritma Best First Search. Pertama kali, dibangkitkan node A. Kemudian semua suksesor A dibangkitan, dan dicari harga paling minimal. Pada langkah 2, node D terpilih karena harganya paling rendah, yakni 1. Langkah 3, semua suksesor D dibangkitkan, kemudian harganya akan dibandingkan dengan harga node B dan C. Ternyata harga node B paling kecil dibandingkan harga node C, E, dan F. Sehingga B Universitas Sumatera Utara 11 terpilih dan selanjutnya akan dibangkitkan semua suksesor B. Demikian seterusnya sampai ditemukan node tujuan. . 0 bar 2.7 Langkah-langkah yang dilakukan oleh algoritma Best First Search [16]

2.5. Algoritma Optimasi