Algorithm
অ্যালগরিদম
অ্যালগরিদম (Algorithm)
১. ভূমিকা — তুমি কি ইতিমধ্যে অ্যালগরিদম ব্যবহার করছ?
ধরো তুমি তোমার বন্ধুকে ফোনে বলছো — "ভাই, আমাদের বাড়ি আসতে হলে কী করতে হবে?"
তুমি কি এভাবে বলবে?
"আসো!"
না! তুমি বলবে:
১. বাস স্টেশন থেকে নামো। ২. সোজা হাঁটো ২০০ মিটার। ৩. মসজিদ দেখলে ডানে মোড় নাও। ৪. নীল রঙের বাড়িটাই আমাদের।
এটাই অ্যালগরিদম! তুমি ইতিমধ্যে সারাজীবন অ্যালগরিদম ব্যবহার করে আসছো — শুধু নাম জানতে না।
২. সমস্যা — কম্পিউটার কীভাবে জানবে কী করতে হবে?
কম্পিউটার কিন্তু মানুষের মতো বোঝে না। তুমি যদি বলো "২ এবং ৩ যোগ করো" — সে বুঝবে না।
কম্পিউটারকে বলতে হয়:
- কোথা থেকে শুরু করবে?
- কী কী ধাপ অনুসরণ করবে?
- কখন শেষ হবে?
এই ধাপগুলো সুনির্দিষ্টভাবে লেখার পদ্ধতিই হলো Algorithm (অ্যালগরিদম)।
আসল সমস্যা: কম্পিউটার নিজে থেকে চিন্তা করতে পারে না। আমাদেরই প্রতিটি পদক্ষেপ বলে দিতে হয়।
৩. চিত্রের মাধ্যমে বোঝো
ধরো তুমি চাও "১ থেকে ৫ পর্যন্ত সংখ্যাগুলো যোগ করো":
শুরু
↓
যোগফল = 0, সংখ্যা = 1
↓
সংখ্যা ≤ 5?
↓ হ্যাঁ
যোগফল = যোগফল + সংখ্যা
↓
সংখ্যা = সংখ্যা + 1
↓
আবার চেক করো ← ←
↓ না (সংখ্যা > 5)
যোগফল দেখাও
↓
শেষ
প্রতিটি তীর চিহ্ন একটি ধাপ। কম্পিউটার এভাবেই কাজ করে।
৪. বাস্তব জীবনের সাথে মিল
রান্নার রেসিপি ভাবো:
মায়ের রেসিপি বই:
ডাল রান্নার পদ্ধতি:
১. ডাল ধুয়ে ভিজিয়ে রাখো (৩০ মিনিট)
২. হাঁড়িতে তেল গরম করো
৩. পেঁয়াজ কুচি দাও, বাদামি হওয়া পর্যন্ত ভাজো
৪. আদা-রসুন বাটা দাও
৫. হলুদ, মরিচ মেশাও
৬. ডাল দাও, পানি দাও
৭. ঢেকে জ্বাল দাও — নরম হলে নামাও
এই রেসিপি হলো একটি Algorithm! কারণ:
- ✅ ধাপগুলো সুনির্দিষ্ট (specific)
- ✅ ক্রম ঠিক আছে (ordered)
- ✅ শেষ আছে (finite)
- ✅ ফলাফল নির্দিষ্ট (deterministic)
Module 1: সংজ্ঞা ও ধারণা
Algorithm কী?
Algorithm (অ্যালগরিদম) হলো কোনো সমস্যা সমাধানের জন্য সুনির্দিষ্ট, সসীম এবং সুশৃঙ্খল ধাপের একটি সেট, যা নির্দিষ্ট ইনপুট (Input) নিয়ে নির্দিষ্ট আউটপুট (Output) দেয়।
অ্যালগরিদমের ৫টি বৈশিষ্ট্য:
| বৈশিষ্ট্য | বাংলা | অর্থ |
|---|---|---|
| Input | ইনপুট | শূন্য বা তার বেশি তথ্য দিতে হয় |
| Output | আউটপুট | অন্তত একটি ফলাফল দেয় |
| Definiteness | সুনির্দিষ্টতা | প্রতিটি ধাপ পরিষ্কারভাবে বলা থাকে |
| Finiteness | সসীমতা | একসময় শেষ হয় |
| Effectiveness | কার্যকারিতা | প্রতিটি ধাপ সম্পন্ন করা সম্ভব |
Module 2: কীভাবে কাজ করে
কম্পিউটার Algorithm কীভাবে চালায়?
তোমার Algorithm (মানুষের ভাষায়)
↓
Programming Language
(C, Python, Java...)
↓
Compiler/Interpreter
(মানুষের ভাষা → মেশিন ভাষা)
↓
CPU (Central Processing Unit)
(ধাপে ধাপে কাজ করে)
↓
RAM (Memory)
(তথ্য সাময়িক রাখে)
↓
Output
প্রতিটি ধাপ CPU-তে গিয়ে Instruction (নির্দেশনা) হিসেবে চলে। CPU প্রতি সেকেন্ডে কোটি কোটি Instruction চালাতে পারে।
Module 3: প্যাটার্ন ও উদাহরণ
প্যাটার্ন ১: Sequential Algorithm (ক্রমানুসারী অ্যালগরিদম)
ধাপগুলো একের পর এক চলে। কোনো শর্ত বা লুপ নেই।
উদাহরণ ১.১: দুটি সংখ্যার যোগফল
Algorithm: Add_Two_Numbers
Input: দুটি সংখ্যা a, b
Output: যোগফল
ধাপ ১: a এবং b ইনপুট নাও
ধাপ ২: sum = a + b
ধাপ ৩: sum প্রিন্ট করো
ধাপ ৪: শেষ
উদাহরণ ১.২: আয়তক্ষেত্রের ক্ষেত্রফল
Algorithm: Rectangle_Area
Input: দৈর্ঘ্য l, প্রস্থ w
Output: ক্ষেত্রফল
ধাপ ১: l এবং w ইনপুট নাও
ধাপ ২: area = l × w
ধাপ ৩: area প্রিন্ট করো
ধাপ ৪: শেষ
উদাহরণ ১.৩: সেলসিয়াস থেকে ফারেনহাইট রূপান্তর
Algorithm: Celsius_to_Fahrenheit
Input: সেলসিয়াস তাপমাত্রা C
Output: ফারেনহাইট তাপমাত্রা F
ধাপ ১: C ইনপুট নাও
ধাপ ২: F = (C × 9/5) + 32
ধাপ ৩: F প্রিন্ট করো
ধাপ ৪: শেষ
প্যাটার্ন ২: Conditional Algorithm (শর্তযুক্ত অ্যালগরিদম)
কোনো শর্ত সত্য হলে এক পথে, মিথ্যা হলে অন্য পথে যায়।
উদাহরণ ২.১: সংখ্যা জোড় না বিজোড়
Algorithm: Even_or_Odd
Input: একটি সংখ্যা n
Output: "জোড়" অথবা "বিজোড়"
ধাপ ১: n ইনপুট নাও
ধাপ ২: যদি (n % 2 == 0) হয়
তাহলে প্রিন্ট করো "জোড় সংখ্যা"
নইলে প্রিন্ট করো "বিজোড় সংখ্যা"
ধাপ ৩: শেষ
উদাহরণ ২.২: পাস/ফেল নির্ধারণ
Algorithm: Pass_Fail
Input: নম্বর marks
Output: "পাস" অথবা "ফেল"
ধাপ ১: marks ইনপুট নাও
ধাপ ২: যদি (marks >= 33) হয়
তাহলে প্রিন্ট করো "পাস"
নইলে প্রিন্ট করো "ফেল"
ধাপ ৩: শেষ
উদাহরণ ২.৩: তিনটি সংখ্যার মধ্যে সর্বোচ্চ খোঁজা
Algorithm: Find_Maximum
Input: তিনটি সংখ্যা a, b, c
Output: সর্বোচ্চ সংখ্যা
ধাপ ১: a, b, c ইনপুট নাও
ধাপ ২: যদি (a >= b এবং a >= c) হয়
তাহলে max = a
নইলে যদি (b >= c) হয়
তাহলে max = b
নইলে max = c
ধাপ ৩: max প্রিন্ট করো
ধাপ ৪: শেষ
উদাহরণ ২.৪: গ্রেড নির্ধারণ (HSC-এ গুরুত্বপূর্ণ)
Algorithm: Grade_Calculator
Input: নম্বর marks
Output: গ্রেড
ধাপ ১: marks ইনপুট নাও
ধাপ ২: যদি marks >= 80 → "A+"
যদি marks >= 70 → "A"
যদি marks >= 60 → "A-"
যদি marks >= 50 → "B"
যদি marks >= 40 → "C"
যদি marks >= 33 → "D"
নইলে → "F"
ধাপ ৩: গ্রেড প্রিন্ট করো
ধাপ ৪: শেষ
প্যাটার্ন ৩: Iterative Algorithm (পুনরাবৃত্তিমূলক অ্যালগরিদম)
কোনো শর্ত পূরণ না হওয়া পর্যন্ত একই ধাপ বারবার চলে।
উদাহরণ ৩.১: ১ থেকে n পর্যন্ত যোগফল
Algorithm: Sum_1_to_N
Input: n
Output: ১ থেকে n পর্যন্ত যোগফল
ধাপ ১: n ইনপুট নাও
ধাপ ২: sum = 0, i = 1
ধাপ ৩: যতক্ষণ (i <= n):
sum = sum + i
i = i + 1
ধাপ ৪: sum প্রিন্ট করো
ধাপ ৫: শেষ
উদাহরণ ৩.২: কোনো সংখ্যার গুণনীয়ক বের করা
Algorithm: Find_Factorial
Input: n
Output: n! (n এর factorial)
ধাপ ১: n ইনপুট নাও
ধাপ ২: result = 1, i = 1
ধাপ ৩: যতক্ষণ (i <= n):
result = result × i
i = i + 1
ধাপ ৪: result প্রিন্ট করো
ধাপ ৫: শেষ
উদাহরণ ৩.৩: Linear Search (তালিকায় উপাদান খোঁজা)
Algorithm: Linear_Search
Input: তালিকা arr[], n টি উপাদান, খোঁজার মান key
Output: অবস্থান অথবা "পাওয়া যায়নি"
ধাপ ১: arr, n, key ইনপুট নাও
ধাপ ২: i = 0
ধাপ ৩: যতক্ষণ (i < n):
যদি arr[i] == key হয়
প্রিন্ট করো "পাওয়া গেছে, অবস্থান:" i
শেষ
i = i + 1
ধাপ ৪: প্রিন্ট করো "পাওয়া যায়নি"
ধাপ ৫: শেষ
Module 4: বাস্তব প্রয়োগ
| বাস্তব উদাহরণ | কোন Algorithm ব্যবহার হয় |
|---|---|
| Google Maps-এ রুট খোঁজা | Shortest Path Algorithm (Dijkstra) |
| ATM থেকে টাকা তোলা | Conditional + Sequential |
| bKash-এ টাকা পাঠানো | Verification + Transaction Algorithm |
| Facebook Feed দেখানো | Recommendation Algorithm |
| ক্রিকেট DLS পদ্ধতি | Mathematical Algorithm |
| পরীক্ষার মেধা তালিকা | Sorting Algorithm |
Module 5: সাধারণ ভুল ও সতর্কতা
ভুল ১: অস্পষ্ট ধাপ লেখা
❌ ভুল:
ধাপ ১: সংখ্যাটা নাও
ধাপ ২: কিছু করো
ধাপ ৩: উত্তর দাও
✅ সঠিক:
ধাপ ১: ব্যবহারকারীর কাছ থেকে পূর্ণসংখ্যা n ইনপুট নাও
ধাপ ২: n এর বর্গ হিসাব করো: square = n × n
ধাপ ৩: square প্রিন্ট করো
ভুল ২: অসীম লুপ (যা কখনো শেষ হয় না)
❌ ভুল:
ধাপ ১: i = 1
ধাপ ২: i প্রিন্ট করো
ধাপ ৩: ধাপ ২-এ যাও (কখনো শেষ হবে না!)
✅ সঠিক:
ধাপ ১: i = 1
ধাপ ২: যতক্ষণ i <= 10:
i প্রিন্ট করো
i = i + 1
ধাপ ৩: শেষ
ভুল ৩: ধাপের ক্রম ভুল করা
❌ ভুল: (আগে ফলাফল দেখাও, পরে হিসাব করো)
ধাপ ১: sum প্রিন্ট করো
ধাপ ২: sum = a + b
✅ সঠিক:
ধাপ ১: sum = a + b
ধাপ ২: sum প্রিন্ট করো
Module 6: সুবিধা-অসুবিধা
| বিষয় | সুবিধা | অসুবিধা |
|---|---|---|
| Simple Algorithm | বোঝা সহজ | বড় সমস্যায় অকার্যকর |
| Complex Algorithm | দ্রুত কাজ করে | বোঝা কঠিন, লেখা জটিল |
| Iterative Algorithm | কম মেমরি লাগে | কখনো অসীম লুপে আটকে যেতে পারে |
| Recursive Algorithm | কোড ছোট | বেশি মেমরি লাগে |
🔁 নিজে পরীক্ষা করো
MCQ:
১. অ্যালগরিদমের কোন বৈশিষ্ট্যটি নিশ্চিত করে যে এটি একসময় শেষ হবে?
- ক) Input
- খ) Output
- গ) Finiteness ✓
- ঘ) Definiteness
২. নিচের কোনটি Sequential Algorithm-এর উদাহরণ?
- ক) দুটি সংখ্যার যোগফল ✓
- খ) সংখ্যা জোড় না বিজোড় নির্ধারণ
- গ) ১ থেকে ১০ পর্যন্ত যোগফল
- ঘ) সর্বোচ্চ সংখ্যা খোঁজা
৩. যদি কোনো Algorithm কখনো শেষ না হয়, তাহলে কোন বৈশিষ্ট্যটি ভঙ্গ হচ্ছে?
- ক) Input
- খ) Finiteness ✓
- গ) Output
- ঘ) Effectiveness
৪. Conditional Algorithm-এ কী থাকে?
- ক) শুধু ক্রমানুসারী ধাপ
- খ) শর্তের উপর ভিত্তি করে ভিন্ন পথ ✓
- গ) বারবার পুনরাবৃত্তি
- ঘ) কোনো ইনপুট নেই
৫. Factorial গণনার Algorithm কোন ধরনের?
- ক) Sequential
- খ) Conditional
- গ) Iterative ✓
- ঘ) Sequential এবং Conditional
সংক্ষিপ্ত প্রশ্ন:
৬. অ্যালগরিদমের ৫টি বৈশিষ্ট্য কী কী? প্রতিটির সংক্ষিপ্ত ব্যাখ্যা দাও।
৭. "দুটি সংখ্যার মধ্যে ছোটটি খুঁজে বের করো" — এর জন্য Algorithm লেখো।
📝 HSC পরীক্ষার প্রস্তুতি
১. তুমি প্রতিদিন সকালে উঠে স্কুলে যাওয়া পর্যন্ত যা করো — সেটা কি একটি Algorithm? কেন বা কেন না?
২. যদি একটি Algorithm-এ Finiteness না থাকে, তাহলে কম্পিউটারে কী সমস্যা হবে? বাস্তব উদাহরণ দিয়ে ব্যাখ্যা করো।
৩. Sequential, Conditional, এবং Iterative — এই তিন ধরনের Algorithm কি একসাথে ব্যবহার করা যায়? একটি বাস্তব উদাহরণ দাও।
🎯 অনুশীলন প্রশ্ন
সহজ: নিচের সমস্যার জন্য Algorithm লেখো: "একটি সংখ্যা ইনপুট নাও। সেটা ধনাত্মক কি ঋণাত্মক কি শূন্য — তা বলো।"
মাঝারি: "১ থেকে ১০০ পর্যন্ত সকল বিজোড় সংখ্যার যোগফল বের করো" — এর জন্য Algorithm লেখো।
কঠিন: "একটি তালিকায় n সংখ্যা আছে। সর্বোচ্চ ও সর্বনিম্ন সংখ্যা খুঁজে বের করো এবং তাদের পার্থক্য বলো" — এর জন্য Algorithm লেখো।
✅ সারাংশ
🎯 মনে রেখো:
- Algorithm = সমস্যা সমাধানের ধাপে ধাপে নির্দেশনা
- ৫ বৈশিষ্ট্য: Input, Output, Definiteness, Finiteness, Effectiveness
- ৩ ধরন:
- Sequential → ধাপে ধাপে, কোনো শর্ত নেই (রেসিপি)
- Conditional → শর্ত অনুযায়ী ভিন্ন পথ (যদি-তাহলে)
- Iterative → বারবার একই কাজ (লুপ)
- Algorithm লেখার আগে সমস্যাটা ভালো করে বোঝো
- প্রতিটি ধাপ স্পষ্ট ও সুনির্দিষ্ট হওয়া চাই
- Algorithm কোড নয় — এটা পরিকল্পনা
💡 পরীক্ষার টিপস: HSC-তে Algorithm লেখার সময় "ধাপ ১, ধাপ ২..." এভাবে নম্বর দিয়ে লিখবে। শেষে "শেষ" লিখতে ভুলবে না।