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