• Tidak ada hasil yang ditemukan

Rekan-rekan mahasiwa yang telah banyak memberikan masukan untuk makalah ini.

N/A
N/A
Protected

Academic year: 2022

Membagikan "Rekan-rekan mahasiwa yang telah banyak memberikan masukan untuk makalah ini."

Copied!
10
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

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:

(5)

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

(6)

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.

(7)

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).

(8)

Jika xiS  ,i maka S 1 2 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

1=1

1=0

2=1

2=0

2=1

2=0

3=1

3=0

3=1

3=0

3=1

3=0

3=1

3=0

Gambar Ruang solusi untuk persoalan Knapsack 0/1 dengann = 3

(9)

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.

(10)

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

Referensi

Dokumen terkait

bahwa guna melaksanakan Instruksi Gubernur Kalimantan Tengah Nomor 188.54/03/2011 tentang Jam Kerja Pegawai Negeri Sipil Di Lingkungan Pemerintah Kabupaten/Kota

Perbedaan penelitian yang sudah dilakukan yaitu mempunyai tujuan untuk mengetahui penerapan metode OSCE terhadap kesiapan dan motivasi mahasiswa pada praktik klinik

4 Stock Picks INDF 7600‐7900. 

Dimana, dalam percobaan ini akan merujuk pada sifat cahaya sebagai gelombang sehingga percobaan ini dimaksudkan untuk memahami cara kerja dari spektrometer, menentukan

Dari hasil pembahasan laporan Tugas Akhir ini diperoleh adanya perbedaan antara hasil perhitungan kebutuhan tulangan menurut proyek dengan hasil perhitungan kebutuhan

Form di bawah ini adalah form placed obyek ini merupakan form yang memiliki fungsi untuk memasukkan obyek-obyek (ATMBCA, hotel, rumah sakit, kantor polisi dan SPBU) ke

Berdasarkan observasi yang saya teliti promosi yang ditawarkan PT.Indosat pada mahasiswa Sabk IM Telkom banyak yang kecewa karena banyak promosi yang tidak

Tingkat akurasi pengenalan simbol menggunakan algoritma template matching OSAD secara umum menghasilkan performa rata-rata yang lebih baik (85.6%) dibandingkan dengan