مسئله جمع زیرمجموعه‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد

پرش به: ناوبری, جستجو

در علوم كامپيوترمسئله جمع زیرمجموعه‌ها (به انگلیسی: Subset_sum_problem) از اهميت مهمي در تئوري پيچيدگي و رمزنگاري برخوردار است، مسئله اين است كه اگر مجموعه اي از اعداد صحيح داشته باشيم ايا زيرمجموعه ناتهي وجود دارد كه جمع اعضايش برابر 0 شود؟ براي مثال در مجموعه {1,3,-2,-5,9,4} زيرمجموعه اي مانند {-5,-2,3,4} وجود دارد كه جمع اعضايش برابر 0 است. مسئله جمع زيرمجموعه‌ها NP است و احتمالا يكي از اسانترين انان است. صورت ديگر اين مسئله اين است كه ايا زيرمجموعه ناتهي از مجموعه اي از اعداد صحيح وجود دارد كه جمع اعضايش برابر عدد صحيح s شود؟ مسئله ديگري كه به نام subset sum problem معروف است اين مسئله است كه درمجموعه اي از اعداد طبيعي، اگر مجموع اعضاي زير مجموعه‌ها را در نظر گيريم،‌ عدد كه بيشترين تكرار را دارد، چند بار تكرار مي شود؟ پوركتر در سال 1982 اين مسئله را براي مجموعه ي {1,2,3…} حل كرد. براي n=1,2,… جواب برابر است با 1, 1, 2, 2, 3, 5, 8, 14, 23,… و تعداد اعداد متفاوت ايجاد شده براي n=1,2,… برابر است با 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, .... براي مثال براي n=3، زير مجموعه هاي مجموعه {1,2,3}مي بينيم:

\sum \varnothing \to 0

1 \to 1

2 \to 2

3 \to 3

1+2 \to 3

1+3 \to 4

2+3 \to 5

1+2+3 \to 6

پس عددي كه بيشتر از همه ظاهر مي شود عدد 3 است كه 2 بار تكرار مي شود و 7 عدد متفاوت ايجاد مي شود. اين مسئله را مي توان با استفاده از توابع مولد حل نمود. اگر cm,s تعداد روشهاي انتخاب m عدد از ميان Mعدد {a1,a2...aM} باشد بصورتي كه جمعشان برابر s باشد و اگر تابع مولد زير را داشته باشيم:

G(x,y)=\prod_{k=1}^M (1+x^{a_k}y)

با نوشتن بر حسب توان هاي y داريم:

G(x,y)=\prod_{m=1}^M G_m(x)y^m

Gm(x) = Cm,sxs
s


براي مثال فرض كنيد مي خواهيم m شي را از {1,2,3,4,5} انتخاب كنيم؛ تابع مولد بصورت زير است:


و براي مثال انتخاب m=3 داراي تابع مولد زير است:

G(x,y) = y5x15 + (x14 + x13 + x12 + x11 + x10)y4 + (x12 + x11 + 2x10 + 2x9 + 2x8 + x7 + x6)y3 +

(x9 + x8 + 2x7 + 2x6 + 2x5 + x4 + x3)y2 + (x5 + x4 + x3 + x2 + x)y + 1

پس تعداد روشهاي انتخاب 3 عدد از ميان 5 عدد كه جمعشان عددي بين 12,11,…,6 باشد ضرايب G3(x) است كه همان C3,s مي باشد كه برابر 1,1,2,2,2,1,1 است.

6 \gets(1, 2, 3)

7 \gets(1, 2, 4)

8\gets (1, 2, 5), (1, 3, 4)

9\gets (1, 3, 5), (2, 3, 4)

10\gets (1, 4, 5), (2, 3, 5)

11\gets (2, 4, 5)

12\gets (3, 4, 5)

[ویرایش] منابع

http://mathworld.wolfram.com/SubsetSumProblem.html

http://www.math.sunysb.edu/~scott/blair/Subset_sum_problems_are.html

http://www-fs.informatik.uni-tuebingen.de/~reinhard/krypto/English/4.5.1.e.html

[ویرایش] لينك ها

www.cs.dartmouth.edu/~ac/Teach/CS105-Winter05/Notes/nanda-scribe-3.pdf

www.cs.umass.edu/~barring/cs611/lecture/18.pdf