Dynamic Program
Dynamic Program
1.3 Tujuan
1.4 Manfaat
Fibonacci Sequence adalah salah satu contoh paling sederhana dari Dynamic
Programm. Misalkan kita ingin menghitung nilai Fibonacci ke-n, kita bisa
menggunakan pendekatan top-down dengan memoization atau bottom-up dengan
tabulation.
Knapsack Problem adalah masalah optimasi di mana kita harus memilih item dengan
nilai maksimal tanpa melebihi kapasitas tas.
2.2 Koefisien Binomial
Kombinasi adalah cara memilih sejumlah objek dari suatu kumpulan tanpa memperhatikan
urutan. Artinya, dalam kombinasi, urutan pemilihan tidak penting. Contoh: Memilih 2 orang
dari 3 orang: A, B, dan C.
Pasangan AB dan BA dianggap sama dalam kombinasi (berbeda dengan permutasi yang
menganggap urutan penting).
Kombinasi dari n objek yang dipilih k objek ditulis sebagai: (nk)atauC(n,k) Dibaca: "n pilih k"
(n choose k)
Faktorial (n!) adalah hasil perkalian semua bilangan bulat positif dari 1 sampai n.
Rumus Koefisien Binomial: (n!)/(k!(n-k)!), di mana: n adalah total item dan k adalah
jumlah item yang dipilih. Contoh: 5! = 5 * 4 * 3 * 2 * 1 = 120
Susunan angka yang membentuk segitiga, dengan setiap angka adalah jumlah dari
dua angka di atasnya. Segitiga Pascal dapat digunakan untuk langsung melihat
koefisien binomial untuk berbagai nilai n dan k. Contoh:
a. Baris ke-2 segitiga Pascal adalah 1, 2, 1, yang sesuai dengan koefisien (x + y)²
= x² + 2xy + y²
b. Baris ke-3 segitiga Pascal adalah 1, 3, 3, 1, yang sesuai dengan koefisien (x +
y)³ = x³ + 3x²y + 3xy² + y³
Pendekatan faktorial biasa untuk menghitung koefisien binomial, yaitu menggunakan rumus
n! / (k! * (n-k)!), bisa menjadi kurang efisien dan rentan terhadap kesalahan perhitungan
saat n atau k bernilai besar. Ini karena faktorial (n!) tumbuh sangat cepat, bahkan dengan
nilai n yang relatif kecil, sehingga dapat menyebabkan masalah overflow atau underflow
dalam perhitungan. Selain itu, menghitung faktorial secara langsung dapat memakan waktu
dan sumber daya komputasi, terutama jika diperlukan untuk berbagai nilai n dan k.
Graf berarah (directed graph) adalah graf di mana setiap sisi memiliki arah yang jelas
dari satu simpul ke simpul lainnya. Dengan kata lain, jika ada sisi dari simpul A ke
simpul B, maka simpul B tidak dapat secara otomatis dijangkau dari simpul A. Graf
berarah dapat digunakan untuk merepresentasikan hubungan yang tidak simetris,
seperti jalan satu arah atau hubungan hierarki.
Penutupan transitif (transitive closure) dari graf berarah dengan n simpul adalah
matriks boolean n x n, di mana elemen (i, j) bernilai 1 jika ada lintasan dari simpul i
ke simpul j, dan bernilai 0 jika tidak ada lintasan. Dengan kata lain, penutupan
transitif memberikan informasi tentang keterjangkauan antara setiap pasangan
simpul dalam grafik.
Tujuan utama algoritma Warshall, yang juga dikenal sebagai algoritma Floyd-Warshall, adalah
untuk mencari jalur terpendek antara semua pasangan simpul (node) dalam sebuah graf
(graph). Algoritma ini tidak hanya mencari jalur terpendek dari satu titik awal ke semua titik
lain, tetapi juga mencari jalur terpendek dari setiap titik ke semua titik lain dalam graf
tersebut secara bersamaan
Jadi, jika sebelumnya tidak ada jalur langsung dari i ke j, tapi ternyata ada jalur dari i ke k dan
dari k ke j, maka kita tahu sekarang ada jalur dari i ke j secara transitif.
Perancangan algoritma dilakukan dengan pendekatan Dynamic Programming (DP), yaitu strategi
pemrograman yang menyimpan hasil submasalah agar tidak dihitung ulang. Dua algoritma yang
digunakan yaitu: Binomial Coefficient dan Algoritma Warshall.
Algoritma Warshall digunakan untuk menghitung transitive closure dari sebuah graf,
yaitu mencari apakah ada jalur langsung atau tidak langsung antara dua simpul. Matriks awal
diupdate secara iteratif jika ada jalur penghubung antara dua simpul melalui simpul ketiga.
Binomial Coefficient
Input: n = 5, k = 2
Output: 10
Interpretasi: Kombinasi dari 5 elemen diambil 2.
Algoritma Warshall
Input Matriks:
[1, 1, 0]
[0, 1, 1]
[0, 0, 1]
Output setelah Warshall:
[1, 1, 1]
[0, 1, 1]
[0, 0, 1]
Interpretasi: Simpul ke-0 kini terhubung secara tidak langsung ke simpul ke-2.
BAB IV: HASIL DAN PEMBAHASAN
BAB V: PENUTUP
5.1 Kesimpulan
Koefisien binomial dan transitive closure dapat dihitung dengan efisien menggunakan DP
5.2 Saran
Perlu eksplorasi penerapan DP pada topik lain (misal AI atau machine learning)
DAFTAR PUSTAKA
https://www.codepolitan.com/blog/apa-itu-dynamic-programmingpengertian-contoh-problem-dan-
solusi/
https://id.wikipedia.org/wiki/Pemrograman_dinamis
https://primakara.ac.id/blog/info-teknologi/algoritma
https://study.com/academy/lesson/binomial-coefficient-formula-examples.html
https://informatika.stei.itb.ac.id
https://ejurnal.stmik-budidarma.ac.id/index.php/jurikom/article/download/76/52