• Tidak ada hasil yang ditemukan

LAPORAN TUGAS STRATEGI ALGORITMA DYNAMIC PROGRAMMING

N/A
N/A
Protected

Academic year: 2022

Membagikan "LAPORAN TUGAS STRATEGI ALGORITMA DYNAMIC PROGRAMMING"

Copied!
10
0
0

Teks penuh

(1)

LAPORAN TUGAS

STRATEGI ALGORITMA DYNAMIC PROGRAMMING

“Diajukan untuk memenuhi salah satu tugas pada Mata Kuliah Analisis Algoritma”

Disusun oleh :

Dosen :

Angga Setiyadi, S. Kom

TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER UNIVERSITAS KOMPUTER INDONESIA

2014/2015

Wildan Kurniadi 10113267

Indra Divani Adi Nugraha 10113239

(2)

2

DAFTAR ISI

BAB 1 PENDAHULUAN ... 3

1.1. LATAR BELAKANG MASALAH ... 3

1.2. MAKSUD DAN TUJUAN... 3

1.3. BATASAN MASALAH ... 4

BAB 2 DYNAMIC PROGRAMMING ... 5

2.1. Definisi Dynamic Programming ... 5

2.2. Kelebihan dan kekurangan Strategi Dynamic Programming ... 6

2.3. MultiStage Graph Problem (permaslahan mencari lintasan terpendek) ... 7

c. Studi Kasus Dynamic Programming ... 9

2.4.1. Knapsack Problem (Pendekatan Dynamic Programming) ... 9

2.4.2. Coin Change Problem ... 9

2.4.3. Traveling Salesman Problem ... 12

(3)

3

BAB 1 PENDAHULUAN

1.1. LATAR BELAKANG MASALAH

Salah satu hal yang menarik di dunia pemrogramman adalah tentang bagaimana menemukan jalan keluar (solusi) dari setiap masalah dengan tahap/rute yang paling sedikit/terpendek. Dari dahulu hingga sekarang telah dikembangkan berbagai algoritma untuk memecahkan permasalahan ini. Hingga saat ini telah banyak yang menemukan solusi untuk pencarian rute terpendek ini. Salah satunya yang terkenal adalah algoritma dynamic programming (algoritma Bellman – Ford).

Penentuan route 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 sebuah maskapai penerbangan yang memerintahkan seorang pilot untuk mencari jalur terpendek sehingga bisa menggunakan bahan bakar lebih efisien, 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.

Seiring dengan waktu yang berjalan dan juga perkembangan ilmu pengetahuan dan teknologi permasalahan pencarian route terpendek ini telah terpecahkan dengan berbagai algoritma salah satunya dengan algoritma Dynamic Programming.

Pemrograman Dinamis (dynamic programming) adalah 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. Ongkos pada tahap k +1

= (ongkos yang dihasilkan pada tahap k ) + (ongkos dari tahap k ke tahap k + 1).

1.2. MAKSUD DAN TUJUAN

Permasalahan dalam makalah ini adalah bagaimana peranan Algoritma Dynamic Programming dalam menyelesaikan masalah -

masalah yang terdapat dalam masalah pemrogramman untuk mendapatkan sebuah Algoritma yang efektif dan efisien, sehingga programmer lebih terarah dalam membuat sebuah program dengan baik.

(4)

4 tentunya akan membuat waktu pemrosesan labih efisien dan efektif, selain itu juga memudahkan dalam penganalisaan masalah ketika terdapat sebuah kesalahan dalam program.

1.3. BATASAN MASALAH

Pada kesempatan ini kami hanya akan membahas beberapa metode yang bisa digunakan dalam pembuatan sebuah program. Selain itu juga kami akan sertakan beberapa studi kasus dalam bentuk program dan algoritma sehingga lebih memudahkan dalam memahami apa yang dimaksud Dynamic Programming itu sendiri.

Diantara banyak studi kasus yang bisa dibuat kami hanya akan membuat beberapa diantaranya :

 Knapsack Problem

 Coin Change Problem

 Travelling Salesman Problem

(5)

5

BAB 2

DYNAMIC PROGRAMMING

2.1. Definisi Dynamic Programming

Dynamic programming adalah salah suatu algoritma yang digunakan untuk menemukan nilai optimal dari suatu permasalahan. Dalam dynamic

programming, pemecahan suatu masalah dibagi menjadi beberapa langkah (step) atau tahapan (stage) sedemikian hingga solusi dari sebuah persoalan dapat dipandang sebagai serangkaian keputusan yang saling berkaitan.

Dynamic Programming merupakan salah satu teknik perancangan algoritma yang dikembangkan untuk menyelesaikan permasalahan yang sangat kompleks dengan memecah permasalahan tersebut menjadi banyak sub-

permasalahan. Perbedaan utama Dynamic Programming dengan Divide and Conquer adalah pada Dynamic Programming kita menggunakan kembali hasil kalkulasi sub-masalah yang telah dilakukan sebelumnya.

Dari penjelasan di atas dapat kita rangkum keterangan sebagai berikut:

1. DP menyelesaikan masalah dengan memecah masalah menjadi sub- permasalahan.

2. Setiap solusi dari sub-permasalahan yang telah didapatkan disimpan untuk digunakan kembali jika terdapat sub-permasalahan yang sama. Teknik ini dikenal dengan nama memoization.

3. DP tidak harus menggunakan rekursif. Pemecahan sub-permasalahan juga dapat dilakukan dengan iterasi maupun kalkulasi sederhana.

Secara sederhana, teknik Dynamic Programming dapat dikatakan adalah sebuah teknik brute force yang pintar. Kita memecah-mecah masalah menjadi sub-masalah, dan menyelesaikan seluruh sub-masalah tersebut. Perbedaan utama dari Dynamic Programming dengan Divide & Conquer adalah Dynamic

Programming melakukan penyimpanan hasil penyelesaian sub-masalah sehingga kita tidak perlu menyelesaikan sub-masalah yang sama berulang kali.

Karakteristik Persoalan yang dimiliki oleh Program Dinamis:

 Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya dapat diambil satu keputusan.

 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. Jumlahnya bisa berhingga atau tak berhingga.

 Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.

 Ongkos (cost) pada suatu tahap meningkat secara teratur (steadily) dengan bertambahnya jumlah tahapan.

 Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut.

(6)

6 dilakukan pada tahap sebelumnya.

Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status pada tahap k + 1.

Prinsip optimalitas berlaku pada persoalan tersebut.

2.2. Kelebihan dan kekurangan Strategi Dynamic Programming Kelebihan:

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

 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 daripada teknik optimasi lain.

 Prosedur perhitungan dynamic programming juga memperkenankan bentuk analisis sensitivitas terdapat pada setiap variabel status (state) maupun pada variabel yang ada di masing-masing tahap keputusan (stage).

 Dynamic programming dapat menyesuaikan sistematika perhitungannya menurut ukuran masalah yang tidak selalu tetap dengan tetap melakukan perhitungan satu per satu secara lengkap dan menyeluruh.

Kelemahan:

 Penggunaan dynamic programming jika tidak dilakukan secara tepat, akan mengakibatkan ketidakefisienan biaya maupun waktu. Karena dalam menggunakan dynamic programming diperlukan banyak percobaan dan pengulangan proses

 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 pennigkatan variabel keadaan yang digunakan dalam perhitunngan pemrograman dinamis akan menambah beban memori komputer serta menambah lama waktu perhitungan.

(7)

7 2.3. MultiStage Graph Problem (permaslahan mencari lintasan

terpendek)

2.3.1. Definisi Lintasan Terpendek

Lintasan terperndek adalah lintasan minimum yang diperlukan untuk mencapai suatu tempat dari tempat tertentu. Lintasan minimum yang dimaksud dapat dicari dengan menggunakan graf. Graf yang digunakan adalah graf yang berbobot, yaitu graf yang setiap sisinya diberikan suatu nilai atau bobot. Dalam kasus ini, bobot yang dimaksud berupa jarak dan waktu kemacetan terjadi.

Pencarian lintasan terpendek sangat berguna untuk menentukan jalan tersingkat untuk menuju suatu tempat. Sehingga, kita dapat sampai tepat waktu menuju tempat tujuan. Hasil analisis berdasarkan bobot-bobot yang berbeda, menunjukkan bahwa semakin banyak bobot yang diberikan, maka semakin akurat pula data yang dihasilkan. Sehingga menghasilkan waktu yang efisien.

Untuk dapat memudahkan dalam menjelaskan Permasalahan Mencari Lintasan Terpendek dapat kita lihat pada contoh kasus dibawah ini

2.3.2. Contoh Kasus

Joe tinggal di new York dan akan pergi ke LA. Dia berencana menginap di rumah temannya dalam perjalanan tersebut. Joe punya teman di Columbus,

Nashville, Louisville, Kansas, Omaha, Dallas, San Antonio, dan Denver. Joe tahu setelah satu hari perjalanan dia akan mencapai Columbus, Nashville atau

Louisville. Setelah perjalanan 2 hari akan mencapai Kansas, Omaha, atau Dallas.

Setelah 3 hari perjalanan akan mencapai Denver atau San Antonio. Setelah 4 hari akan mencapai LA. Untuk meminimalkan jarak, kemana Joe harus menginap setiap malam dalam perjalanannya ?

Stage 2:

Colombus cost=550

(8)

8

Louisville cost=770

Stage 3:

Kansas = {New York, Columbus} cost =1230 Kansas = {New York, Nashville} cost =1480 Kansas = {New York, Louisville} cost =1280 Omaha = {New York, Columbus} cost =1340 Omaha = {New York,Nashville} cost =1660 Omaha = {New York,Louisville} cost =1470 Dallas = {New York, Columbus} cost = 1550 Dallas = {New York,Nashville} cost =1560 Dallas = {New York,Louisville} cost =1600 Stage 4:

Denver = {New York, Columbus, Kansas} cost Denver=1840 Denver = {New York, Columbus, Omaha} cost Denver=1880 Denver = {New York, Columbus, Dallas} cost Denver=2390 Denver = {New York, Nashville, Kansas} cost Denver=2090 Denver = {New York, Nashville, Omaha} cost Denver=2200 Denver = {New York, Nashville, Dallas} cost Denver=2350 Denver = {New York, Louisville, Kansas} cost Denver=1890 Denver = {New York, Louisville, Omaha} cost Denver=2010 Denver = {New York, Louisville, Dallas} cost Denver=2140 SA = {New York, Columbus, Kansas} cost SA=2020 SA = {New York, Columbus, Omaha} cost SA=2280 SA = {New York, Columbus, Dallas} cost SA=1870 SA = {New York, Nashville, Kansas} cost SA=2270 SA = {New York, Nashville, Omaha} cost SA=2600 SA = {New York, Nashville, Dallas} cost SA=1830 SA = {New York, Louisville, Kansas} cost SA=2070 SA = {New York, Louisville, Omaha} cost SA=2410 SA = {New York, Louisville, Dallas} cost SA=1870

Stage 5:

LA = {New York, Columbus, Kansas, Denver} cost LA=2870 LA = {New York, Columbus, Omaha, Denver} cost LA=2910 LA = {New York, Columbus, Dallas, Denver} cost LA=3420 LA = {New York, Nashville, Kansas, Denver} cost LA=3120 LA = {New York, Nashville, Omaha, Denver} cost LA=3230 LA = {New York, Nashville, Dallas, Denver} cost LA=3380 LA = {New York, Louisville, Kansas, Denver} cost LA=2920 LA = {New York, Louisville, Omaha, Denver} cost LA=3040 LA = {New York, Louisville, Dallas, Denver} cost LA=3170 LA = {New York, Columbus, Kansas, SA} cost LA=3370 LA = {New York, Columbus, Omaha, SA} cost LA=3630 LA = {New York, Columbus, Dallas, SA} cost LA=3220

(9)

9 LA = {New York, Nashville, Kansas, SA} cost LA=3620

LA = {New York, Nashville, Omaha, SA} cost LA=3950 LA = {New York, Nashville, Dallas, SA} cost LA=3180 LA = {New York, Louisville, Kansas, SA} cost LA=3420 LA = {New York, Louisville, Omaha, SA} cost LA=3760 LA = {New York, Louisville, Dallas, SA} cost LA=3220

Jadi jarak optimal yang diperoleh adalah 2870

2.4. Studi Kasus Dynamic Programming

2.4.1. Knapsack Problem (Pendekatan Dynamic Programming)

Penjelasan singkat tentang knapsack problem:

 Knapsack dapat diartikan sebagai karung, kantung, atau buntilan.

 Karung digunakan untuk memuat sesuatu.

 Dan tentunya tidak semua objek dapat ditampung di dalam karung.

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 0/1, yaitu suatu objek diambil seluruh bagiannya atau tidak sama sekali.

 Setiap objek mempunyai nilai keuntungan atau yang disebut dengan profit.

 Tujuan ingin mendapatkan profit yang maksimal. Untuk

mendapatkan profit maksimal Belum tentu menggunakan banyak objek yang masuk akan menguntungkan. Bisa saja hal yang sebaliknya yang terjadi.

Cara terbaik agar menguntungkan : bukan hanya dari hasilnya optimal tetapi juga banyaknya langkah yang dibutuhkan

2.4.2. Coin Change Problem

contoh dari studi kasus secara sederhana pada coin change problem adalah sebagai berikut:

Contoh Penjelasan:

 Pecahan uang logam Indonesia

 25

 50

 100

 200

 500

 1000

(10)

10

 Kembalian senilai 750 bisa didapat dari:

 1 keping 500, 1 keping 200, 1 keping 50

 1 keping 500, 2 keping 100, 1 keping 50

 7 keping 100, 1 keping 50

 5 keping 100, 5 keping 50

 Dan masih banyak lagi kombinasi lainnya

Misalkan di sebuah negara hanya ada uang logam C1, C2, dan C3 Maka terdapat 3 variasi coin change problem:

1. Apakah kembalian X bisa dibentuk dari pecahan-pecahan tersebut?

2. Ada berapa koin minimal untuk membentuk X?

3. Ada berapa kombinasi cara untuk membentuk nilai X?

Contoh Kasus 1:

Di sebuah negara hanya terdapat uang logam bernilai 3,5 dan 12.

1. Apakah kembalian 23 bisa dibentuk dari pecahan-pecahan tersebut?

2. Ada berapa koin minimal untuk membentuk nilai kembalian 23?

3. Ada berapa kombinasi cara untuk membentuk nilai 23?

 Model matematika :

 f(3) = true

 f(5) = true

 f(12) = true

 f(x) = false untuk x < 0

 f(n) = f(n-3) or f(n-r) or f(n-12)

 Metode Pull

 jika kita ingin tahu apakah X bisa dibentuk, kita perlu tahu X-3 atau X-5 atau X-12 bisa dibentuk

 Metode Push

 Jika nilai X bisa dibentuk, maka nilai X+3, X+5, X+12 dibentuk

Pseudocode contoh kasus 1:

iNilaiCari=23 iMaxCari=25 iJumKoin=3 koin[1]=3 koin[2]=5 koin[3]=12

for i=1 to iMaxCari do c[i]=”X”

endfor

for j=1 to iJumKoin do c[koin[j]]=”B”

Referensi

Dokumen terkait

Tulisan ini mengkaji tentang shortest path dengan Algoritma Dynamic Programming untuk mencari route terpendek dari sumber s ke tujuan t pada graph multi tahap ( Multistage

Diharapkan perusahaan dapat menggunakan Metode Dynamic Programming sebagai solusi optimal dalam penetuan jumlah produksi karena dengan menggunakan metode ini akan didapat

Pada penyelesaian persoalan dengan metode Dynamic Programming ini terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi

Pada tampilan diatas kita dapat melihat tampilan Subset Dynamic Programming yang menampilkan hasil waktu yang diperoleh pada saat running dan menampilkan jarak terpendek

Data yang digunakan untuk menganalisis algoritma Dynamic Programming adalah dengan mencari rute yang optimum pada graf rute antar node yang terdiri dari fase-fase seperti

Pada makalah ini dijelaskan penerapan sebuah solusi paralel dari metode sequential dynamic programming untuk memecahkan masalah 2D knapsack (cutting- stock) dimana metode ini

Pada penyelesaian persoalan dengan metode dynamic programming ini terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi

Algoritma Floyd-Warshall adalah sebuah algoritma pemrograman dinamis dengan metode melakukan pemecahan suatu masalah dengan memandang solusi yang dapat diperoleh sebagai suatu keputusan