REVIEW ALGORITMA
(Algoritma Dynamic Programming)
DISUSUN OLEH :
YULIANTI
1329041056
PTIK 03 2013
Penyusun
1
DAFTAR ISI
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.
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.
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.
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)
5
Gambar 1 : Garph multitahap
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.
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.
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:
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:
Untuk ketiga fungsi tersebut, ketika ketiga fungsi tersebut dijalankan untuk n
yang sama, akan tampak perbedaan waktu eksekusinya.
10
BAB III
PENUTUP
A. Kesimpulan
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