Coconote
AI notes
AI voice & video notes
Export note
Try for free
Pemrograman Dinamis dan Algoritma
Aug 20, 2024
Catatan Kuliah: Pemrograman Dinamis
Pendahuluan
Assalamualaikum warahmatullahi wabarakatuh
Materi: Strategi Algoritmik dan Pemrograman
Fokus: Berpikir Komputasional dan Pemrograman Dinamis
Pemrograman Dinamis (Dynamic Programming)
Digunakan untuk menyelesaikan permasalahan optimasi (mencari nilai terbesar atau terkecil).
Mempertimbangkan beberapa kemungkinan langkah yang dapat mempengaruhi langkah selanjutnya.
Teknik greedy tidak selalu menghasilkan solusi optimal.
Dua Unsur Utama dalam DP:
Optimasi:
Mencari nilai terkecil atau terbesar melalui pilihan yang tepat.
Perbedaan: Pilihan terbaik saat ini tidak selalu pilihan terbaik secara keseluruhan.
Sub-Permasalahan:
Nilai optimal biasanya merupakan kombinasi dari sub-permasalahan yang lebih kecil.
Sub-permasalahan sering memiliki overlap.
Menghindari perulangan dengan teknik memoisasi (menyimpan hasil perhitungan).
Contoh Kasus: Memanen Cabai
Agria memanen cabai dalam bentuk kotak-kotak.
Harus memilih jalur untuk memaksimalkan hasil panen.
Agria mulai dari kolom kiri dan berhenti di kolom kanan, dapat bergerak ke kanan atau ke bawah.
Analisis Permasalahan:
Pendekatan greedy tidak optimal.
Contoh: Memulai dari nilai tertinggi tidak menghasilkan hasil terbaik.
Metode coba semua kemungkinan akan terlalu banyak dan tidak efisien.
Pendekatan DP untuk Memecahkan Masalah:
Menyatakan solusi sebagai kombinasi dari supermasalah yang lebih kecil.
Menggunakan hasil dari kotak atas atau sebelah kiri untuk menghitung nilai maksimal di kotak saat ini.
Menghindari perhitungan yang sama dengan memoisasi.
Tabel Memoisasi:
Menghitung nilai maksimal hingga kotak tertentu dengan tabel yang menyimpan hasil.
Contoh hasil tabel memoisasi untuk tanaman cabai:
Kotak paling kiri atas: 0
Setiap langkah menghitung nilai maksimal dari atas dan kiri.
Nilai terbesar pada tabel menunjukkan jumlah cabai terbanyak yang bisa dikumpulkan.
Aktivitas: Permainan Angka
Ani dan Budi bermain angka:
Budi mengubah bilangan
n
menjadi 1 dengan langkah-langkah tertentu.
Pertanyaan: Tentukan langkah minimum untuk
N = 25
.
Pertanyaan Refleksi:
Dapatkah permasalahan penukaran uang diselesaikan dengan teknik pemrograman dinamis?
Contoh permasalahan lain dalam kehidupan yang dapat diselesaikan dengan teknik DP?
Perbedaan antara algoritma greedy dan pemrograman dinamis? Kelebihan dan kekurangan masing-masing?
Penutup
Materi pemrograman dinamis dalam berpikir komputasional.
Terima kasih, semoga bermanfaat.
Selamat belajar dan tetap semangat!
📄
Full transcript