مجموعه توانی چیست؟ — از صفر تا صد
در ریاضیات، مجموعه توانی (Power Set) برای یک مجموعه مانند شامل همه زیر مجموعههای آن است. البته از آنجایی که خود و مجموعه تهی، زیر مجموعههای ذاتی محسوب میشوند، آنها را هم در مجموعه توانی منظور میکنند. مجموعه توانی نقش مهمی در ریاضیات و بخصوص نظریه مجموعه (Set Theory) و آنالیز ریاضی دارد. به همین دلیل در این نوشتار به مجموعه توانی و خصوصیات آن پرداختهایم. هر چند مفهوم مجموعه توانی، ساده به نظر میرسد، ولی یکی از مفاهیم پایه برای مجموعهها است.
به منظور آشنایی بیشتر با مجموعهها و خصوصیات آنها بهتر است به عنوان مقدمه نوشتارهای دیگر مجله فرادرس با موضوع مرتبط با مجموعه توانی را بخوانید. در این میان خواندن مطالب مجموعه متناهی و نامتناهی — تعاریف و خصوصیات و عدد اصلی مجموعه یا کاردینالیتی — به زبان ساده توصیه میشود. همچنین مطالعه نوشتارهای مجموعه ها در ریاضیات – مفاهیم پایه و اجتماع، اشتراک و تفاضل مجموعه ها — به زبان ساده نیز خالی از لطف نیست.
مجموعه توانی
همانطور که در ابتدای متن بیان شد، «مجموعه توانی» (Power Set) یک مجموعه است که اعضای آن باز هم مجموعه هستند، بطوری که هر عضوی، یک زیر مجموعه از مجموعه اصلی است. بنابراین اگر را یک مجموعه در نظر بگیریم و مجموعه توانی آن را به صورت مشخص کنیم، میتوان گفت که از همه زیرمجموعههای ممکن مجموعه تشکیل شده است. این موضوع را به بیان ریاضی به صورت زیر نشان میدهیم.
به این ترتیب، هر عضوی از مجموعه توانی یکی از زیرمجموعههای است.
نکته: را زیر مجموعه مینامند اگر هر عضوی از در وجود داشته باشد. بنا بر تعریف ارائه شده، مشخص است که هر مجموعهای، زیر مجموعه خودش هست. از طرفی با کمک گزارههای شرطی و استلزام منطقی واضح است که مجموعه تهی () نیز زیر مجموعه هر مجموعهای است.
با توجه به نکته گفته شده، دو مجموعه و تهی اعضای بدیهی مجموعه توانی هستند. به عنوان مثال اگر مجموعه را به همراه اعضایش مانند رابطه زیر تعریف کنیم:
آنگاه همه زیرمجموعههای ممکن آن به شکل زیر نوشته خواهند شد.
- مجموعه تهی ()
- زیرمجموعههای تک عضوی ().
- زیرمجموعههای دو عضوی ().
- زیرمجموعههای سه عضوی ( که همان مجموعه محسوب میشود.
در این صورت رابطه زیر برقرار خواهد بود.
در تصویر زیر اعضای مجموعه توانی را به ترتیب تعداد اعضا مشخص کردهایم. در بالای نمودار، مجموعه و در انتها یا پایین نمودار نیز دیده میشود. مجموعههای پایینی در این نمودار با اجتماع با یکدیگر، مجموعههای بالایی را میسازند. جهت فلشها گویای این مسئله است.
خصوصیات مجموعه توانی
اگر مجموعه ، یک «مجموعه متناهی» (Finite Set) باشد و تعداد اعضای آن را بنامیم، آنگاه تعداد اعضای مجموعه توانی که با نشان داده میشود و برابر است با:
این امر را به صورت گزاره زیر میتوان توجیه و بیان کرد.
ابتدا همه عناصر را به شکل دلخواهی مرتب میکنیم. هر زیر مجموعهای از را براساس عناصر مجموعه مینویسیم که در آن مقدار صفر یا یک را میگیرد. توجه دارید که برای مقدار یک را به نسبت میدهیم اگر عضو ام از مجموعه مرتب شده در زیرمجموعه مورد نظر حضور داشته باشد. در غیر اینصورت، مقدار صفر را برایش در نظر میگیریم. از آنجایی که تعداد حالتهایی که میتوان چنین مجموعهای را ساخت برابر با است، تعداد اعضای مجموعه توانی نیز برابر با خواهد بود.
نکته: از آنجایی که مجموعه تهی یکی از زیرمجموعههای در نظر گرفته شده، تعداد زیرمجموعههای غیر تهی را محاسبه میکنند.
«عناصر قطری کانتور» (Cantor's Diagonal Argument) نشان میدهد که مجموعه توانی یک مجموعه (چه متناهی یا نامتناهی) دارای عدد اصلی یا کاردینالتی بزرگتر از خود مجموعه است. به شکل سادهتر میتوان این گزاره را نشانگر بزرگتر بودن مجموعه توانی از خود مجموعه دانست.
همچنین «قضیه کانتور» (Cantor Theorem) نشان میدهد که مجموعه توانی یک مجموعه شمارشپذیر نامتناهی، مجموعهای نامتناهی ولی شمارشناپذیر است. بنابراین مجموعه توانی مجموعه اعداد طبیعی (Natural Numbers)، دارای یک رابطه یک به یک و پوشا ( one-to-one correspondence) با مجموعه اعداد حقیقی (Real Numbers) است.
مجموعه توانی برای مجموعه به همراه اجتماع (Union) و اشتراک (Intersection) و متممگیری (Complement)، میتواند یک الگو برای جبر بول (Boolean Algebra) ایجاد کند.
مجموعه توانی برای مجموعه ، یک «گروه آبلی» (Abelian Group) است زمانی که عملگر را به صورت تفاضل متقارن (symmetric difference) در نظر بگیریم. به این ترتیب مجموعه تهی، عضو خنثی و هر مجموعه نیز معکوس خودش خواهد بود. همچنین عملگر اشتراک نیز باعث بوجود آمدن خاصیت جمعپذیری با پخشی خواهد شد. به این ترتیب، به کمک خاصیت پخشی، میتوان نشان داد که مجموعه توانی به همراه عملگرهای یاد شده، تشکیل یک «حلقه بولی» (Boolean Ring) را میدهد.
بیان مجموعه توانی به عنوان یک تابع
معمولا برای نمایش تمامی توابع از به از نماد استفاده میکنند. به این ترتیب اگر عدد ۲ را براساس نمایش اعداد طبیعی (Natural Number) به صورت نشان دهیم، آنگاه همه توابعی که از به ۲ وجود دارند به شکل نوشته میشوند.
به کمک شناسایی توابعی که از «پیش-تصویر» (Preimage) عدد ۱ در روی ساخته میشوند میتوان یک تناظر یک به یک و پوشا بین مجموعه توانی یعنی با ساخت.
از نمادی که در بالا به آن اشاره کردیم برای شرح یک مثال استفاده میکنیم. فرض کنید باشد. میخواهیم نشان دهیم که بین اعداد دو دویی از صفر تا یک «همریختی» (Isomorphism) وجود دارد. یه این معنی که رابطهای یک به یک و پوشا بین آنها قابل تعریف است. توجه داشته باشید که در اینجا تعداد عناصر مجموعه است.
رقم ۱ در هر یک از زیرمجموعههای ، نشانگر مکان در مجموعه فهرست شده است. بنابراین مجموعه به شکل نشان داده میشود. توجه داشته باشید که ارقام از راست به چپ، موقعیت را نشان میدهند.
زیر مجموعه | دنباله ارقام | تفسیر دو-دویی (عدد در مبنای ۲) | معادل ده-دهی (عدد در مبنای ۱۰) |
---|---|---|---|
{ } | 0, 0, 0 | 000(2) | 0(10) |
{ x } | 0, 0, 1 | 001(2) | 1(10) |
{ y } | 0, 1, 0 | 010(2) | 2(10) |
{ x, y } | 0, 1, 1 | 011(2) | 3(10) |
{ z } | 1, 0, 0 | 100(2) | 4(10) |
{ x, z } | 1, 0, 1 | 101(2) | 5(10) |
{ y, z } | 1, 1, 0 | 110(2) | 6(10) |
{ x, y, z } | 1, 1, 1 | 111(2) | 7(10) |
چنین نگاشتی از مجموعه به اعداد صحیح، به صورت دلخواه تشکیل شده، به همین دلیل نمایش زیرمجموعههای یک مجموعه مانند براساس روش بالا، منحصر به فرد نیست. از طرفی ترتیب قرارگیری عناصر در نمایش یکسان است زیرا میدانیم که تغییر در ترتیب عناصر یک مجموعه، باعث افزایش یا کاهش «عدد اصلی» (Cardinality) یک مجموعه نخواهد شد.
نکته: البته توجه داشته باشید که این گونه نمایش دو-دویی برای مجموعه فقط در حالتی که این مجموعه شمارا (enumerated) باشد، امکان پذیر است. حتی ممکن است که این مجموعه دارای عدد اصلی بینهایت مانند مجموعههای اعداد طبیعی و گویا باشد، ولی نمیتوان از این شیوه نمایش برای زیرمجموعههای اعداد حقیقی که ناشمارا هستند، کمک گرفت.
ارتباط مجموعه توانی با قضیه دو جملهای
مجموعه توانی ارتباط نزدیکی با «قضیه دو جملهای» (Binomial Theorem) یا مثلث خیام-پاسکال دارد. به کمک «حساب ترکیبیاتی» (Combinatorials) و عمل ترکیب، میتوان نشان داد که تعداد زیرمجموعههای عضوی از یک مجموعه تایی برابر است با ترکیب از که با نماد نشان داده میشود. مقدار این ترکیب را با عنوان «ضریب دو جملهای» (Binomial Coefficient) نیز میشناسند.
برای مثال یک مجموعه سه عضوی () را مانند مثال قبل در نظر بگیرید. تعداد زیرمجموعههای عضوی آن به صورت زیر مشخص میشود.
- نشانگر تعداد زیرمجموعههای بدون عضو از است که برابر است با ۱. مشخص است که این مجموعه همان است.
- نشانگر تعداد زیرمجموعههای تک عضوی از است که برابر است با ۳.
- نشانگر تعداد زیرمجموعههای دو عضوی از است که برابر است با ۳.
- نشانگر تعداد زیرمجموعههای سه عضوی از است که برابر است با ۱. باز هم مشخص است که زیر مجموعه سه عضوی از ، همان مجموعه خواهد بود.
به این ترتیب میتوانیم تعداد زیرمجموعههای را به شکل زیر محاسبه کنیم. توجه داشته باشید که منظور از همان تعداد زیرمجموعههای است. همچنین نماد بیانگر ترکیب از است.
که در آن نشانگر تعداد اعضای مجموعه است. به این ترتیب اگر باشد، آنگاه رابطه زیر برقرار است.
الگوریتم پیدا کردن مجموعه توانی
در ادامه این متن به بررسی الگوریتمی برای پیدا کردن زیرمجموعههای یک مجموعه خواهیم پرداخت تا به کمک آن مجموعه توانی را تولید کنیم.
ورودی این الگوریتم، یک بردار عددی است که بیانگر یک مجموعه است. توجه دارید که در یک مجموعه عضو تکراری وجود ندارد در نتیجه بردار یاد شده، شامل مقادیر تکراری نیست. خروجی و هدف از اجرای این الگوریتم، پیدا کردن تمامی مجموعههایی است که میتوانیم از ترکیب کردن این اعداد بسازیم.
نکته: توجه دارید که منظور از ترکیب، قرار دادن اعداد در کنار یکدیگر بدون در نظر گرفتن ترتیب آنها است. به این ترتیب برای مثال مجموعه با یکسان تلقی خواهد شد.
1input set = [1, 2, 3]
2power set = [[], [1], [2], [3], [1, 2], [2, 3], [1, 3] [1, 2, 3]]
بنابراین مجموعه توانی (Power Set) شامل همه ترکیبهای این اعداد در نظر گرفته میشود. بدیهی است که مجموعه تهی و مجموعه اصلی نیز از اعضای مجموعه توانی خواهند بود.
از آنجایی که تعداد اعضای مجموعه توانی برای مجموعهای به تعداد اعضای برابر با است، باید الگوریتم را به تعداد اعداد صفر تا تکرار کنیم.
1(1) Loop from 0 to 2N
2(2) For each number get the binary representation of the number, e.g. 3 = 011
3(3) Determine from the binary representation whether or not to include a number from the set, e.g. 011 = [exclude, include, include]
- گام اول: تکرار مراحل بعدی از صفر تا . شمارنده از صفر تا .
- گام دوم: برای هر یک از مقادیر شمارنده در گام قبلی، نمایش باینری (دو-دویی) را محاسبه کن.
- گام سوم: براساس نمایش باینری هر عدد، وجود یا عدم عضو در زیرمجموعه را مشخص کن. (برای مثال 001 نشانگر، [وجود، عدم، عدم]).
برای مثال فرض کنید مجموعه به صورت مشخص شده باشد. در این صورت داریم:
10 = 000
21 = 001
32 = 010
43 = 011
54 = 100
65 = 101
76 = 110
87 = 111
با توجه به موقعیت هر یک از ارقام ۰ و ۱ در نمایش دو-دویی میتوانیم حضور یا عدم حضور هر عضو در مجموعه را نمایش دهیم. به این ترتیب این ارقام به شکل زیر زیر مجموعهها را مشخص میکنند.
1000 = [exclude, exclude, exclude] = []
2001 = [exclude, exclude, include] = [3]
3010 = [exclude, include, exclude] = [2]
4011 = [exclude, include, include] = [2, 3]
5100 = [include, exclude, exclude] = [1]
6101 = [include, exclude, include] = [1, 3]
7110 = [include, include, exclude] = [1, 2]
8111 = [include, include, include] = [1, 2, 3]
این زیرمجموعهها، تشکیل مجموعه توانی را خواهند داد. در ادامه شبه کد مربوط به ایجاد مجموعه توانی به کمک نمایش دو-دویی معرفی شده است.
1function powerSet(arr) {
2
3 // the final power set
4 var powers = [];
5
6 // the total number of sets that the power set will contain
7 var total = Math.pow(2, arr.length);
8
9 // loop through each value from 0 to 2^n
10 for (var i = 0; i < total; i++) {
11
12 // our set that we add to the power set
13 var tempSet = [];
14
15 // convert the integer to binary
16 var num = i.toString(2);
17
18 // pad the binary number so 1 becomes 001 for example
19 while (num.length < arr.length) { num = '0' + num; }
20
21 // build the set that matches the 1's in the binary number
22 for (var b = 0; b < num.length; b++) {
23 if (num[b] === '1') { tempSet.push(arr[b]); }
24 }
25
26 // add this set to the final power set
27 powers.push(tempSet);
28
29 }
30
31 return powers;
32
33}
34
35powerSet([1, 2, 3]);
به این ترتیب اگر از زبان برنامهنویسی برای پیادهسازی الگوریتم کمک بگیریم، قطعه کدی به شکل زیر خواهیم داشت.
1powerset <- function(set){
2 ps <- list()
3 ps[[1]] <- numeric() #Start with the empty set.
4 for(element in set){ #For each element in the set, take all subsets
5 temp <- vector(mode="list",length=length(ps)) #currently in "ps" and create new subsets (in "temp")
6 for(subset in 1:length(ps)){ #by adding "element" to each of them.
7 temp[[subset]] = c(ps[[subset]],element)
8 }
9 ps <- c(ps,temp) #Add the additional subsets ("temp") to "ps".
10 }
11 ps
12}
خلاصه و جمعبندی
نظریه مجموعهها (Set Theory) و مسائل وابسته به آن یکی از زیباترین بخشهای ریاضیات محسوب میشود که پرسابقهترین شاخه ریاضیات نیز هست. البته در بعضی از مواقع، مفاهیم انتزاعی و قضیههای بسیار پیچیدهای نیز برای توصیف رفتارهای ساده مجموعهها به کار میرود که باعث شده دانشجویان به ندرت به سمت مطالعه این نظریه بروند. دسته مطالب مربوط به نظریه مجموعهها در مجله فرادرس، به منظور سادهسازی و روشنتر کردن مفاهیم و قضیههای نظریه مجموعهها نگاشته میشوند.
در این مطلب با تعریف مجموعه توانی و خصوصیات آن آشنا شده و بعضی ویژگیهای اصلی آن نیز بازگو و مورد بررسی قرار گرفت. همانطور که خواندید، بیان دو-دویی اعداد طبیعی که از تعداد اعضای مجموعه اصلی کوچکتر هستند میتواند راهکاری برای تولید مجموعه توانی باشد. همچنین در پایان این متن نیز الگوریتم و برنامهای با کد برای استخراج مجموعه توانی نیز معرفی گردید.