ALGORITMA RUNUT BALIK
MAKALAH
diajukan untuk memenuhi salah satu tugas Mata Kuliah Analisis dan Disain Algoritma
Disusun Oleh : Cahya Widya Intan Asri Afifah Novi Setiawatri Risda Cahya Utami
1100114 1103851 1104950 1100198
PENDIDIKAN ILMU KOMPUTER FAKULTAS PENDIDIKAN MATEMATIKA DAN IPA UNIVERSITAS PENDIDIKAN INDONESIA 2013
KATA PENGANTAR
Rasa syukur yang dalam kami sampaikan ke hadirat Allah swt, karena berkat kemurahan Nya makalah ini dapat kami selesaikan sesuai yang diharapkan. Dalam makalah ini kami membahas algoritma runut balik (backtracking ) serta implementasinya. Makalah ini dibuat dalam rangka memperdalam pemahaman terkait algoritma yang sangat diperlukan dalam membuat suatu program yang efektif dan efisien dalam memanfaatkan teknologi informasi terutama untuk para programmer. Dalam proses pendalaman materi Backtracking ini, tentunya kami mendapatkan bimbingan, arahan, koreksi dan saran, untuk itu rasa terima kasih yang dalam-dalamnya kami sampaikan :
Jajang Kusnendar, MT. selaku dosen mata kuliah Analisis dan Disain Algoritma” Semua pihak yang terkait dalam penulisan makalah ini. Demikian makalah ini kami buat semoga bermanfaat b ermanfaat
Bandung,
April 2013
Penyusun
i
DAFTAR ISI
KATA PENGANTAR ............................................... ..................................................... ...................................................................... ................. i DAFTAR ISI ..................................................... ........................................................................................................... .............................................................................. ........................ ii BAB I PENDAHULUAN ................................................... .................................................... ........................................................... ....... 1 A. Latar Belakang ................................................ ..................................................... ..................................................................... ................ 1 B. Rumusan Masalah ..................................................... ......................................................................................................... ........................................................... ....... 1 C. Tujuan Penulisan Makalah ................................................ ................................................... 1 D. Manfaat Penulisan Makalah .............................................. ................................................... 1 BAB II PEMBAHASAN ..................................................... ......................................................................................................... ........................................................... ....... 2 A. Algoritma Runut Balik ....................................................... ......................................................................................................... .................................................. 2 B. Contoh-Contoh Algortima Runut Balik .............................................. ................................. 2 C. Kekuatan dan Kelemahan Algoritma Runut Balik ................................................ .............. 5 D. Penggunaan Algoritma Runut Balik ................................................... ................................. 6 BAB III PENUTUP ........................................................................................................................ 7 A. Kesimpulan ..................................................... .......................................................................................................... ..................................................................... ................ 7 DAFTAR PUSTAKA ..................................................................................................................... 8
ii
BAB I PENDAHULUAN A. Latar Belakang Sebuah program adalah implementasi dari suatu a lgoritma.Arti algoritma itu sendiri adalah urutan langkah-langkah untuk memecahkan masalah, algoritma sendiri yaitu jantung ilmu komputer atau informatika.Bila rancangan pemecahan masalah sudah dibuat dengan skema yang benar maka rancangan tersebut siap dikodekan ke dalam bahasa pemrograman agar program dapat diesekusi dengan komputer. Selain berhasil tidaknya sebuah algoritma menjadi sebuah program, disini kita akan belajar mengenai analisis efektifitas algoritma tersebut. Dalam makalah ini penulis akan mengulas mengen ai Algoritma Runut-Balik (Backtracking) adalah algoritma yang berbasis pad a DFS untuk mencari solusi persoalan secara lebih mangkus. B. Rumusan Masalah 1. Apa itu Algortima Runut Balik ? 2. Bagaimana karakteristik Algortima Runut Balik ? 3. Seperti apa contoh-contoh Algoritma Algoritma Runut Balik ? 4. Apa kekuatan dan kelemahan Algortima Runut Balik ? 5. Pada saat bagaimana Algoritma Runut Balik ini digunakan ? C. Tujuan Penulisan Makalah Sejalan dengan rumusan masalah diatas, makalah ini disusun dengan tujuan untuk :
1. 2. 3. 4. 5.
Memaparkan Pengertian Algoritma Runut Balik. Menjelaskan Karakter Algorimta Runut Balik. Menyajikan contoh-contoh Algoritma Runut Balik. Mengetahui Kekuatan dan Kelebihan Algoritma Runut Balik. Bagaimana Algoritma Runut Balik di harus digunakan.
D. Manfaat Penulisan Makalah Makalah ini disusun disusun dengan harapan memberikan kegunaan baik secara teoritis maupun secara praktis. Secara teoritis makalah ini berguna seba gai bahan referensi untuk memahami Algoritma Runut Balik. Penulisan makalah ini di harapkan bermanfaat bagi : 1. Penulis, sebagai wahana penambah pengetahuan dan ilmu mengenai analisis dan disain algortima yang berfokus terhadap Algoritma Runut Balik. 2. Pembaca, sebagai media informasi tentang analisis da n disain Algoritma Runut Balik baik secara teoritis maupun secara praktis.
1
BAB II PEMBAHASAN A. Algoritma Runut Balik Runut Balik (Rinaldi Munir, 2004) adalah algoritma perkembangan dari Brute Force itu sendiri.Pada dasarnya Algoritma Runut Balik adalah alur penyelesaian suatu permasalahan secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada.
Algoritma ini akan mencari solusi berdasarkan ruang solusi yang ada secara sistematis namun tidak semua ruang solusi akan diperiksa, hanya pencarian yang mengarah kepada solusi yang akan diproses. Algoritma Runut Balik berbasis pada DFS (Depth First Search) sehingga aturan pencariannya akan mengikut kepada aturan pencarian pen carian DFS D FS yaitu dengan mencari solusi dari akar ke daun (dalam pohon ruang solusi) dengan pencarian kedalam. Simpul-simpul yang sudah dilahirkan (diperiksa) dinamakan simpul hidup (live node).Simpul hidup yang sedang diperluas dinamakan simpul-E atau Expand Node.Karakteristik Nod e.Karakteristik Algoritma Runut Balik.
a. b. c. d.
Berikut adalah beberapa karakteristik Algoritma Runut Balik : Algoritma ini tidak perlu memeriksa semua kemungkinan solusi yang ada. Di rancang untuk pencarian yang mengarah ke solusi saja yang selalu di pertimbangkan Waktu pencarian dapat di hemat. Saat ini Algoritma Runut Balik banyak di terapkan untuk program games seperti : Sudoku, Logika Sirkuit Hamilton, Labirin, catur dll, dan masalah kecerdasan buatan lainnya. B. Contoh-Contoh Algortima Runut Balik Berikut adalah contoh-contoh properti umum metode runut balik : a. Solusi persoalan Solusi dinyatakan sebagai vektor dengan n-tuple: X = (x1, x2, …, Mungkin saja S1 = S2 = … = Sn. Contoh: Si = {0, 1}, xi = 0 atau 1
b.
c.
Fungsi pembangkit nilai xk Dinyatakan sebagai : T(k) T(k) membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi. Fungsi pembatas (pada beberapa persoalan fungsi ini dinamakan fungsi kriteria) Dinyatakan sebagai B(x1, x2, …, xk) B bernilai true jika (x1, x2, …, xk) mengarah ke solusi. Jika true, maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi jika false, maka (x1, x2, …, xk) dibuang dan tidak dipertimbangkan lagi dalam pencarian solusi
2
Prinsip pencarian solusi dengan metode runut-balik :
Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan yang dipakai adalah mengikuti aturan pencarian mendalam (DFS). Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-E (Expandnode). Tiap kali simpul-E diperluas, lintasan yang dibangun olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-E simpul-E tersebut “dibunuh” sehingga menjadi simpul mati (dead node). node). Fungsi yang digunakan untuk membunuh simpul-E adalah dengan menerapkan fungsi pembatas (bounding function). function). Simpul yang sudah mati tidak akan pernah diperluas lagi. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian diteruskan dengan membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan runut-balik ke simpul hidup terdekat (simpul orangtua). Selanjutnya simpul ini menjadi simpul-E yang baru. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk runut-balik. Tinjau persoalan Knapsack 0/1 dengan instansiasi: n=3 (w1, w2, w3) = (35, 32, 25) (p1, p2, p3) = (40, 25, 50) M = 30
Fungsi pembatas k
w x M i
i
i 1
Pohon dinamis yang dibentuk selama pencarian untuk persoalan Knapsack 0/1 dengan n = 3, M = 30, w = (35, 32, 25) dan p = (40, 25, 50)
3
1 x 1 =1
x 1 =0
2
9
B
x 2 =1
x 2 =0
13
10
B x 3 =1
x 3 =0
14
15
Penomoran ulang simpul-simpul sesuai urutan pembangkitannya 1 x 1 =1
x 1 =0
2 B
3
x 2 =1
x 2 =0
5
4
B x 3 =1
6
x 3 =0
7
Setiap simpul dalam pohon ruang status berasosiasi dengan sebuah pemanggilan rekursif. Jika jumlah simpul dalam pohon ruang status adalah 2n atau n!, maka untuk kasus terburuk, algoritma runut-balik membutuhkan waktu dalam O(p(n)2n) atau O(q(n)n!), dengan p(n) dan q(n) adalah polinom derajat n yang menyatakan waktu komputasi setiap simpul.
4
Contoh lainnya adalah :
Sirkuit Hamilton dalam sebuah Graf di bawah ini. a
b
c
f
d
e
Asumsikan jika terdapat Sirkuit Hamilton, dimulai dari simpul a ke a sebagai root dari lintasan tersebut dan state space dalam tree, berdasarkan pengurutan abjad. Ini adalah state-space tree nya. a
0
1 b 2 c 3
e 7
f
9
e
10
c
11
d
12
6
d
e
f
8 d
f
Dead-end
Dead-end
4
5
Dead-end
a Solution
C. Kekuatan dan Kelemahan Algoritma Runut Balik Analisa penggunaan teknik Backtracking pada Backtracking pada lintasan Hamilton : 1. Keunggulan menggunakan algoritma backtracking yakni mudah merunut balik apa yang kita kerjakan, apabila kita salah melangkah maka kita akan kembali pada posisi yang mempunyai solusi permasalahan. 2. Kelemahan menggunakan algoritma backtracking yakni kita belum dapat mengetahui apakah langkah yang kita ambil merupakan langkah yang terbaik, sehingga memungkinkan terjadi terlalu banyak backtracking yang harus dilakukan.
5
D. Penggunaan Algoritma Runut Balik Algoritma runut balik (backtracking (backtracking ) merupakan algoritma yang digunakan untuk mencari solusi persoalan secara lebih mangkus daripada menggunakan algoritma brute force.Algoritma force.Algoritma ini akan mencari solusi berdasarkan ruang solusi yang ad a secara sistematis namun tidak semua ruang solusi akan diperiksa, han ya pencarian yang mengarah kepada solusi yang akan diproses. (Rinaldi Munir, Diktat Strategi Algoritmik, Teknik Informatika ITB. 2005).
Algoritma backtracking mempunyai backtracking mempunyai prinsip dasar yang sama seperti brute-force yaitu mencoba segala kemungkinan solusi. Perbedaan utamanya adalah pada ide dasarnya, semua solusi dibuat dalam bentuk pohon solusi (pohon ini tentunya berbentuk abstrak) dan algoritma akan menelusuri pohon tersebut secara DFS secara DFS ((depth field search) sampai ditemukan solusi yang layak.
6
BAB III PENUTUP A. Kesimpulan Algoritma Runut Balik yang merupakan perkembangan dari Brute Force .Algoritma Runut Balik adalah algoritma yang digunakan untuk mencari semua solusi yang ada. Algoritma Runut Balik berbasis pada DFS (Depth First Search) sehingga aturan pencariannya akan mengikut kepada aturan pencarian DFS yaitu dengan mencari solusi dari akar ke daun (dalam pohon ruang solusi) dengan pencarian kedalam.
7
DAFTAR PUSTAKA Munir, Rinaldi. Munir, Rinaldi. Algoritma Runut-balik (Backtracking).[Online]. (Backtracking).[Online]. Tersedia : http://www.ittelkom.ac.id/staf/zka/Materi%20Desain%20Analisis%20Algoritma/M14Algoritma %20Runut-balik.pdf. [25 April 2013]
8