Post

🔢Subset Sum Problem

🔢Subset Sum Problem

Subset Sum Problem adalah salah satu masalah fundamental dalam ilmu komputer yang berkaitan dengan teori kompleksitas dan kriptografi. Definisi Masalah

Diberikan himpunan bilangan bulat tidak kosong dan sebuah angka target m, carilah subset (subhimpunan) yang jumlahnya sama dengan m.

Contoh Sederhana

  • Input: Himpunan = {3, 34, 4, 12, 5, 2}, Target = 9
  • Output: Ya, ada subset {4, 5} yang jumlahnya = 9

🔄 Variasi Masalah

🔢 Subset Sum dengan Elemen Negatif Deskripsi

Masalah klasik biasanya mengasumsikan semua elemen positif, namun dalam variasi ini elemen bisa negatif. Contoh

  • S = {-7, -3, -2, 5, 8}, target = 0
  • Solusi: {-3, -2, 5} = 0

Konsekuensi

  • Pendekatan Dynamic Programming standar tidak cukup
  • Indeks array tidak bisa negatif
  • Memerlukan penyesuaian implementasi

🧮 Counting Subsets Deskripsi

Menghitung berapa banyak subset yang memenuhi jumlah target, bukan hanya mencari apakah ada.

Contoh

  • S = {2, 3, 5, 6, 8, 10}, sum = 10
  • Pertanyaan: Berapa subset yang jumlahnya 10?
  • Solusi dengan DP dp[i][j] = banyaknya subset dari elemen 0..i-1 yang totalnya j Rumus: dp[i][j] = dp[i-1][j] + dp[i-1][j - arr[i-1]]

🎯 Closest Subset Sum Deskripsi

Jika tidak ada subset dengan jumlah tepat, cari subset dengan jumlah terdekat dengan target.

Contoh

  • S = {1, 3, 4, 8}, target = 10
  • Kemungkinan: {1,3,4}=8, {3,8}=11, {1,8}=9
  • Terdekat ke 10: 9 dan 11

Metode Penyelesaian

  • Backtracking
  • Dynamic Programming
  • Meet-in-the-middle

🎒 Hubungan dengan 0/1 Knapsack Problem

  • Sama-sama memilih subset dari elemen
  • Sama-sama menggunakan Dynamic Programming
  • Sama-sama memiliki batasan kapasitas/target
This post is licensed under CC BY 4.0 by the author.