Anda di halaman 1dari 4

DYNAMIC PROGRAM

1. Algoritma Program Dinamis


Program dinamik adalah salah satu teknik matematika yang digunakan untuk
mengoptimalkan proses pengambilan keputusan secara bertahap ganda. Inti dari
teknik ini ialah membagi satu persoalan atas beberapa bagian persoalan (tahap),
kemudian memecahkan tiap tahap sampai seluruh persoalan telah terpecahkan.
Penggunanan program dinamik untuk mencari bobot minimum dari suatu pohon
merentang merupkan salah satu alternatif selain penggunaan algoritma greedy.
Prosedur pemecahan persoalan dlam program dinamik dilakukan secara
rekursif. Ini berarti bahwa setiap kali diambil keputusan, diperhatikan keadaan yang
dihasilkan oleh keputusan sebelumnya.
Program Dinamik (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. Karakteristik penyelesaian masalah
dengan algoritma program Dinamik :
1. terdapat sejumlah berhingga pilihan yang mungkin
2. solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya.
3. kita menggunakan persyaratan optimasi dankendala untuk membatasi sejumlah
pilihan yangharus dipertimbangkan pada satu tahap
Program dinamis (dynamic programming) yang ditemukan oleh Richard
Bellman ada tahun 1953 merupakan suatu metode penyelesaian masalah di mana
solusi persoalan dapat dipandang sebagai serangkaian keputusan yang saling
berkaitan. Program dinamis merupakan salah satu metode yang mangkus yang
biasanya digunakan untuk menyederhanakan persoalanpersoalan rekursif.
Seperti halnya algoritma greedy, program dinamis juga merupakan suatu
ancangan untuk menyelesaikan masalah optimasi. Hanya saja, pada metode greedy
hanya satu rangkaian keputusan yang pernah dihasilkan,sedangkan dengan program
dinamis lebih dari satu rangkaian keputusan.
Program dinamis fokus pada bagian permasalahan yang tumpang-tindih
(overlapping subproblems).Rangkaian keputusan dibuat dengan prinsip optimalitas
(optimal substructure), di mana solusi optimal dari bagian solusi permasalahan bisa
digunakan untuk menemukan solusi optimal untuk masalah secara keseluruhan.
Penerapan program dinamis ini sangat luas. Di antaranya, yang sederhana,
adalah untuk menghitung angka Fibonacci dan koefisien binomial.
2. PROGRAM DINAMIS UNTUK MENGHITUNG KOEFISIEN BINOMIAL
2.1 Koefisien Binomial
Dalam matematika, terutama kombinatorial, koefisien binomial dari suatu
bilangan asli n dan bilangan integer k adalah jumlah kombinasi yang ada.Dengan kata
lain, jika diberikan n buah benda, jumlah cara memilih k buah bola yang berbeda
sama dengankoefisien binomial.
Koefisien binomial didefinisikan sebagai berikut.

1 | Algoritma Pemrograman 2C

untuk n k 0 dan

untuk k < 0 atau k > n.

Untuk nilai n dan k non-negatif, diperoleh

Koefisien binomial dituliskan dengan notasi


Notasi ini diperkenalkan oleh
Albert von Ettinghausen pada tahun 1826, meskipun bilangan ini telah dikenal
berabad-abad sebelumnya. Notasi lainnya yang biasa digunakan seperti C(n, k), nCk
atau Cn k (C untuk combination).
2.2 Penerapan Program Dinamis
Dari definisi koefisien binomial, kita bisa membuat suatu algoritma seperti berikut.

2 | Algoritma Pemrograman 2C

Kompleksitas algoritma di atas adalah


T(n,k) = T(n 1, k 1) + T(n k, k) atau T(n,k) = O(nk)
Dengan algoritma di atas, banyak komputasi yang sama yang dilakukan
berulang-ulang. Sebagai contoh,perhitungan C(5,3) digambarkan dengan pohon
seperti berikut.

Seperti halnya pada penghitungan angka Fibonacci,kita bisa memperbaiki algoritma


di atas dengan program dinamis. Prinsip yang dipakai yaitu:
a. Buat matriks berukuran (n+1) (k+1) untuk menyimpan hasil perhitungan.
b. Inisialisasi matriks dengan terkecil dari instansiasi persoalan
c. Set elemen matriks (tentunya dengan urutan yang tepat) menggunakan hasil yang
telahdihitung sebelumnya. Setiap elemen itu tepat dihitung satu kali saja.
d. Nilai akhir hasil perhitungan adalah solusi dari persoalan.
e. Di sini kita mengimplementasikan iteratif,bukan rekursif.
Algoritma Floyd-Warshall
Algoritma Floyd-Warshall adalah salah satu varian dari pemrograman dinamis,
yaitu suatu metode yang melakukan pemecahan masalah dengan memandang solusi
yang akan diperoleh sebagai suatu keputusan yang saling terkait. Artinya solusi-solusi
tersebut dibentuk dari solusi yang berasal dari tahap sebelumnya dan ada
kemungkinan solusi lebih dari satu.
Hal yang membedakan pencarian solusi menggunakan pemrograman dinamis
dengan algoritma greedy adalah bahwa keputusan yang diambil pada tiap tahap pada
algoritma greedy hanya berdasarkan pada informasi yang terbatas sehingga nilai
optimum yang diperoleh pada saat itu Jadi pada algoritma greedy, kita tidak
memikirkan konsekuensi yang akan terjadi seandainya kita memilih suatu keputusan
pada suatu tahap.
Floyd-Warshall Algoritma adalah algoritma shorter path lain yang lebih
singkat dan akan bekerja dengan jalan yang ditempuh sangat negatif (tetapi tidak
putaran negatif). " tetapi ini akan mengambil banyak waktu daripada dijkstra'
algoritma jalan sempit paling pendek" kata Yasith Vidanaarachchi . " Namun, dalam
praktiknya Algoritma ini lebih cepat karena singkatnya dan kesederhanaannya".
Dengan kata lain ini jalan yang sangat efisien, dalam memecahkan masalah jalan yang
paling
singkat.

3 | Algoritma Pemrograman 2C

Algoritma warshal merupakan algoritma yang mengambil jarak minimal dari suatu
titik ketitik lainnya.pada algoritma ini menerapkan suatu algoritma dinamis yang
menyebabkan akan mengambil jarak lintasan terpendek secara benar.
contoh apabila kita berada dari suatu tempat di titik A akan menuju tempat yang
berada di titik E di mana kita harus melewati minimal satu titik titik antara b,c,d dan
f.

apabila kita memakai floyd warshall maka kita hrus mentotalkan jumlah jaraknya.
seperti
a-b-d-e = 10+15+10 =35 km
a-d-e = 20+5=25 km
a-c-e = 30+25=55km
a-f-e = 20+25=45 km
dll,,
apabila semua nya telah terjumlah, maka jarak minimalnya ada d lintasan a-d-e
dengan 25 km,,sesuai dengan algoritma floyd warshall.
( diambil dari : http://mathworld.wolfram.com/Floyd-WarshallAlgorithm.html)

4 | Algoritma Pemrograman 2C

Anda mungkin juga menyukai