Anda di halaman 1dari 25

DYNAMIC PROGRAMMING

MAKALAH

DIAJUKAN UNTUK MEMENUHI SALAH SATU TUGAS MATA KULIAH MODEL STOKASTIK
OLEH IBU NOVA INDAH SARAGIH, S.T., M.T.

Oleh:
Kelompok 2
 Mega 0514104002
 Veronika Br Marpaung 0514104004
 Satya Rochman Sukmana 0514104006
 Danar Sri A 0514104010
 David Pardamean 0514104012

PROGRAM STUDI TEKNIK INDUSTRI


FAKULTAS TEKNIK
UNIVERSITAS WIDYATAMA
BANDUNG
SK Ketua Badan Akreditasi Nasional Perguruan Tinggi (BAN-PT)
Nomor: 112/SK/BAN-PT/Akred/S/III/2015
2016
BAB I
PENDAHULUAN
1.1 Latar Belakang
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.
Divide-and-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.
Pemrograman dinamis istilah awalnya digunakan dalam 1940-an oleh Richard
Bellman untuk menggambarkan proses pemecahan masalah dimana salah satu kebutuhan
untuk menemukan satu keputusan terbaik demi satu. Dengan 1953, ia disempurnakan ini
untuk makna modern, mengacu khusus untuk bersarang masalah keputusan kecil dalam
keputusan yang lebih besar, dan lapangan itu kemudian diakui oleh IEEE sebagai topik
analisis sistem dan rekayasa. Kontribusi Bellman adalah diingat dalam nama persamaan
Bellman, hasil pusat pemrograman dinamis yang menyatakan kembali masalah optimasi
dalam bentuk rekursif. Dinamika Kata dipilih oleh Bellman untuk menangkap aspek
waktu bervariasi dari masalah, dan juga karena terdengar mengesankan Pemrograman
kata mengacu pada penggunaan metode untuk menemukan program yang optimal, dalam
arti militer. jadwal untuk pelatihan atau logistik. Penggunaan ini adalah sama seperti yang
dalam pemrograman linear dan pemrograman frasa matematika, sebuah sinonim untuk
optimasi matematika.
1.2 Rumusan Masalah
1. Apakah yang dimaksud dengan Dynamic Programming
2. Apakah fungsi dari Dynamic Programming
3. Sebutkan kelebihan dan kekurangan Dynamic Programming

1.3 Tujuan Penulisan


1. Mengetahui apa itu Dynamic Programming
2. Mengetahui fungsi dari Dynamic Programming
3. Mengetahui kelebihan dan kekurangan pada Dynamic Programming
BAB II
ISI
2.1 Definisi Dynamic Programming (Program Dinamis)

Dynamic Programming adalah suatu teknik algoritma untuk memecahkan masalah


dimana solusi optimal dari masalah tersebut dapat dipandang sebagai suatu deret keputusan.
Persoalan partisi merupakan persoalan yang sering diterapkan dalam kehidupan sehari-hari
seperti misalnya pada persoalan pembagian pekerjaan. Persoalan partisi sendiri memiliki
banyak model dan karateristik. Persoalan yang dibahas dalam makalah ini adalah persoalan
membagi pekerjaan untuk dikerjakan oleh N pekerja secara efisien sedemikian sehingga setiap
pekerja mendapat pekerjaan yang relatif sama(perbedaan bobot yang diterima pekerja dibuat
seminimum mungkin). Penyelesaian persoalan ini salah satunya adalah dengan menggunakan
algoritma program dinamis (dynamic programming). Algoritma program dinamis adalah
penyelesaian persoalan dengan cara menguraikan solusi menjadi sekumpulan langkah dan
memandang solusi dari persoalan tersebut sebagai serangkaian keputusan yang saling
berkaitan.
Suatu pekerjaan yang berskala besar seringkali harus dikerjakan oleh banyak pekerja.
Pekerjaan berskala besar itu biasanya dapat dibagi-bagi menjadi beberapa bagian pekerjaan
yang masing-masing bagian memiliki bobot tertentu. Pembagian bobot pekerjaan selayaknya
relatif sama (perbedaaan bobot yang diterima setiap pekerja dibuat seminimum mungkin) untuk
setiap pekerja. Cara Pembagian pekerjaan dengan memperhitungkan bobot tersebut dapat
mengefisiensikan waktu pengerjaan dan juga mendapatkan hasil yang optimal.
Sebagai contoh, Misalnya :
Kita diberikan sebuah pekerjaan untuk melakukan pencarian informasi yang ada pada
beberapa buku yang memiliki jumlah halaman berbeda kepada tiga pekerja. Buku-buku ini
dibagi ke setiap pekerja dengan jumlah halaman buku relatif sama (perbedaan halaman yang
diterima setiap pekerja dibuat seminimum mungkin). Untuk membagi jumlah halaman tersebut
dengan perbedaan halaman seminimal mungkin diperlukan sebuah metode pembagian partisi.
Proses pembagian partisi ini dapat menerapkan berbagai algoritma salah satunya adalah
menggunakan program dinamis.
Dalam matematika dan ilmu komputer, pemrograman dinamis adalah metode untuk
memecahkan masalah yang kompleks dengan melanggar mereka ke dalam subproblems yang
lebih sederhana. Hal ini berlaku untuk masalah menunjukkan sifat overlapping subproblem
yang hanya sedikit lebih kecil dan optimal substruktur (dijelaskan di bawah). Ketika
diterapkan, metode ini membutuhkan waktu jauh lebih sedikit daripada metode naif.
Ide kunci di balik pemrograman dinamis adalah cukup sederhana. Secara umum, untuk
memecahkan persoalan yang diberikan, kita perlu untuk memecahkan berbagai masalah
(submasalah), kemudian menggabungkan solusi dari submasalah untuk mencapai solusi secara
keseluruhan. Seringkali, banyak dari submasalah ini benar-benar sama. Pendekatan
pemrograman dinamis berusaha untuk memecahkan setiap subproblem hanya sekali, sehingga
mengurangi jumlah perhitungan. Hal ini sangat berguna ketika jumlah subproblems
mengulangi secara eksponensial besar.
Dynamic programming biasanya 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 mininal). Program dinamis
(dynamic programming) merupakan suatu metode pemecahan masalah dengan cara
menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian
sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling
berkaitan. Pada penyelesaian persoalan dengan metode ini terdapat sejumlah berhingga pilihan
yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, dan
menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus
dipertimbangkan pada suatu tahap.
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
Langkah 1-3 adalah dasar dynamic-programming dalam menemukan solusi untuk suatu
problem, Step 4 dapat dilakukan jika nilai solusi optimal diperlukan.
Krakteristik program dinamis adalah sebagai berikut:

1. Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya
diambil satu keputusan
2. Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan
tahap tersebut. Secara umum, status merupakan bermacam kemungkinan masukan yang
ada pada tahap tersebut.
3. Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang
bersangkutan ke status berikutnya pada tahap berikutnya.
4. Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan
bertambahnya jumlah tahapan.
5. Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan
ongkos pada tahap tersebut.
6. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang
dilakukan pada tahap sebelumnya.
7. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap
status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1.
8. Prinsip optimalitas berlaku pada persoalan tersebut.

Terdapat dua solusi pendekatan programa dinamis, yaitu pendekatan maju (forward atau up-
down) dan pendekatan mundur (backward atau bottom-up).
- Program dinamis maju.
Program dinamis bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya
sampai tahap n. Runtunan peubah keputusan adalah x1, x2, …, xn.
- Program dinamis mundur.
Program dinamis bergerak mulai dari tahap n, terus mundur ke tahap n – 1, n – 2, dan
seterusnya sampai tahap 1. Runtunan peubah keputusan adalah xn, xn-1, …, x1.

Konsep dasar programa dinamis adalah sebagai berikut:


 Berdasarkan prinsip optimisasi Bellman (1950): An optimal policy has the property that
whatever the initial decision are, the remaining decisions must constitute an optimal
policy with regard to the state resulting from the first decision.
 Suatu masalah dapat dibagi menjadi beberapa tahap
 Dalam rangkaian keputusan yang telah diambil, hasil dari masing-masing terpengaruh
pada hasil keputusan sebelumnya.
 Rangkaian keputusan yang diambil mesti membentuk kebijakan yang optimal secara
keseluruhan.
 Bagi tahap persoalan yang masih tersisa kita diizinkan mengambil keputusan yang
layak tanpa tergantung dari keputusan-keputusan yang telah diambil sebelumnya
èoptimisasi prinsip.
 Prosedur pemecahan masalah dalam program dinamik dilakukan secara rekursif.
 Pada setiap tahap, nilai keadaan tahap sebelumnya merupakan masukan untuk tahap
sekarang dan keluarannya menjadi masukan untuk tahap berikutnya. Pada setiap tahap
kita diharuskan mengambil keputusan optimal.
Prinsip pertama dalam model Dynamic programming adalah bahwa masalah dapat dibagi
menjadi bagian-bagian masalah yang lebih kecil. Masalah yang lebih kecil atau sub masalah
ini tersebut sebagai tahap keputusan (stage). Setiap masalah uang akan diselesaikan, terlebih
dahulu dibagi-bagi menjadi beberapa masalah kecil dengan maksud memudahkan evaluasi
masalah untuk mendapatkan keputusan optimal dari tiap-tiap tahap yang pada akhirnya akan
menghasilkan satu keputusan yang optimal. Oleh karena itu model Dynamic programming
disebut juga model multi stage programming (model multi tahap).

Proses urutan pembagian masalah dalam model Dynamic programming ditunjukan


pada gambar berikut

Status input Status input Status input


tahap 3 tahap 2 tahap 1
Tahap Tahap Tahap
Keputusan 3 Keputusan 2 Keputusan 1

Status output Status output


tahap 3 tahap 2

**Proses Urutan pembagian masalah Secara Mundur

Prinsip kedua dalam model Dynamic programming adalah tentang status (state).

Pengertian status (state) dalam Dynamic programming adalah arus informasi dari suatu

tahap ke tahap berikutnya. Arus informasi yang masuk ke suatu tahap disebut status input,

sedangkan arus informasi yang keluar dari suatu tahap diseebut stats output. Status input

penting, karena keputusan pada tahap berikutnya tergantung dari status input sebelumnya.

Jadi, status input untuk tahap keputusan n-1 merupakan status output dari tahap keputusan

sebelumnya, yaitu tahap keputusan n. Sedangkan status output dari tahao keputusan n akan

menjadi status input untuk tahap kepututsan berikutnya, yaitu tahap keputusan n-1.

Prinsip ketiga dalam model Dynamic Programming adalah tentang variabel

keputusan. Variabel keputusan dalam Dynamic Programming dainyatakan dalam berbagai

bentuk keputusan alternatif yang dapat dipilih pada saat pengambilan keputusan pada tahap
tertentu. Berbagai alternatif keputusan yang dapat diambil dalam setiap tahap keputusan

dapat dibatasi dengan sejumlah persyaratan yang dikenalkan dalam struktur masalah.

Prinsip keempat dalam model Dynamic Programming adalah tentang fungsi transformasi.
Fungsi transformasi memberikan penjelasan tentang bagaimana hubungan antara tahap
keputusan yang satu dengan tahap keputusan yang lain dalam Dynamic Programming
diformulasikan. Selain itu fingsi transformasi juga menyatakan tentang hubungan fungsional
nilai status pada setiaptahap keputusan. Hubngan status dalam tahap keputusan yang berurutan
bersifat berulang, artinya jika terdapat tahap keputusan n dalam hubungannya dengan thap
keputusan n-1 maka perhitungan untuk nilai status n-1 menggunakan nilai status n dari
keputusan pada tahap.

2.2 Kekurangan dan Kelebihan Strategi Dynamic Programming


A. Kelebihan Dynamic Programming
Terdapat beberapa kelebihan pada Dynamic Programming, diantaranya :
- 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 diketahui.

- Pendekatan Dynamic Programming dapat diaplikasikan untuk berbagai macam

masalah pemrograman matematik, karena Dynamic Programming cenderung lebih

fleksibel dari pada teknik optimasi lain.

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

- Dynamic Programming dapat menyesuaikan sistematik perhitungannya menurut

ukuran masalah yang tidak selalu tetap dengan melakukan perhitungan satu per satu

secara lengkap dan menyeluruh.


B. Kekurangan Dynamic Programming
Disamping memiliki kelebihan, Dynamic Programming juga memiliki beberapa
kekurangan, diantaranya :
 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.

2.3 Multistage 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 diatangani 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.
Algoritma yang digunakan untuk menentukan rute terpendek pada graph multitahap
(multistage graph) adalah Dynamic Programming. Algoritma Dynamic Programming
adalah suatu metode pemecahan masalah dengan cara menguraikan solusi menjadi
sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari
persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Pada
Algoritma Dynamic Programming rangkaian keputusan yang optimal dibuat dengan
menggunakan prinsip optimalitas. Prinsip optimalitas yaitu jika solusi total optimal,
maka bagian solusi sampai tahap ke-k juga optimal. Prinsip optimalitas berarti bahwa
jika kita bekerja dari tahap k ke tahap k + 1, kita dapat menggunakan hasil optimal dari
tahap k tanpa harus kembali ke tahap awal.

2.4 Study Kasus Dynamic Programming


2.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.
Knapsack problem bisa diselesaikan dengan berbagai cara. Ada beberapa strategi algoritma
yang bisa menghasilkan solusi optimal, diantaranya adalah Brute Force. Tapi strategi ini tidak
efisien, jadi knapsack problem pada laporan ini akan diselesaikan dengan Greedy Algorithm
yaitu solusi yang mencari nilai optimum. Algoritma ini memecahkan permasalahan langkah
per langkah, pada setiap langkah:
 Mengambil pilihan terbaik yang bisa diperoleh saat itu juga tanpa memperatikan
konsekuensi kedepan (prinsip “take what you can get now!”).
 Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir
dengan optimum global.

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

2.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:
1. Perjalanan dimulai dan diakhiri di kota yang sama sebagai kota asal sales.
2. Seluruh kota harus dikunjungi tanpa satupun kota yang terlewatkan.
3. Salesman tidak boleh kembali ke kota asal sebelum seluruh kota
terkunjungi.
4. Tujuan penyelesaian permasalahan ini adalah mencari nilai optimum
dengan meminimumkan jarak total rute yang dikunjungi dengan mengatur
urutan kota.
Perhatikan contoh berikut:
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.




CONTOH SOAL DYNAMIC PROGRAMMING
1. Contoh kasus dengan penyelesaian menggunakan metode Dynamic Programming.

Jenis kotak yang akan dipilih untuk di masukkan ke kotak yang besar:

Selesaikan dengan metode Dynamic Programming.


Jawab :

Solusi dengan Metode Dynamic Programming

a. Membagi dua kotak tersebut seperti terlihat pada gambar berikut:

b. Membagi lima kotak di atas sehingga terlihat seperti pada gambar berikut:
c. Selanjutnya membagi lagi kotak yang di atas sehingga menbentuk seperti yang di
bawah:

d. Mengisi kotak diatas sesuai kotak yang sudah digabungkan dengan bentuk seperti di bawah.
Anggaplah kotak di bawah adalah kotak G .

Luas kotak G : 7m x 4m = 28

e. Selanjutnya kotak yang belum terisi di atas dibagi lagi sehingga terbentuk seperti
pada gambar berikut.
f. Kotak yang kosong di atas diisi kotak G seperti terlihat pada kotak di bawah

g. Kotak yang masih kosong di isi dengan kotak yang mungkin masuk pada kotak di
atas. Kotak yang mungkin bisa masuk pada kotak di atas adalah kotak C. sehingga
dapat dilihat seperti pada gambar berikut.

h. Kotak di atas tidak dapat lagi di isi kotak , maka kita dapat menghitung menghitung
jumlah kotak yang terisi pada kotak di atas yaitu 37. 36 diantaranya kotak B dan
sisanya kotak C. Dan sisanya dapat dihitung sebagai berikut:
Sisa Luas kotak = Luas I + Luas II
= (4 x 1) + (3 x3)
=4+9
= 13 m2
Jadi, kesimpulannya Metode Dynamic Programming lebih optimal

CONTOH SOAL - Shortest Path

7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10

3 9 4
4
3 1
4
3
4 7
5

Tentukan lintasan terpendek dari simpul 1 ke simpul 10


JAWAB :
Penyelesaian dengan Program Dinamis Maju :
- Misalkan x1, x2, …, x4 adalah simpul-simpul yang dikunjungi pada
tahap k (k = 1, 2, 3, 4).
- Maka rute yang dilalui adalah

dalam hal ini x1 = 1.


Lintasan Terpendek (shortest path) :
Pada persoalan lintasan terpendek (shortest path) ini:
- Tahap (k) adalah proses memilih simpul tujuan berikutnya (ada 4
tahap).
- Status (s) yang berhubungan dengan masing-masing tahap adalah
simpul-simpul di dalam graf.
Tahap 1

7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10

3 9 4
4
3 1
4
3
4 7
5

Tahap 2

7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10

3 9 4
4
3 1
4
3
4 7
5
Tahap 3

7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10

3 9 4
4
3 1
4
3
4 7
5

Tahap 4
7
2 5
1
2 4 3 4
6 8 3
6
4
1 3 2 6 3 10

3 9 4
4
3 1
4
3
4 7
5

SOLUSI
CONTOH SOAL – Capital Budgeting
SOAL :
Sebuah perusahaan berencana akan mengembangkan usaha (proyek) melalui ketiga buah
pabrik (plant) yang dimilikinya. Setiap pabrik diminta mengirimkan proposal (boleh lebih dari
satu) ke perusahaan untuk proyek yang akan dikembangkan. Setiap proposal memuat total
biaya yang dibutuhkan (c) dan total keuntungan (revenue) yang akan diperoleh (R) dari
pengembangan usaha itu. Perusahaan menganggarkan Rp 5 milyar untuk alokasi dana bagi
ketiga pabriknya itu.
Tabel berikut meringkaskan nilai c dan R untuk masing-masing proposal proyek. Proposal
proyek bernilai-nol sengaja dicantumkan yang berarti tidak ada alokasi dana yang diberikan
untuk setiap pabrik. Tujuan Perusahaan adalah memperoleh keuntungan yang maksimum dari
pengalokasian dana sebesar Rp 5 milyar tersebut. Selesaikan persoalan ini dengan program
dinamis.

Misalkan:
Rk(pk) = keuntungan dari alternatif pk pada tahap k
fk(xk) = keuntungan optimal dari tahap 1, 2, …, dan k yang diberikan oleh status xk
JAWAB :
 Tahap (k) adalah proses mengalokasikan dana untuk setiap pabrik (ada 3 tahap, tiap
pabrik mendefinisikan sebuah tahap).
 Status (xk) menyatakan jumlah modal yang dialokasikan pada pada setiap tahap (namun
terikat bersama semua tahap lainnya).
 Alternatif (p) menyatakan proposal proyek yang diusulkan setiap pabrik. Pabrik 1, 2,
dan 3 masing-masing memiliki 3, 4 dan 2 alternatif proposal.
Tahap 1

Tahap 2
Tahap 3

SOLUSI
BAB III
PENUTUP
3.1 Kesimpulan
Pemrograman dinamis merupakan suatu teknik analisa kuantitatif untuk
membuat tahapan keputusan yang saling berhubungan. Teknik ini menghasilkan
prosedur yang sistematis untuk mencari keputusan dengan kombinasi yang optimal.
Pemrograman dinamis membagi permasalahan menjadi beberapa tahap keputusan,
dimana hasil keputusan dari satu tahap akan mempengaruhi keputusan dari tiap-tiap
tahapan selanjutnya.
Dynamic programming dapat didefinisikan juga sebagai suatu pendekatan
matematik yang memiliki prosedure sistematis yang dirancang sedemikian rupa
dengan tujuan untuk mengoptimalkan penyelesaian suatu masalah tertentu yang
diuraikan menjadi sub-sub masalah yang lebih kecil yang terkait satu sama lain dengan
tetap memperhatikan kondisi dan batasan permasalahan tersebut.
DAFTAR PUSTAKA
- http://dokumen.tips/documents/metode-greedy-dan-dynamic-programming.html

Anda mungkin juga menyukai