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

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در علوم رایانه مسئلهٔ جمع زیرمجموعه‌ها (به انگلیسی: Subset_sum_problem) از اهمیت مهمی در تئوری پیچیدگی و رمزنگاری برخوردار است، مسئله این است که اگر مجموعه‌ای از اعداد صحیح داشته باشیم ایا زیرمجموعه ناتهی وجود دارد که جمع اعضایش برابر ۰ شود؟ برای مثال در مجموعه {۱٬۳،-۲،-۵٬۹٬۴} زیرمجموعه‌ای مانند {-۵،-۲٬۳٬۴} وجود دارد که جمع اعضایش برابر ۰ است. مسئله جمع زیرمجموعه‌ها NP است و احتمالا یکی از اسانترین انان است. صورت دیگر این مسئله این است که ایا زیرمجموعه ناتهی از مجموعه‌ای از اعداد صحیح وجود دارد که جمع اعضایش برابر عدد صحیح s شود؟ مسئله دیگری که به نام subset sum problem معروف است این مسئله‌است که درمجموعه‌ای از اعداد طبیعی، اگر مجموع اعضای زیر مجموعه‌ها را در نظر گیریم، عدد که بیشترین تکرار را دارد، چند بار تکرار می‌شود؟ پورکتر در سال ۱۹۸۲ این مسئله را برای مجموعهٔ {۱٬۲٬۳…} حل کرد. برای n=1٬۲،… جواب برابر است با ۱، ۱، ۲، ۲، ۳، ۵، ۸، ۱۴، ۲۳،… و تعداد اعداد متفاوت ایجاد شده برای n=1٬۲،… برابر است با ۲، ۴، ۷، ۱۱، ۱۶، ۲۲، ۲۹، ۳۷، ۴۶، ۵۶،.... برای مثال برای n=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

پس عددی که بیشتر از همه ظاهر می‌شود عدد ۳ است که ۲ بار تکرار می‌شود و ۷ عدد متفاوت ایجاد می‌شود. این مسئله را می‌توان با استفاده از توابع مولد حل نمود. اگر c_{m,s} تعداد روشهای انتخاب m عدد از میان Mعدد \lbrace a_1, a_2...a_M \rbrace باشد بصورتی که جمعشان برابر 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

G_m(x)=\sum_s C_{m,s}x^s

برای مثال فرض کنید می‌خواهیم m شی را از {۱٬۲٬۳٬۴٬۵} انتخاب کنیم؛ تابع مولد بصورت زیر است:

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

G(x,y)=y^5x^15+(x^14+x^13+x^12+x^11+x^10)y^4+(x^12+x^11+2x^10+2x^9+2x^8+x^7+x^6)y^3+

(x^9+x^8+2x^7+2x^6+2x^5+x^4+x^3)y^2+(x^5+x^4+x^3+x^2+x)y+1

پس تعداد روشهای انتخاب ۳ عدد از میان ۵ عدد که جمعشان عددی بین ۱۲٬۱۱،…،۶ باشد ضرایب G_3(x) است که همان C_{3,s} می‌باشد که برابر ۱٬۱٬۲٬۲٬۲٬۱٬۱ است.

۶ \gets(۱، ۲، ۳)

۷ \gets(۱، ۲، ۴)

۸\gets (۱، ۲، ۵)، (۱، ۳، ۴)

۹\gets (۱، ۳، ۵)، (۲، ۳، ۴)

۱۰\gets (۱، ۴، ۵)، (۲، ۳، ۵)

۱۱\gets (۲، ۴، ۵)

۱۲\gets (۳، ۴، ۵)

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

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/CS۱۰۵-Winter۰۵/Notes/nanda-scribe-۳.pdf

www.cs.umass.edu/~barring/cs۶۱۱/lecture/۱۸.pdf