Bilgisayar bilimlerinde, **alt küme toplamı problemi** karmaşıklık kuramında ve kriptografide önemli yeri olan bir problemdir.

Karmaşıklık kuramında, problemin tanımı ve açıklaması basit ve anlaşılır olduğundan NP-Complete sınıfında yer alan problemleri anlayabilmek için iyi bir örnek oluşturmaktadır.

Kriptografide ise, alt küme toplamı probleminin önemli bir yer tutmasının sebebi, şifrelenmiş bir metnin anahtarını bulabilmeyi sağlamasıdır.

Problemin Tanımı
----------------

Alt küme toplamı sınıfı, alt kümeleri arasında elemanları toplamı t olan bir küme bulunan tüm S kümelerini içerir. Matematiksel olarak şöyle ifade edilir:

SUBSET-SUM = { < S,t > | S = {{\displaystyle x\_{1}}, ... ,{\displaystyle x\_{k}}} ve bazı Y = {{\displaystyle y\_{1}}, ... , {\displaystyle y\_{l}}} ⊆ S için {\displaystyle \sum \_{i=1}^{l}y\_{i}=t} }

Bu tanımda geçen S ve Y kümeleri multisetlerdir, bu kümelerde eleman tekrarına izin verilir.

Basit bir örnek vermek gerekirse: < {1,2,3,4}, 5 > ∈ SUBSET-SUM

Alt Küme Toplamı Probleminin Karmaşıklığı
-----------------------------------------

Alt küme toplamı problemi NP-Complete sınıfında yer almaktadır. Bir dilin NP-Complete sınıfına ait olduğunu göstermek için;

1. Dilin, NP sınıfında yer aldığını,
2. NP sınıfında yer alan diğer tüm dillerin polinom zamanda o dile indirgenebilir olduğunu

göstermek gerekmektedir.

### Alt Küme Toplamı Problemi NP Sınıfında Bulunur

Alt küme toplamı probleminin [NP] sınıfında yer aldığını, {\displaystyle SUBSET-SUM\in NP}, göstermek için bir doğrulayıcı (*verifier*) kullanılabilir. Sertifika olarak S’in bir alt kümesini kullanacak olan bu doğrulayıcı aşağıdaki gibi yazılabilir:  

  

V= "< < S,t >,c > girdisinde:

1. Sertifikada bulunan elemanların toplamının t’ye eşit olup olmadığını test et
2. Sertifikada bulunan elemanların S kümesinin elemanı olup olmadığını test et
3. Eğer ikisi de tamamsa, kabul et; değilse reddet."

### 3SAT Problemi, Alt Küme Toplamı Problemine Polinom Zamanda İndirgenebilir

NP sınıfındaki tüm dillerin polinom zamanda alt küme toplamı diline indirgenebilir olduğunu göstermek için NP-Complete olan 3SAT dili kullanılabilir.

Bu problemin alt küme toplamı problemine polinom zamanda indirgenebilir, {\displaystyle 3SAT\leq \_{p}SUBSET-SUM}, olduğu bir tablo kullanılarak gösterilebilir.

Φ; {\displaystyle x\_{1}}, ... , {\displaystyle x\_{l}} değişkenli, {\displaystyle c\_{1}}, ... , {\displaystyle c\_{k}} cümleli (*clause*) Boolean bir formül olsun.

Kullanılacak olan tabloda kolonlar, Φ formülünün değişkenlerini ve cümlelerini; satırlar ise, S kümesinin elemanlarının ve t toplamının ondalık düzende gösterimlerini ifade eder.

Tablodaki çift çizginin üzerinde bulunan {\displaystyle y\_{1}}, {\displaystyle z\_{1}}, ... , {\displaystyle y\_{l}}, {\displaystyle z\_{l}} ve {\displaystyle g\_{1}}, {\displaystyle h\_{1}}, ... , {\displaystyle g\_{k}}, {\displaystyle h\_{k}} sayıları S kümesinin elemanlarıdır, çizginin alt kısmında kalan kısımda ise t sayısı yer alır. Kullanılan bu tabloda, Φ formülünde bulunan her bir x\_i değişkeni için {\displaystyle y\_{i}} ve {\displaystyle z\_{i}} şeklinde 2 sayı yer alır. Bu sayıların ondalık gösterimi iki bölümden oluşur. Tablonun sol tarafı, değişkenin indisine uygun y ve z satırına 1 rakamı, geri kalan kısımlarına ise tabloda görüldüğü gibi l-i tane 0 yerleştirilerek oluşturulur. Tablonun sağ tarafında ise, Φ’de bulunan her bir cümle için bir hane bulunur ve şu şekilde doldurulur:

Eğer x\_i ∈ {\displaystyle c\_{j}} ise {\displaystyle y\_{i}} sayısının j’inci hanesine 1 konur.
Eğer {\displaystyle {\bar {x}}\,}i ∈ {\displaystyle c\_{j}} ise {\displaystyle z\_{i}} sayısının j’inci hanesine 1 konur.
Değerinin 1 olduğu belirtilmemiş hanelere ise 0 rakamı yerleştirilir.

Yukarıda bahsedilenlere ek olarak S kümesi, Φ’de bulunan her bir cümle için g ve h sayılarını barındırır. Bu iki sayı birbirine eşittir. Bu sayılar, {\displaystyle c\_{j}} cümlesine uygun düşen haneye 1 rakamı, geri kalan k-j haneye ise 0 yerleştirilerek oluşturulur.

Aşağıdaki tablo Φ = ( {\displaystyle x\_{1}} {\displaystyle \lor } {\displaystyle {\bar {x}}\,}2 {\displaystyle \lor } {\displaystyle x\_{3}}) {\displaystyle \land } ( {\displaystyle x\_{2}} {\displaystyle \lor } {\displaystyle x\_{3}} {\displaystyle \lor } ... ) {\displaystyle \land } ( {\displaystyle {\bar {x}}\,}3 {\displaystyle \lor } ... {\displaystyle \lor } ... )için doldurulmuştur.

358 × 455px

**Φ'nin doğrulanabilir (*satisfiable*) olduğu varsayılırsa;**
Bu varsayıma göre S’in bir alt kümesi oluşturulabilir. Bu alt kümeyi oluşturmak için şöyle bir yol izlenebilir:

Φ’yi doğrulayan x\_i değişkeninin değeri TRUE ise altkümeye {\displaystyle y\_{i}} sayısı
Φ’yi doğrulayan x\_i değişkeninin değeri FALSE ise altkümeye {\displaystyle z\_{i}} sayısı
seçilir.

Oluşturulan bu alt kümenin elemanları toplandığında, tablonun t satırındaki ilk l hanede 1 rakamı elde edilir, çünkü alt kümeye ya {\displaystyle y\_{i}} ya da {\displaystyle z\_{i}} sayısı seçilmiştir. Ayrıca son k hanede ise toplamın en fazla 3, en az 1 olduğu görülür. Bunun sebebi, Φ formülü doğrulanabilir olduğundan her cümlede en fazla 3, en az 1 değişkenin TRUE değerini almış olmasıdır. Toplamın 3 olmadığı durumlarda ise uygun indisli g ve/veya h sayıları kullanılarak toplamın 3’e ulaşması sağlanabilir.

**S kümesinin elemanları toplamı t olan bir alt kümesi olduğu varsayılırsa;**
Tablodan da görüldüğü gibi, altküme elemanlarının hanelerinde ya 1 ya da 0 rakamı bulunmaktadır, ayrıca her kolonda en fazla 5 adet 1 rakamı bulunduğundan toplama işlemi eldesiz gerçekleşir.
İlk l kolonda toplamın 1 olması, ya {\displaystyle y\_{i}} sayısının ya da {\displaystyle z\_{i}} sayısının alt küme elemanları arasında yer almakta olduğunu gösterir. İkisi birden alt kümede bulunamaz, çünkü o durumda toplamları 2 olacağından varsayıma aykırı olur.
Bu varsayımdan yola çıkılarak, Φ formülünün doğrulanabilirliği şu şekilde sağlanabilir:

Eğer alt kümede {\displaystyle y\_{i}} sayısı bulunuyorsa x\_i değişkenine TRUE değeri,
Eğer alt kümede {\displaystyle z\_{i}} sayısı bulunuyorsa x\_i değişkenine FALSE değeri
atanır.

Bu atamayla Φ formülünün doğrulanabilirliği sağlanabilir, çünkü son satırdaki t sayısının son k hanesinde 3 rakamı bulunmaktadır. Son k kolonda toplamın 3 olmasını sağlayacak en az 1 tane değer, alt kümeye seçilmiş olan {\displaystyle y\_{i}} veya {\displaystyle z\_{i}} sayısından gelmelidir, çünkü alt kümeye seçilebilecek olan g ve h sayılarından en fazla 2 toplamı elde edilebilir.

Bu durumda;

eğer bu 1 rakamı, {\displaystyle y\_{i}} sayısından geliyorsa x\_i ∈ {\displaystyle c\_{j}} ve x\_i = TRUE
eğer bu 1 rakamı, {\displaystyle z\_{i}} sayısından geliyorsa {\displaystyle {\bar {x}}\,}i ∈ {\displaystyle c\_{j}} ve x\_i = FALSE
olduğundan dolayı Φ formülünde bulunan her {\displaystyle c\_{j}} cümlesi doğrulanabilir, dolayısıyla Φ formülü doğrulanabilir olduğu gösterilebilir.

Son olarak da yukarıda bahsedilen tablonun kullanımıyla yapılan bu indirgemenin polinom zamanda gerçekleştirildiğini göstermek için tablonun boyutlarına bakılabilir. Tablonun boyutları kabaca {\displaystyle (k+l)^{2}} olarak ifade edilebilir, dolayısıyla bu indirgeme için harcanan zamanın O({\displaystyle n^{2}}) olduğu söylenebilir.

Ayrıca bakınız
--------------

* Cook-Levin teoremi
* 3SAT-KLIK indirgemesi
* Bağımsız küme problemi
* Hamilton yolu problemi
* P ile NP Arasındaki İlişki
* Karmaşıklık

Kaynakça
--------

1. ↑  Michael Sipser: "Introduction to the Theory of Computation" Course Technology Press Second Edition, 2005.