পারমুটেশন
এই পাঠে যা শিখবেন
- পারমুটেশনের সংজ্ঞা এবং $P(n,r)$ সূত্র কীভাবে আসে
- $n!$ (ফ্যাক্টরিয়াল) — সবগুলো বস্তু সাজানোর গণনা
- পুনরাবৃত্তিসহ পারমুটেশন ($n^r$) — কখন এটি প্রযোজ্য
- Python-এর
math.permওitertools.permutationsদিয়ে হাতে-করা গণনা যাচাই
১ · পারমুটেশন মানে ক্রম গুরুত্বপূর্ণ
গত পাঠে (L12) আমরা দেখেছি গুণের নিয়ম কীভাবে স্বাধীন ধাপ গোনে। কিন্তু কিছু কাউন্টিং সমস্যায় ধাপগুলো সম্পূর্ণ স্বাধীন নয় — একটি বস্তু একবার বাছাই হলে সেটি আর দ্বিতীয়বার বাছাই করা যায় না। এই ধরনের অর্ডার-সংবেদনশীল, পুনরাবৃত্তি-ছাড়া গণনাকে বলা হয় PermutationPermutation (পারমুটেশন)একটি সসীম সেটের বস্তুর একটি ক্রমবিন্যাস — যেখানে বস্তুর সাজানোর ক্রম গুরুত্বপূর্ণ এবং প্রতিটি বস্তু সর্বোচ্চ একবার ব্যবহৃত হয়।।
$n$টি ভিন্ন বস্তু থেকে $r$টি বেছে সাজানোর সংখ্যা $P(n,r)$ দিয়ে লেখা হয়। গুণের নিয়ম দিয়ে সরাসরি এটি বের করা যায়: প্রথম স্থানের জন্য $n$টি বিকল্প, দ্বিতীয় স্থানের জন্য $n-1$টি (একজন ইতিমধ্যে বাছাই), তৃতীয় স্থানের জন্য $n-2$টি — এভাবে $r$টি স্থান পর্যন্ত।
$$P(n,r) = n \times (n-1) \times (n-2) \times \cdots \times (n-r+1) = \frac{n!}{(n-r)!}$$
২ · উদাহরণ — $P(5,3)$
ধরুন ৫ জন প্রতিযোগী থেকে ১ম, ২য়, ৩য় স্থান বিজয়ী বেছে নিতে হবে (ক্রম গুরুত্বপূর্ণ — কে ১ম আর কে ৩য় তা আলাদা)। মোট উপায়:
$$P(5,3) = \frac{5!}{(5-3)!} = \frac{5!}{2!} = \frac{120}{2} = 60$$
সরাসরি গুণের নিয়মেও যাচাই করা যায়: প্রথম স্থানের জন্য ৫ উপায়, দ্বিতীয় স্থানের জন্য ৪ উপায় (একজন বাদ), তৃতীয় স্থানের জন্য ৩ উপায় (দুইজন বাদ) — $5 \times 4 \times 3 = 60$। দুইভাবেই একই উত্তর।
৩ · $n!$ — সবগুলো বস্তু সাজানো
যদি $r=n$ হয় (অর্থাৎ সবগুলো বস্তুই সাজাতে হবে), তাহলে $P(n,n) = \dfrac{n!}{0!} = n!$ (যেহেতু $0!=1$)। একে বলা হয় ফ্যাক্টরিয়ালFactorial (n!)$n! = n \times (n-1) \times \cdots \times 2 \times 1$, এবং সংজ্ঞানুসারে $0!=1$। $n$টি ভিন্ন বস্তু সাজানোর মোট উপায়ের সংখ্যা। — যেমন ৫ জন মানুষকে একটি লাইনে দাঁড় করানোর মোট উপায় $5! = 120$।
৪ · পুনরাবৃত্তিসহ পারমুটেশন
উপরের সূত্র ধরে নেয় প্রতিটি বস্তু সর্বোচ্চ একবার ব্যবহৃত হয়। কিন্তু যদি পুনরাবৃত্তি অনুমোদিত হয় — যেমন একটি ৪-ডিজিটের পিন কোড যেখানে প্রতিটি ডিজিট (০-৯) যেকোনো স্থানে পুনরায় ব্যবহার করা যায় — তাহলে প্রতিটি স্থানের বিকল্প সংখ্যা সবসময় $n$-ই থাকে, কমে না। মোট উপায় হয় $n^r$।
$P(n,r) = n!/(n-r)!$ — প্রতিটি বাছাইয়ের পর বিকল্প কমে।
$n^r$ — প্রতিটি স্থানে সবসময় $n$টি বিকল্প থাকে।
import math
import itertools
n, r = 5, 3
by_formula = math.perm(n, r)
by_enum = len(list(itertools.permutations(range(n), r)))
print(f"P({n},{r}) সূত্র দিয়ে (math.perm):", by_formula)
print(f"P({n},{r}) সরাসরি গণনা করে (itertools):", by_enum)
print("দুটো পদ্ধতি মিলে গেছে:", by_formula == by_enum)
math.perm(n, r) সরাসরি $P(n,r)$ সূত্র হিসাব করে, আর itertools.permutations(range(n), r) প্রতিটি
সম্ভাব্য ক্রমবিন্যাস আসলেই তৈরি করে গোনে — দুটো ভিন্ন পদ্ধতি একই উত্তর ($60$) দেয়, যা সূত্রটির সঠিকতা নিশ্চিত করে।
পারমুটেশন হলো "ক্রম গুরুত্বপূর্ণ, পুনরাবৃত্তি নেই" এই দুই শর্তের কাউন্টিং। পরের পাঠে (L14) আমরা দেখব যখন ক্রম গুরুত্বপূর্ণ নয় — শুধু কোন বস্তুগুলো বাছাই হলো তা গুরুত্বপূর্ণ — তখন কম্বিনেশন ব্যবহার হয়, যা পারমুটেশনেরই একটি সরল রূপান্তর।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ ৮ জন শিক্ষার্থী থেকে ৩ জনকে বেছে একটি সভাপতি, সহ-সভাপতি ও সম্পাদক পদে বসাতে হবে (প্রতিটি পদ ভিন্ন)। এখানে পারমুটেশন নাকি কম্বিনেশন প্রযোজ্য, এবং উত্তর কত?
মূল উত্তর — পারমুটেশন। কারণ প্রতিটি পদ ভিন্ন — কে সভাপতি আর কে সম্পাদক তা গুরুত্বপূর্ণ, তাই ক্রম গুরুত্বপূর্ণ। $P(8,3) = \dfrac{8!}{5!} = 8 \times 7 \times 6 = 336$।
যদি প্রশ্নটি হতো "৩ জনের একটি কমিটি বেছে নিন" (কোনো পদ ছাড়া, শুধু কারা কমিটিতে থাকবে), তখন এটি কম্বিনেশন হতো — পরের পাঠে (L14) এই পার্থক্যটি বিস্তারিত দেখব।
প্র ০২ একটি ৪-ডিজিটের ATM পিন কোডে প্রতিটি ডিজিট (০-৯) পুনরাবৃত্তি হতে পারে। মোট কতগুলো ভিন্ন পিন কোড সম্ভব, এবং এটি কেন $P(n,r)$ সূত্র দিয়ে নয়?
মোট $10^4 = 10{,}000$টি পিন কোড সম্ভব। এটি $P(n,r)$ সূত্র দিয়ে নয়, কারণ $P(n,r)$ ধরে নেয় প্রতিটি বস্তু সর্বোচ্চ একবার ব্যবহৃত হয় (একবার বাছাই হলে বিকল্প কমে যায়)। কিন্তু পিন কোডে একই ডিজিট একাধিকবার আসতে পারে (যেমন "1122" বৈধ) — তাই প্রতিটি স্থানের বিকল্প সংখ্যা সবসময় $10$-ই থাকে, এবং সূত্র হয় $n^r = 10^4$।
প্র ০৩ কেন $0! = 1$ বলে সংজ্ঞায়িত করা হয়, শূন্য নয়? এই সংজ্ঞা $P(n,n)=n!$ সূত্রের সাথে কীভাবে সামঞ্জস্যপূর্ণ?
$0!=1$ একটি কনভেনশন যা কাউন্টিং সূত্রগুলোকে সামঞ্জস্যপূর্ণ রাখে। ভাবুন — "শূন্যটি বস্তু সাজানোর কতভাবে যায়?" উত্তর হলো ঠিক ১ উপায় — "কিছু না করা", যা একটি বৈধ, একক ফলাফল। যদি $0!=0$ হতো, তাহলে $P(n,n) = n!/0! = n!/0$ হয়ে যেত অসংজ্ঞায়িত (division by zero) — যা কাউন্টিংয়ের জন্য অর্থহীন।
$0!=1$ সংজ্ঞা দিয়ে $P(n,n) = n!/0! = n!/1 = n!$ ঠিক আমাদের প্রত্যাশিত ফলাফল দেয় — সবগুলো $n$টি বস্তু সাজানোর মোট উপায় $n!$।
অনুশীলন
-
গণনা করুন: একটি দৌড় প্রতিযোগিতায় ৬ জন অংশ নেয়। ১ম, ২য়, ৩য় স্থান কতভাবে বিতরণ করা যায় (ধরুন কোনো টাই নেই)?
এটি $P(6,3)$: $\dfrac{6!}{3!} = 6 \times 5 \times 4 = 120$টি উপায়।
-
যাচাই করুন: উপরের কোড সেলে
n, r = 5, 3পরিবর্তন করেn, r = 6, 3বসান এবং হাতে-হিসাব করা $120$-এর সাথে কোড আউটপুট মিলিয়ে দেখুন।math.perm(6, 3)এবংlen(list(itertools.permutations(range(6), 3)))— দুটোই $120$ প্রিন্ট করা উচিত। যদি না মেলে, নিশ্চিত করুনrange(n)-এরnঠিক বসিয়েছেন,range(r)নয় —itertools.permutations-এ প্রথম আর্গুমেন্ট হলো মোট বস্তুর সেট।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৪৪টি পাঠ পরবর্তী পাঠ — কম্বিনেশন ও বাইনোমিয়াল কোয়েফিসিয়েন্ট — ক্রম-নিরপেক্ষ গণনা শেখাবে।
- Data Structures & Algorithms কোর্স সঙ্গী কোর্স পারমুটেশন-ভিত্তিক ব্রুট-ফোর্স অ্যালগরিদম (যেমন Traveling Salesman) DSA কোর্সে দেখা যাবে।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, HTML & CSS ও Discrete Mathematics — সব এক জায়গায়।