Anda di halaman 1dari 15

LOGIKA DAN ALGORITMA

REVIEW ALGORITMA
(Algoritma Dynamic Programming)

DISUSUN OLEH :

YULIANTI
1329041056
PTIK 03 2013

PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER (S1)


JURUSAN PENDIDIKAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MAKASSAR
TAHUN 2015
KATA PENGANTAR

Puji syukur penyusun panjatkan kehadirat Allah SWT. Tuhan semesta


alam yang senantiasa melapangkan jiwa, memberikan petunjuk dan ketenangan
hati sehingga penyusun dapat menyelesaikan makalah ini.
Makalah ini berjudul Dynamic Programming sebagai Tugas Pertama
dalam Mata Kuliah Logika dan Algoritma. Diharapkan dengan adanya konsep
yang jelas, akan mempermudah pembaca untuk menggali, memahami dan
mengembangkan kemampuannya dalam bidang programming.
Penyusun menyadari bahwa dalam penyusunan makalah ini masih jauh
dari sempurna dan harus dikembangkan lebih lanjut untuk bisa memberikan
kontribusi yang lebih bermanfaat bagi kemajuan Dunia Teknologi khususnya
Informatika dan Komputer
Akhirnya, semoga makalah ini dapat menambah wawasan bagi para
pembaca agar insyaAllah dapat mengembangkan ilmunya dengan lebih baik.

Makassar, Juli 2015

Penyusun

1
DAFTAR ISI

KATA PENGANTAR ......................................................................................... i


DAFTAR ISI....................................................................................................... ii
BAB I PENDAHULUAN................................................................................... 1
A. Latar Belakang........................................................................................ 1
B. Rumusan Masalah................................................................................... 1
C. Tujuan...................................................................................................... 1
BAB II PEMBAHASAN.................................................................................... 2
A. Algaoritma............................................................................................... 2
1. Definisi dan Sifat Algoritma...............................................................2
2. Efisiensi Algoritma ............................................................................2

B. Algoritma Dynamic Programming..........................................................3


1. Pengertian Dynamic Programming ...................................................3
2. Model Dynamic Programming ..........................................................4
3. Karakteristik dan Konsep Dasar Dynamic Programming .................7

BAB III PENUTUP............................................................................................ 12


Kesimpulan ........................................................................................................12
DAFTAR PUSTAKA

2
BAB I
PENDAHULUAN

A. Latar Belakang
Algoritma adalah hal yang mendasar dalam Dunia Programming.
Algoritma merupakan serangkaian kata atau instruksi untuk mendapatkan
hasil khusus dalam beberapa langkah berhingga. Algoritma diartikan sebagai
langkah-langkah penyelesaian masalah secara sistematis, Sebuah algoritma
tidak hanya harus benar tetapi juga harus efisien.
Dalam menganalisis suatu algoritma yang menjadi perhatian utama adalah
berapa waktu tempuh dan berapa ruang dalam memori yang dibutuhkan untuk
menjalankan algoritma tersebut. Memori yang dibutuhkan dalam
pemrograman berhubungan dengan perangkat keras komputer. Dengan
semakin pesatnya perkembangan teknologi saat ini maka efisiensi memori
bukanlah masalah yang serius. Oleh karena itu waktu proses merupakan fektor
yang lebih penting dibanding memori.
Makalah ini akan membahas tentang Algoritma Dynamic Programming

B. Rumusan Masalah
Adapun rumusan masalah dari makalah ini, yaitu sebagai berikut :
1. Bagaimana Definisi dan Sifat Algoritma ?
2. Apa Pengertian Dynamic Programming ?
3. Bagaimana Model Dynamic Programming ?
4. Bagaimana Karakteristik dan Konsep Dasar Dynamic Programming ?

C. Tujuan
Adapun tujuan yang ingin dicapai dalam pembuatan makalah ini yaitu agar
Mahasiswa dapat mengetahui,
1. Definisi Algoritma, Algoritma Dynamic Programming
2. Model Dynamic Programming;
3. Karakteristik dan Konsep Algoritma Dynamic Programming;

BAB II
PEMBAHASAN

A. Algoritma
1. Definisi dan Sifat Algoritma

1
Algoritma merupakan serangkaian kata atau instruksi untuk mendapatkan
hasil khusus dalam beberapa langkah berhingga (Chartrand & Oellerman, 1993).
Algoritma juga bisa diartikan sebagai langkah-langkah penyelesaian masalah
secara sistematis. Sebuah algoritma tidak hanya harus benar tetapi juga harus
efisien (Munir, 2005).
Sifat-sifat algoritma meliputi hal-hal sebagai berikut:
1) jelas, yaitu setiap langkah pada setiap algoritma harus dinyatakan dengan
jelas, tidak bermakna ganda dan ditetapkan dengan cermat;
2) logis (urut), yaitu algoritma dibuat berdasarkan aturan yang tetap,
berdasarkan pada alur berfikirnya;
3) terhingga, yaitu sebuah algoritma harus berhenti setelah melakukan satu
langkah atau lebih dalam suatu interval waktu tertentu. Tanpa sifat ini,
sebuah algoritma tidak bisa diimplementasikan oleh mannusia maupun
mesin;
4) menyelesaikan masalah, yaitu dengan input tertentu suatu algoritma akan
menyelesaikan masalah dalam kelasnya;
5) efektif, yaitu sebuah algoritma harus menegaskan tindakan sederhana yang
dapat dilakukan secara efektif. Sifat ini menjamin bahwa setiap langkah
pada suatu algoritma secara nyata dapat dijalankan.

2. Efisiensi Algoritma
Dalam menganalisis suatu algoritma yang menjadi perhatian utama adalah
berapa waktu tempuh dan berapa ruang dalam memori yang dibutuhkan untuk
menjalankan algoritma tersebut. Meskipun suatu algoritma memberikan hasil
yang mendekati optimal tetapi waktu yang dibutuhkan sangat lama maka
algoritma tersebut biasanya jarang dipakai.

Beberapa keadaan dalam kompleksitas waktu adalah:


a) best case (suatu keadaan terbaik), yaitu waktu minimum yang dibutuhkan
untuk menjalankan algoritma;
b) worst case (suatu keadaan terburuk), yaitu waktu maksimum yang
dibutuhkan untuk menjalankan algoritma;
c) average case yaitu suatu keadaan rata-rata dari waktu untuk beberapa nilai
masukan.

2
Kompleksitas waktu (T(n)) :
a) diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalanan
algoritma sebagai fungsi dari ukuran masukan n;
b) dihitung dari jumlah operasi dasar yang dilakukan di dalam algoritma
sebaga fungsi ukuran masukan (n).

Ada aspek lain yang berhubungan dengan efisiensi algoritma yaitu memori
yang digunakan. Memori yang dibutuhkan dalam pemrograman berhubungan
dengan perangkat keras komputer. Dengan semakin pesatnya perkembangan
teknologi saat ini maka efisiensi memori bukanlah masalah yang serius. Oleh
karena itu waktu proses merupakan fektor yang lebih penting dibanding memori.

B. Algoritma Dynamic Programming


1. Pengertian Dynamic Programming
Dynamic Programming 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.
Program Dinamis (Dynamic Programming) adalah metode pemecahan
masalah dengan cara menguraikan solusi menjadi sekumpulan (stage),
sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian
keputusan yang saling berkaitan.
Dynamic Programming adalah prosedur matematis yang terutama
dirancang untuk memperbaiki efisiensi perhitungan masalah pemrograman
matematis tertentu dengan menguraikannya menjadi bagian masalah yang lebih
kecil. Dynamic programming pada umumnya menjawab masalah dalam tahap-
tahap dengan setiap tahap meliputi tepat satu variable optimasi. Perhitungan
ditahap yang berbeda-beda dihubungkan melalui perhitungan rekursi dengan cara
yang menghasilkan pemecahan optimal bagi seluruh masalah.
Istilah Program Dinamis muncul karena kecenderungan penggunaan
metode ini dalam menganalisa dan mendokumentasikan hasil perhitungan pada
setiap tahapnya melibatkan pengambilan keputusan yang berkaitan dengan
waktu. Tetapi, situasi lain dimana waktu bukan merupakan factor juga

3
dipecahakan oleh dynamic programming dimana prosedur itu pada umumnya
menentukan pemecahan dalam tahap-tahap.
Teori utama dalam dynamic programming adalah prinsip optimalitas.
Prinsip itu pada dasarnya menentukan bagaimana suatu masalah yang diuraikan
dengan benar dapat dijawab dalam tahap-tahap.
Pemecahan masalah dengan menggunakan dynamic programming
mempunyai empat tahapan, yaitu :
a. Memecah permasalahan asli menjadi bagian permasalahan yang juga disebut
sebagai tahapan dengan aturan keputusan ditiap-tiap tahapan.
b. Memecahkan tahapan terakhir dari permasalahan dengan semua kondisi dan
keadaan yang memungkinkan.
c. Bekerja mundur dari tahapan terakhir dan memecahkan tiap tahap. Hal ini
dikerjakan dengan mencari keputusan optimal dari tahap tersebut sampai
dengan tahap terakhir.
d. Solusi optimal dari permasalahan didapatkan jika semua tahap sudah
terpecahkan.

2. Model Dynamic Programming


Dalam dynamic programming perhitungan dilakukan dalam tahap-tahap
dengan memerincikan masalah menjadi beberapa bagian masalah. Setiap bagian
masalah kemudian dipertimbangkan secara terpisah dengan tujuan untuk
mengurangi jumlah dan kerumitan perhitungan. Tetapi karena semua maslah
salaing bergantung, harus dipikirkan sebuah prosedur untuk menghubungkan
perhitungan dengan cara yang menjamin bahwa pemecahan yang layak untuk
tiap-tiap tahap juga layak untuk keseluruhan masalah.
Sebuah tahap dalam dynamic programming didefinisikan sebagai bagian
dari masalah yang memiliki beberapa alternative yang saling menggantikan yang
darinya alternatif terbaik akan dipilih. Gagasan dasar dynamic programming
adalah secara praktis menghilangkan pengaruh saling ketergantungan antar
tahap-tahap dengan menghubungkan definisi suatu keadaan dengan setiap tahap.
Suatu keadaan biasanya didefinisikan untuk menunjukkan suatu batasan yang
mengikat semua tahap secara bersama-sama.
Semua keputusan dimasa yang akan datang dipilih secara optimal tanpa
melihat keputusan yang diambil sebelumnya. Sifat khusus ini merupakan prinsip

4
optimalitas yang merupakan dasar bagi keabsahan perhitungan dynamic
programming.
Ada 2 (dua) Pendekatan pada Program dinamis, yaitu :
1. Program Dinamis Maju ( forward atau up-down)
2. Program Dinamis Mundur (Bacward atau button-up)

Misalkan x1,x2, ., xn menyaatakan peubah (variable) keputusan yang


dibuat masing-masing untuk tahap 1,2,, n. Maka ,
1. 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 .
2. Program dinamis mundur. Program dinamis bergerak mulai dari tahap
n, terus mundur ke tahap n-1, n-2, dan seterusnya sampai atahap 1.
Runtunan peubah keputusan adalah xn, xn-1, , x1.

Dengan demikian, Prinsip optimalitas pada program dinamis maju adalah


ongkos pada tahap k +1 = (ongkos yang dihasilkan pada tahap k) + (ongkos
dari tahap k ke tahap k + 1), k = 1, 2, , n 1

Sedangkan prinsip optimalitas pada program dinamis mundur adalah ongkos


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

Pada prinsipnya Program Dinamis berdasarkan pada Graf multitahap


(multistage graph). Tiap simpul didalam garaf tersebut menyatakan status,
sedanagkan V1,V2, menyatakan tahap.

5
Gambar 1 : Garph multitahap

Pada Persoalan Graph Multitaphap dikaitkan dengan program


dinamis, dikenal :
1.Tahap (k) adalah proses memilih simpul tujuan berikutnya (Gambar
1, ada 5 tahap).
2. Status (s) yang berhubungan dengan masing-masing tahap adalah
simpul-simpul di dalam garaf.

Relasi rekurens berikut menyatakan lintasan terpendek dari status s ke


x4 pada tahap k :

Tujuan Program Dinamis Maju mendapatkan dengan cara

mencari terlebih dahulu.

6
3. Karakteristik dan Konsep Dasar Dynamic Programming
Dynamic Programming memiliki beberapa karakteristik diantaranya :
Permasalahan dibagia menjadi stage, dengan keputusan diperlukan
pada tiap stage.
Tiap stage punya nomor stage berhubungan dengan awal dari stage.
Hasil dari setiap stage ditransformasikan pada stage yang lainnya.
Prosedur penyelesaiannya dirancang untuk mendapatkan hasil yang
optimal.
Hasil optimal dari suatu stage tidak berhubungan dengan stage
sebelumnya.
Prosedur penyelesaiannya diawali dari stage terakhir.

Konsep dasar dalam dynamic programming ayaitu :


Dekomposisi
Persoalan dynamic programming dapat dipecah-pecah menjadi
subpersoalan atau tahapan ayang lebih kecil dan berurutan. Setiap
tahap disebut juga sebagai titik keputusan. Setiap keputusan yang
dibuat pada suatu tahap akan mempengaruhi keputusan-keputusan
pada atahap berikutnya.
Status
Status adalah kondisi awal dan kondisi akhir pada setiap tahap,
dimana pada atahap tersebut keputusan dibuat. Status akhir pada
sebuah tahap tergantung keadaan status awal dan keputusan ayang
dibuat pada tahap yang bersangkutan. Status akhir pada suatu tahap
merupakan input bagi tahap berikutnya.
Variable Keputusan dan Hasil
Keputusan yang dibuat pada setiap atahap merupakan keputusan yang
berorientasi kepada return yang diakibatkannya, tingkat maksimal
atau minimal.
Fungsi Transisi
Fungsi transisi menjelaskan secara pasti bagaimana tahap-tahap saling
berhubungan. Fungsi ini berbentuk fungsi hubungan antar status pada
setiap tahap yang berurutan.

7
Optimasi Tahap
Optimasi tahap dalam dynamic programming adalah menentukan
keputusan optimal pada setiap tahap dari bebagai kemungkinan nilai
status inputnya.
Fungsi Rekursif
Fungsi rekursif biasanya digunakan pada berbagai program computer,
dimana nilai sebuah variable pada fungsi itu merupakan nilai
kumulatif dari nilai variable tersebut pada tahap sebelumnya.

Dynamic Programming (DP) merupakan salah satu teknik perancangan


algoritma yang dikembangkan untuk menyelesaikan permasalahan yang sangat
kompleks dengan memecah permasalahan tersebut menjadi banyak sub-
permasalahan. Perbedaan utama DP dengan Divide and Conquer (D&C) adalah
pada DP kita menggunakan kembali Perbedaan utama dari DP dengan D&C
adalah DP melakukan penyimpanan hasil penyelesaian sub-masalah sehingga
kita tidak perlu menyelesaikan sub-masalah yang sama berulang kali.

Contoh :
Perbedaan Dynamic programming dan Divide and Conquer (D&C) dalam
perhitungan bilangan fibonacci. Algoritma untuk menyelesaikan perhitungan
fibonacci secara naif adalah seperti berikut:

8
Algoritma fibonacci sederhana seperti di atas dapat dikatakan sebagai algoritma
D&C, karena kita membagikan perhitungan fibonacci ke dua fungsi fibonacci,
sampai didapatkan nilai hasil terkecilnya. Pemanggilan fungsi fibonacci di
atas dapat digambarkan seperti berikut:

Pemanggilan Fungsi Fibonacci

Perhatikan bagaimana f(n2) dan f(n3) dikalkulasikan sebanyak dua

kali, dan semakin kita masuk ke dalam pohon pemanggilan, kita akan melihat
semakin banyak fungsi-fungsi yang dipanggil berkali-kali. Pendekatan DP
menghindari kalkulasi fungsi yang berulang kali seperti ini dengan melakukan
memoization, yaitu menyimpan hasil kalkulasi fungsi tersebut dan menggunakan
nilai yang disimpan ketika perhitungan yang sama dibutuhkan kembali. Dengan
menyimpan hasil kalkulasi seperti ini, tentunya jumlah total langkah
perhitungan yang harus dilakukan menjadi berkurang.
Misalnya, kita dapat menyimpan hasil kalkulasi dari fungsi fibonacci tersebut
pada sebuah dictionary, seperti berikut:

9
Dengan menyimpan hasil kalkulasi dari fungsi yang telah ada, maka proses
pemanggilan fungsi akan menjadi seperti berikut:

Pemanggilan Fungsi Fibonacci Dynamic Programming


Seperti yang dapat dilihat, pohon pemanggilan fungsi terpotong setengahnya!
Tentunya perhitungan fibonacci akan menjadi sangat efisien dengan
menggunakan fungsi yang baru ini.
Pendekatan lain dalam menghitung fibonacci lagi, yang masih adalah DP, yaitu
dengan menghitung nilai fibonacci dari bawah pohon (pada kode sebelumnya
kita melakukan perhitungan dari atas pohon):

Untuk ketiga fungsi tersebut, ketika ketiga fungsi tersebut dijalankan untuk n
yang sama, akan tampak perbedaan waktu eksekusinya.

10
BAB III
PENUTUP

A. Kesimpulan

1. Algoritma bisa diartikan sebagai langkah-langkah penyelesaian masalah


secara sistematis. Program Dinamis (Dynamic Programming) adalah
metode pemecahan masalah dengan cara menguraikan solusi menjadi
sekumpulan (stage), sedemikian sehingga solusi dari persoalan dapat
dipandang dari serangkaian keputusan yang saling berkaitan.

2. DP (Dynamic Programming) menyelesaikan masalah dengan


memecah masalah menjadi sub-permasalahan.

3. Setiap solusi dari sub-permasalahan yang telah didapatkan


disimpan untuk digunakan kembali jika terdapat sub-
permasalahan yang sama. Teknik ini dikenal dengan nama
memoization.

11
DAFTAR PUSTAKA

http://www.academia.edu/12301059/Penentuan_Rute_Terpendek_Menuju_Kampus_Men
ggunakan_Algoritma_Dynamic_Programming

https://ekosuwono.wordpress.com/2010/01/13/dynamic-programming/#more-186

http://bertzzie.com/knowledge/analisis-algoritma/DynamicProgramming.html

http://yulianus-putra.blogspot.com/2012/03/sejarah-dynamic-programming.html

http://www.google.com/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=4&cad=rja&uact=8&ved=0CD
gQFjAD&url=http%3A%2F%2Fthesis.binus.ac.id%2FAsli
%2FBab2%2F2009-2-00442-TI%2520BAB%25202.pdf&ei=vx2cVdzjE5a3u-
QSc1a7wAQ&usg=-AFQjCNFX7ZQHyASxbBj1tsmwn6rtdvbBog&sig2=-
DoRkx4dnXMx5qTDnZlyHDg

Anda mungkin juga menyukai