Anda di halaman 1dari 13

LAPORAN

DYNAMIC PROGRAMMING
Diajukan untuk memenuhi salah satu tugas mata kuliah
Analisis Algoritma

Nama

Lamnidar Muharamsah

NIM

10114346

KELAS

Analisis Algoritma 3

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK DAN ILMU KOMPUTER
UNIVERSITAS KOMPUTER INDONESIA
2016

DAFTAR ISI
KATA PENGANTAR

DAFTAR ISI..
BAB I..
1.1Latar

Belakang

Masalah

1.2Maksud

Dan

Tujuan
.
1.3Batasan
Masalah

BAB II.
2.1

Definisi

Strategi

Programming..
2.2
Kekurangan
Dan

Dynamic
Kelebihan

Strategi..
2.3 Multistage Graph Problem (Permasalahan Mencari Lintasan Pendek)
.
2.4

Study

Kasus

Dynamic

Programming..
2.4.1
Knapsack
Problem(Pendeketan
Dynamic
Programming)
..
2.4.2

Coin

Change

Problem.
2.4.3
Traveling
Salesman
Problem.

BAB III..
3.1

Algoritma

&

Program

Knapsack

Problem.
3.2
Algoritma
&
Program
Coin

Change

Problem.
3.3
Algoritma
&
Program
Traveling
Salesman

Problem

BAB I
PENDAHULUAN
I.1 Latar belakang masalah
Untuk Menyelesaikan Suatu Masalah Tentunya Membutuhkan Suatu Cara Atau
Solusi Agar Masalah Tersebut Terselesaikan Dengan Baik. Setiap Masalah Apapun
Tentunya Membutuhkan Yang Namanya Solusi Atau Cara. Dalam Sebuah Penelitianpun
Diperlukan Solusi Untuk Membantu Memecahkan Suatu Masalah. Sama Halnya Dengan
Laporan Ini Yang Membahas Tentang Dynamic Programming.
Dynamic Programming Mirip Seperti Metode Divide-And-Conquer Yang
Menyelesaikan Suatu Problem Dengan Mengkobinasikan Solusi Menjadi Subproblem. DivideAnd-Conquer Membagi Problem Menjadi Subproblem Yang Independen. Kemudian
Menyelesaikan Subproblem Secara Rekursif Dan Mengkombinasikan Solusi Tersebut Untuk
Menyelesaikan Problem Utama. Sedangkan Dynamic Programming Cocok Digunakan Ketika
Subproblem Tidak Indepen-Den, Jadi Ketika Subproblem Terbagi Menjadi Sub-Subproblem.
I.2 Maksud dan tujuan
Maksud dari program dinamis adalah suatu teknik matematis yang
biasanya digunakan untuk membuat suatu keputusan dari serangkaian keputusan yang
saling berkaitan. Dalam hal ini program dinamis menyediakan prosedur sistematis untuk
menentukan kombinasi keputusan yang optimal. Tujuan utama model ini ialah untuk
mempermudah penyelesaian persoalan optimasi yang mempunyai karakteristik tertentu. Tidak
seperti pemrograman linier, tidak ada bentuk matematis standar untuk perumusan pemrograman
dinamis. Akan tetapi, pemrograman dinamis adalah pendekatan umum untuk pemecahan
masalah dan persamaan tertentu yang digunakan di dalamnya harus dibentuk sesuai dengan
situasi masalah yang dihadapi.

I.3 Batasan masalah


Terdapat beberapa poin dalam batasan masalah laporan ini, yaitu :
1. Memecah permasalahan asli (original problem) menjadi bagian permasalahan
(subproblem) yang juga disebut sebagai tahapan (stage), dengan aturan keputusan di tiap-tiap
tahapan.
2. Memecahkan tahapan terakhir dari permasalahan dengan semua kondisi dan keadaan
yang memungkinkan.
3. Bekerja mundur dari tahap terakhir, dan memecahkan tiap tahap. Hal ini dikerjakan
dengan mencari keputusan optimal dari tahap tersebut sampai dengan tahap terakhir.
4. Solusi optimal dari permasalahan didapatkan jika semua tahap sudah terpecahkan.

BAB II
DYNAMIC PROGRAMMING
II.1 Definisi dynamic programming
Dynamic programming dapat didefinisikan sebagai suatu pendekatan
matematik yang memiliki prosedure sistematis yang dirancang sedemikian rupa dengan
tujuan untuk mengoptimalkan penyelesaian suatu masalah tertentu yang diuraikan menjadi subsub masalah yang lebih kecil yang terkait satu sama lain dengan tetap memperhatikan kondisi
dan batasan permasalahan tersebut. Struktur dynamic programming untuk dapat dimengerti
secara lebih jelas dan lebih spesifik, umumnya dideskripsikan dengan suatu sistem notasi.
Struktur dynamic programming disebut juga dengan model dynamic programming.
* Struktur Dan Sistem Notasi Dynamic Programming

Dynamic Programming (Biasa Disingkat DP) Adalah Suatu Teknik Algoritma Untuk
Memecahkan Masalah Dimana Solusi Optimal Dari Masalah Tersebut Dapat Dipandang Sebagai
Suatu Deret Keputusan.
Pada Umumnya Dynamic Programming Digunakan Untuk Masalah Optimisasi. Dimana
Suatu Permasalahan Memiliki Banyak Solusi. Setiap Solusi Memiliki Nilai Masing-Masing.
Dan Ingin Ditemukan Solusi Dengan Nilai Yang Optimum (Maksimal Atau Minimal).
Dynamic programming dapat dibagi menjadi empat tahap yang berurutan
sebagai berikut :
1. Karakterisasi struktur pada solusi optimasi
2. Mendefinisikan nilai solusi optimal secara rekursif
3. Menghitung nilai solusi optimal pada model bottom-up
4. Menyusun solusi optimal dari informasi hasil perhitungan

II.2 Kelibihan dan kekurangan strategi dynamic programming

Kelebihan Dynamic Programming


1. Proses pemecahan suatu masalah yang kompleks menjadi sub-sub
masalah yang lebih kecil membuat sumber permasalahan dalam
rangkaian proses masalah tersebut menjadi lebih jelas untuk diketahu.
2.

Pendekatan Dynamic Programming dapat diaplikasikan untuk berbagai


macam masalah pemrograman matematik, karena Dynamic Programming
cenderung lebih fleksibel dari pada teknik optimasi lain.

3. Prosedure perhitungan Dynamic Programming juga memperkenankan


bentuk analisis sensitivitasi terdapat pada setiap variabel status (state)
maupun pada variabel yang ada di masing-masing tahap keputusan
(stage).

Kekurangan Dynamic Programming


1

Penggunaan Dynamic Programming jjika tidak dilakukan secara tepat,


akan mengakibatkan ketidakefisienan biata maupun waktu. Karena dalam
menggunakan Dynamic Programming diperlukan keahlian, pengetahuan,
dan seni untuk merumuskan suatu masalah yang kompleks, terutama
yang berkaitan dengan penetapan fungsi transformasi dari permasalahan
tersebut.

Dynamic Programming tidak memiliki suatu bentuk formulasi matematik


yang baku untuk digunakan secara konsekuen, sehingga perhitungan
untuk menghasilkan keputusan optimal yang dilakukan terbatas pada
kondisi tertentu.

Hambatan terbesar pada Dynamic Programming adalah masalah


dimensionalitas, yaitu masalah dimana peningkatan variabel keadaan
yang digunakan dalam perhitungan pemrograman dinamis akan
menambah beban memory komputer serta menambah lama waktu
perhiutngan.

II.3Multistage Graph Problem (Permasalah Mencari Lintasan Terpendek)


Permasalahan pencarian rute terpendek merupakan suatu masalah yang
sangat terkenal di dunia Informatika. Dari dahulu hingga sekarang telah dikembangkan berbagai
algoritma untuk memecahkan permasalahan ini. Penentuan rute terpendek dari satu titik ke titik
yang lain adalah masalah yang sering ditemui dalam kehidupan sehari-hari.
Berbagai kalangan menemui permasalahan serupa dengan variasi yang berbeda, contohnya
seorang pengemudi yang mencari jalur terpendek dari tempat asal ke tempat tujuan, pengantar
pesanan makanan cepat saji yang juga mencari jalur terpendek dari tempat asal ke tempat tujuan,
dan juga seorang desainer jaringan komputer yang harus mendesain skema perutean pada
jaringan yang dia tangani agar memaksimalkan performa jaringan dan meminimalkan beban
yang harus ditangani oleh jaringan tersebut.
Persoalan untuk menentukan rute terpendek pada graph multitahap (multistage graph)
dan algoritma efisien yang tersedia untuk menghitung rute terpendek. Rute terpendek yang
diperoleh akan meminimumkan fungsi linier lintasan jarak dan waktu. Perumusan persoalan ini
akan menjadi salah satu kegunaan dari rute jarak terpendek. Algoritma yang digunakan untuk
menentukan rute terpendek pada graph multitahap (multistage graph) adalah Dynamic
Programming. Seiring dengan waktu yang berjalan dan juga perkembangan ilmu pengetahuan
dan teknologi permasalahan pencarian rute terpendek ini telah terpecahkan dengan berbagai
algoritma salah satunya dengan algoritma Dynamic Programming.

II.4Studi kasus dynamic programming


II.4.1

Knapsack problem (pendekatan dynamic programming)

Knapsack adalah tas atau karung. Karung digunakan untuk memuat


sesuatu. Dan tentunya tidak semua objek dapat ditampung di dalam karung tersebut, hanya
menampung barang yang pentingnya saja. Karung tersebut hanya dapat menyimpan beberapa
objek dengan total ukurannya (weight) lebih kecil atau sama dengan ukuran kapasitas karung.
Setiap objek itupun tidak harus kita masukkan seluruhnya. Tetapi bisa juga sebagian saja.
Knapsack problem memiliki tiga jenis solusi, yaitu:

Solusi Knapsack 0/1 (Zero One)


Sesuatu yang dimasukkan kedalam karung dimensinya harus dimasukkan
semua atau tidak sama sekali atau setiap barang hanya tersedia satu unit.

Solusi Knapsack Bounded


Sesuatu yang dimasukkan kedalam karung dimensinya bisa dimasukkan
sebagaian atau seluruhnya.

Solusi Knapsack Unbounded


Setiap barang tersedia lebih dari satu unit dan juga jumlahnya tak terbatas.

Contoh kasus knapsack

W1 = 10
W2=5
W3=15
W4=7
W5=6
W6=18
M =15

Jawaban

p1=2
p2=3
p3=5
p4=7
p5=1
p6=4

Property objek

Greedy by

Solusi
Optimal

Wi

Pi

Wi/Pi

profit

weight

density

10

1,7

15

18

4.5

Total bobot

15

11

13

15

Total keuntungan

54

42

52

54

Kesimpulan

: pada soal ini algorima greedy dengan strategi pemilihan objek

berdasarkan profit memberikan solusi optimal, sedangkan pemilihan objek berdasarkan


weight dan density tidak memberikan solusi optimal.

II.4.2 Coin Change problem


Coin change problem adalah proses di mana menukarkan kepala coin yang muncul
dengan tailnya, atau kasus yang lebih mudahnya adalah kasus penukaran mata uang rupiah ke
dollar , dimana jumlah nominal dalam rupiah akan di kalikan dengan angka(dollar) yang user
ingin kan. Dengan adanya program dynamic programming ini pengguna dapat menyelesaikan
suatu permasalahnya dengan mudah.
Contoh Kasus

Diberikan uang senilai 500. Tukar 500 dengan koin-koin uang yang tersedia. Koinkoin yang disediakan adalah koin 50 sebanyak 5 keping, koin 25 sebanyak 10 keping, koin 10
sebanyak 15 keping. Berapa jumlah koin yang diperlukan untuk penukaran tersebut? Jawaban
dari persoalan ini ada 2 macam , yaitu kombinasi yang maksimal dan kombinasi yang
minimal.

Pembahasan :
Untuk lebih mudah memahami persoalan , buatlah table yang memuat koin koin uang
yang tersedia beserta banyaknya.
Untuk kombinasi yang minimal jenis coin yang tersedia harus terlebih dahulu diurutkan
secara descending.
Indeks

Coin

Denom

amount

50

Dicari

25

10

Dicari

10

15

Dicari

Sedangkan untuk
mencari kombinasi yang

maksimal , jenis coin yang tersedia harus terlebih dahulu diurutkan secara ascending. Tabelnya seperti yang
terlihat di bawah ini :
Indeks

Coin

Denom

amount

10

15

Dicari

25

10

Dicari

50

Dicari

II.4.3 Traveling Salesman problem


TSP atau Traveling Salesman Problem adalah salah satu masalah distribusi
yang cukup lama dibahas dalam kajian optimasi. Masalahnya adalah bagaimana seorang
salesman mengunjungi seluruh kota di suatu daerah dan kembali ke kota awal keberangkatan dengan
aturan bahwa tidak boleh ada kota yang dikunjungi lebih dari satu kali.
Berikut adalah aturan-aturan yang mengidentifikasikan bahwa
permasalahan tersebut adalah TSP:

Perjalanan dimulai dan diakhiri di kota yang sama sebagai kota asal sales.

Seluruh kota harus dikunjungi tanpa satupun kota yang terlewatkan.

Salesman tidak boleh kembali ke kota asal sebelum seluruh kota terkunjungi.

Tujuan penyelesaian permasalahan ini adalah mencari nilai optimum dengan


meminimumkan jarak total rute yang dikunjungi dengan mengatur urutan kota.

Contoh

kasus

Perhatikan contoh berikut:

B
A

D
C

E
F
Seorang salesman akan mengawali perjalanannya di kota asal (Kota A) untuk
mengunjungi seluruh kota yaitu kota A sampai kota F. Perhatikan gambar berikut.
Dari study kasus tersebut didapatkan salah satu kemungkinan jalur yang
paling optimum dengan jalur urutan kota di mulai dari kota A, di lanjutkan
menuju ke kota E, dilanjutkan menuju ke kota F, dilanjutkan menuju ke kota C,
dilanjutkan menuju ke kota D, dilanjutkan kembali menuju ke kota B, lalu yang terakhir
kembali ke kota A. Tentunya hasil tersebut dengan mempertimbangkan jarak dari
masing-masing kota hingga menghasilkan kombinasi urutan kota dengan jarak yang
optimum.
Perhatikan gambar dibawah ini.

B
A

D
C

E
F

BAB III
PROGRAM

III.1 Algoritma & program Knapsack problem


III.2

Algoritma & program coin change problem

III.3 Algoritma & program traveling salesman problem

Anda mungkin juga menyukai