Disusun Untuk Memenuhi Tugas Mata Kuliah
Disusun Untuk Memenuhi Tugas Mata Kuliah AlgoritmAlgoritma dan a dan Pemograman IIPemograman II
disusun oleh:
disusun oleh:
1.
1. Abdul Abdul Rahman Rahman (0808733)(0808733) 2.
2. Imam Imam Fachmi Fachmi Nasrullah Nasrullah (0902306)(0902306) 3.
3. Windia Windia (0608554)(0608554) 4.
4. Widianto Widianto Gilang Gilang Ramadhan Ramadhan (0905653)(0905653)
Program Studi Ilmu Komputer dan Pendidikan
Program Studi Ilmu Komputer dan Pendidikan Ilmu KomputerIlmu Komputer Fakultas Pendidikan Matematika dan Ilmu Pengetahuan
Fakultas Pendidikan Matematika dan Ilmu Pengetahuan AlamAlam UNIVERSITAS PENDIDIKAN INDONESIA
UNIVERSITAS PENDIDIKAN INDONESIA
Rasa syukur yang dalam kami sampaikan kehadirat ALLAH SWT, karena berkat kemurahanNya makalah ini dapat kami selesaikan. Dalam makalah ini kami membahas
“Algoritma Backtracking serta Implementasinya”, suatu permasalahan para programmer sekaligus solusi dalam pembuatan algoritma yang ingin dibuatnya di antara berbagai algoritma- algoritma yang ada.
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 dan sekaligus melakukan apa yang menjadi tugas mahasiswa yang mengikuti mata kuliah “Algoritma dan Pemrograman II”
Dalam proses pendalaman materi Backtracking ini, tentunya kami mendapatkan bimbingan, arahan, koreksi dan saran, untuk itu rasa terima kasih yang dalam-dalamnya kami sampaikan :
Dr. Dedi Rohendi, MT. selaku dosen mata kuliah “Algoritma dan Pemrograman II”
Rekan-rekan mahasiwa yang telah banyak memberikan masukan untuk makalah ini.
Semoga makalah ini dapat memberikan wawasan yang lebih luas kepada pembaca. Walaupun makalah ini memiliki kelebihan dan kekurangan. Penyusun mohon untuk saran dan kritiknya.
Terima kasih.
Bandung, 21 Desember 2010
Penyusun
DAFTAR ISI
Algoritma Backtracking serta Implementasinya ... 1
KATA PENGANTAR... 2
DAFTAR ISI ... 3
BAB I ... 4
PENDAHULUAN ... 4
Latar Belakang Masalah ... 4
Perumusan Masalah... 5
Maksud dan Tujuan ... 5
1.3.1 Maksud Pembahasan ... 5
1.3.2 Tujuan Pembahasan ... 5
BAB II ... 6
PEMBAHASAN ... 6
2.1 Algoritma Runut Balik (Backtracking) ... 6
2.2 Properti Umum Metode runut balik (Backtracking) ... 7
2.3 Pengorganisasian Solusi ... 7
2.4 Skema Umum Algoritma Backtracking ... 9
2.5 Implementasi Algoritma runut balik ... 9
BAB III ... 9
PENUTUP ... 9
Kesimpulan ... 10
Saran-saran ... 10
Daftar Pustaka ... 11
Di dalam kehidupannya, manusia selalu menemui masalah atau persoalan. Hal ini mungkin didasarkan dari sifat dasar manusia itu sendiri yang selalu ingin tahu segala sesuatu.
Deskripsi dari masalah menurut [NEA96] adalah pertanyaan atau tugas yang kita cari jawabannya.
Dalam menghadapi permasalahan, untuk menyelesaikannya manusia memerlukan langkah-langkah yang benar sehingga permasalah tersebut dapat terselesaikan. Urutan langkah-langkah untuk memecahkan suatu masalah tersebutlah yang dinamakan dengan algoritma. Definisi lain dari algoritma adalah deretan langkah-langkah komputasi yang mentranformasikan data masukan menjadi keluaran [COR92].
Dalam menentukan langkah-langkah tersebut diperlukan suatu strategi agar langkah- langkah yang dipakai tersebut dapat menyelesaikan permasalahan secara mangkus (efisien).
Strategi menurut kamus besar bahasa indonesia adalah rencana yang cermat mengenai kegiatan untuk mencapai sasaran khusus. Rencana itu sendiri dapat berisi suatu metode atau teknik yang digunakan untuk mencapai sasaran khusus tersebut.
Dengan pengertian algoritma dan strategi tersebut, kita dapat mendefinisikan strategi algoritmik sebagai kumpulan metode atau teknik untuk memecahkan masalah guna mencapai tujuan yang ditentukan, yang dalam hal ini deskripsi metode atau teknik tersebut dinyatakan dalam suatu urutan langkah-langkah penyelesaian.
Secara umum, strategi pemecahan masalah dapat dikelompokan menjadi:
1. Strategi solusi langsung, metode yang termasuk ke dalam strategi ini adalah: Algoritma Brute Forcedan Algoritma Greedy
2. Strategi berbasis pencarian pada ruang status, metode yang termasuk ke dalam strategi ini adalah: Algoritma Backtracking dan Algoritma Brach and Bound
3. Strategi solusi atas-bawah, metode yang termasuk ke dalam strategi ini adalah Algoritma Divide and Conquer.
4. Strategi solusi bawah-atas, metode yang termasuk ke dalam strategi ini adalah Dynamic Programming.
Strategi yang akan dibahas pada makalah ini adalah strategi berbasis pencarian pada ruang status. Secara spesifik, metode yang dibahas adalah Algoritma runut balik ( Backtracking). Permasalahan ini akan dibahas lebih lanjut dalam bab selanjutnya.
Perumusan Masalah
Dari latar belakang yang telah diuraikan, maka timbul beberapa pertanyaan yang merupakan rumusan masalah, yakni sebagai berikut:
1. Apakah yang dimaksud dengan algoritma runut balik ( Backtracking) ?
2. Apa keunggulan serta kelemahan algoritma runut balik ( Backtracking) dibandingkan dengan algoritma-algoritma yang ada?
3. Bagaimana prosedur algoritma runut balik ( Backtracking) ?
4. Bagaimana Implementasi algoritma runut balik ( Backtracking) dalam pemrograman ?
Maksud dan Tujuan
1.3.1 Maksud Pembahasan
Berdasarkan uraian latar belakang dan rumusan masalah di atas, maka maksud dari pembahasan ini adalah untuk mengetahui dengan jelas hal-hal yang berkaitan dengan sebuah algoritma yang dinamakan dengan algoritma runut balik ( Backtracking).
1.3.2 Tujuan Pembahasan
Tujuan pembahasan ini dapat dirumuskan untuk:
1. Menganalisis definisi yang dimiliki oleh algoritma runut balik ( Backtracking).
2. Menganalisis prosedur algoritma dalam algoritma runut balik ( Backtracking).
3. Menganalisis implementasi algoritma runut balik ( Backtracking).
2.1 Algoritma Runut Balik ( Backtracking)
Algoritma runut balik pertama kali diperkenalkan oleh D.H Lehmer pada tahun 1950.
Algoritma ini cukup mangkus untuk digunakan dalam beberapa penyelesaian masalah dan juga untuk memberikan kecerdasan buatan dalam game. Beberapa game populer semisal
Sudoku, Labirin, Catur juga bisa diimplementasikan dengan menggunakan algoritma runut balik.
Algoritma runut balik ( Backtracking) merupakan algoritma yang digunakan untuk mencari solusi persoalan secara lebih mangkus daripada menggunakan algoritma brute force.
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. (Rinaldi Munir, Diktat Strategi Algoritmik, Teknik Informatika ITB. 2005).
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 mendalam. Simpul-simpul yang sudah dilahirkan (diperiksa) dinamakan simpul hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-E atau Expand Node.
Algoritma 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 (depth field search)sampai ditemukan solusi yang layak.
2.2 Properti Umum Metode runut balik ( Backtracking)
Untuk menerapkan metode runut-balik, properti berikut didefinisikan:
1. Solusi persoalan.
Solusi dinyatakan sebagai vektor n-tuple:
X=(x1, x2, ..., xn), xi anggota himpunan berhingga Si . Mungkin saja S1 = S2 = ... = Sn.
Contoh: Si = {0,1}
Si = 0 atau 1
2. Fungsi pembangkit nilai xk Dinyatakan sebagai:
T(k)
T(k)membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi 3. Fungsi Pembatas (fungsi kriteria)
Dinyatakan sebagai:
B(x1, x2, ..., xk)
Fungsi pembatas menentukan apakah (x1, x2, ..., xk) mengarah ke solusi. Jika ya, maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi jika tidak, maka (x1, x2, ..., xk) dibuang dan tidak dipertimbangkan lagi dalam pencarian solusi.
2.3 Pengorganisasian Solusi
Semua kemungkinan solusi dari persoalan disebut ruang solusi(solution space).
Jika xiS ,i maka S 1 S 2 … S n disebut ruang solusi. Jumlah anggota di dalam ruang solusi adalah | S 1| | S 2| … | S n |. Tinjau persoalan Knapsack 0/1 untuk n = 3. Solusi persoalan dinyatakan sebagai vektor ( x1, x2, x3) dengan xi {0,1}. Ruang solusinya adalah
{0,1}{0,1} {0,1} = {(0, 0, 0), (0, 1, 0), (0, 0, 1), (1, 0, 0), (1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 1, 1)}.
Pada persoalan Knapsack 0/1 dengan n = 3 terdapat 2n = 23 = 8 kemungkinan solusi, yaitu:
(0, 0, 0), (0, 1, 0), (0, 0, 1), (1, 0, 0), (1, 1, 0), (1, 0, 1), (0, 1, 1), dan (1, 1, 1).
Penyelesaian secara exhaustive searchadalah dengan menguji setiap kemungkinan solusi.
Ruang solusi diorganisasikan ke dalam struktur pohon. Tiap simpul pohon menyatakan status (state) persoalan, sedangkan sisi (cabang) dilabeli dengan nilai-nilai xi. Lintasan dari akar ke daun menyatakan solusi yang mungkin. Seluruh lintasan dari akar ke daun membentuk ruang solusi. Pengorganisasian pohon ruang solusi diacu sebagai pohon ruang status ( state space tree). Tinjau kembali persoalan Knapsack 1/0 untuk n= 3. Ruang solusinya:
1
2 9
3 6
4 5 7 8
10
11 12
13
14 15
x 1=1 x
1=0
x 2=1 x
2=0 x
2=1 x
2=0
x 3=1 x
3=0 x
3=1 x
3=0 x
3=1 x
3=0 x
3=1 x
3=0
Gambar Ruang solusi untuk persoalan Knapsack 0/1 dengann = 3
2.4 Skema Umum Algoritma Backtracking
procedure RunutBalikI(input n:integer)
{Mencari semua solusi persoalan dengan metode runut-balik; skema iteratif.
Masukan: n, yaitu panjang vektor solusi Keluaran: solusi x = (x[1], x[2], …, x[n]) }
Delarasi:
k : integer Algoritma:
k1
while k > 0 do
if (x[k] belum dicoba sedemikian sehingga x[k] T(k)) and
(B(x[1], x[2], ... ,x[k])= true) then
if (x[1],x[2],...,x[k]) adalah lintasan dari akar ke daun then
CetakSolusi(x) endif
kk+1 {indeks anggota tupple berikutnya}
else {x[1], x[2], …, x[k] tidak mengarah ke simpul solusi }
kk-1 {runut-balik ke anggota tupple sebelumnya}
endif endwhile { k = 0 }
Pemanggilan prosedur pertama kali: RunutBalikI(n)
2.5 Implementasi Algoritma runut balik
Algoritma runut balik ini banyak digunakan pada beberapa program, seperti program permainan sudoku, program permainan kuda menyebrang jembatan dengan lintasan Hamilton, program pencarian solusi game maz (labirin), dan permainan knight’s tour , dan beberapa program yang lainnya.
1. Algoritma runut balik ( Backtracking algorithm) merupakan algoritma yang digunakan untuk mencari solusi persoalan secara lebih mangkus daripada menggunakan algoritma brute force.
2. 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.
3. Dengan menggunakan algoritma Backtracking ini kita dapat menyelesaikan
persoalan untuk penyelesaian berbagai macam permainan, seperti : Game Sudoku, GameKuda Menyebrang Jembatan, Game Labirin, dan Permainan Knight’s Tour.
Saran-saran
1. Algoritma Backtracking dapat dijadikan salahsatu alternatif pilihan dalam menyelesaikan sebuah permasalahan yang membutuhkan waktu singkat.
2. Untuk menyelesaikan sebuah permainan game yang membutuhkan algoritma, algoritma Backtracking ini bisa dimanfaatkan