Subset Sum (Alt Küme Toplamı) problemi, bir sayı dizisinden, toplamı belirli bir hedef değere eşit olan bir alt küme bulunup bulunamayacağını belirleyen bir problemdir. Bu, NP-Complete bir problemdir ve geri izleme (backtracking) algoritması, dinamik programlama (dynamic programming) veya brute force yaklaşımları ile çözülebilir.
Subset Sum Problemi (Alt Küme Toplamı) algoritmasının farklı programlama dillerindeki uygulamaları aşağıda verilmiştir. Her örnek, algoritmanın temel akışını açık şekilde gösterecek biçimde sunulmuştur.
1function findSubsetSum(arr: number[], targetSum: number): number[][] {2 const result: number[][] = [];3 const currentSubset: number[] = [];4 const sortedArr = [...arr].sort((a, b) => a - b);5 6 function backtrack(start: number, currentSum: number) {7 if (currentSum === targetSum) {8 result.push([...currentSubset]);9 return;10 }11 12 if (currentSum > targetSum) {13 return;14 }15 16 for (let i = start; i < sortedArr.length; i++) {17 if (i > start && sortedArr[i] === sortedArr[i - 1]) {18 continue;19 }20 21 currentSubset.push(sortedArr[i]);22 backtrack(i + 1, currentSum + sortedArr[i]);23 currentSubset.pop();24 }25 }26 27 backtrack(0, 0);28 return result;29}Subset Sum problemini test etmek için bir sayı dizisi ve hedef toplamı girin. Algoritma, dizideki sayılardan oluşan ve toplamı hedef değere eşit olan tüm olası alt kümeleri bulacaktır.
Not: Geri izleme tüm olası alt kümeleri arar; büyük veri setlerinde çalışma süresi hızlı artabilir.
En İyi Durum: O(2^n)
Ortalama Durum: O(2^n)
En Kötü Durum: O(2^n)
O(n) - Çalışma süresi, giriş boyutu ile doğrusal olarak artar.
Subset Sum Problemi (Alt Küme Toplamı) ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: