বুলিয়ান অ্যালজেব্রা ও লজিক গেট
এই পাঠে যা শিখবেন
- বুলিয়ান অ্যালজেব্রার সংজ্ঞা এবং AND, OR, NOT অপারেশনের সঠিক আচরণ
- লজিক গেট কী, এবং ট্রুথ টেবিল দিয়ে একটি গেট/সার্কিট কীভাবে সম্পূর্ণরূপে বর্ণনা করা যায়
- ডেরাইভড গেট XOR ও XNOR — এদের সংজ্ঞা ও AND/OR/NOT-এর সাথে সম্পর্ক
- বুলিয়ান অ্যালজেব্রার সাতটি মৌলিক নিয়ম — Identity, Null, Idempotent, Complement, Commutative, Associative, Distributive
১ · বুলিয়ান অ্যালজেব্রা কী
বুলিয়ান অ্যালজেব্রাBoolean Algebraমাত্র দুটি মান (0/1) ও তিনটি মৌলিক অপারেশন (AND, OR, NOT) নিয়ে গঠিত একটি বীজগণিত — L02-L03-এর সংখ্যা-পদ্ধতির উপর দাঁড়িয়ে যুক্তিবিদ্যার ভিত্তি তৈরি করে। হলো এমন একটি বীজগণিত যা কেবল দুটি মান নিয়ে কাজ করে — 0 (False) ও 1 (True) — এবং তিনটি মৌলিক অপারেশন সংজ্ঞায়িত করে:
- ANDপ্রতীক ∧ — আউটপুট 1 হয় শুধুমাত্র যখন উভয় ইনপুট 1। (∧) — আউটপুট 1 হয় শুধুমাত্র যখন উভয় ইনপুট 1।
- ORপ্রতীক ∨ — আউটপুট 1 হয় যখন কমপক্ষে একটি ইনপুট 1। (∨) — আউটপুট 1 হয় যখন কমপক্ষে একটি ইনপুট 1।
- NOTপ্রতীক ¬ — একটি একক ইনপুটকে উল্টে দেয়, 0 হলে 1, 1 হলে 0। (¬) — একটি একক ইনপুটকে উল্টে দেয় (0↔1)।
২ · লজিক গেট ও ট্রুথ টেবিল
লজিক গেটLogic Gateএকটি বুলিয়ান অপারেশনের ফিজিক্যাল/সার্কিট বাস্তবায়ন — ট্রানজিস্টর দিয়ে তৈরি একটি ছোট্ট সার্কিট যা AND/OR/NOT-এর মতো একটি নির্দিষ্ট যুক্তি বাস্তবায়ন করে। হলো একটি বুলিয়ান অপারেশনের ফিজিক্যাল/সার্কিট বাস্তবায়ন — L01-এ যে AND ও XOR গেট ব্যবহার করে হাফ অ্যাডার বানানো হয়েছিল, সেটাই ছিল এই ধারণার একটি প্রিভিউ। প্রতিটি গেট/সার্কিট কী করে তা সম্পূর্ণরূপে বর্ণনা করার নিশ্চিত পদ্ধতি হলো একটি ট্রুথ টেবিলTruth Tableপ্রতিটি সম্ভাব্য ইনপুট কম্বিনেশন ও সংশ্লিষ্ট আউটপুট তালিকাভুক্ত করা একটি সম্পূর্ণ, নিঃশর্ত টেবিল। — প্রতিটি সম্ভাব্য ইনপুট কম্বিনেশন ও তার সংশ্লিষ্ট আউটপুট তালিকাভুক্ত করা একটি সম্পূর্ণ টেবিল। N-টি ইনপুটের জন্য টেবিলে ঠিক 2N সারি থাকবে (প্রতিটি সম্ভাব্য 0/1 কম্বিনেশনের জন্য একটি করে)।
৩ · ডেরাইভড গেট — XOR ও XNOR
মৌলিক তিনটি ছাড়াও দুটি ব্যবহারিকভাবে গুরুত্বপূর্ণ গেট আছে, যেগুলো AND/OR/NOT দিয়েই তৈরি করা সম্ভব (তাই এদের বলা হয় "ডেরাইভড," মৌলিক নয়) — XORExclusive ORআউটপুট 1 হয় শুধু যখন ইনপুট দুটি ভিন্ন — L01-এর হাফ অ্যাডারে এটিই "sum" নির্ধারণ করেছিল। (Exclusive OR) — আউটপুট 1 হয় শুধু যখন ইনপুটগুলো ভিন্ন (ইতিমধ্যে L01-এর হাফ অ্যাডারে ব্যবহৃত হয়েছে "sum" নির্ধারণে), আর XNORExclusive NORXOR-এর বিপরীত — আউটপুট 1 হয় শুধু যখন ইনপুট দুটি একই। (XOR-এর বিপরীত) — আউটপুট 1 হয় শুধু যখন ইনপুটগুলো একই।
৪ · বুলিয়ান অ্যালজেব্রার সাতটি মৌলিক নিয়ম
এই নিয়মগুলো সারা M1 জুড়ে বার বার ব্যবহৃত হবে, বিশেষ করে L05-এর এক্সপ্রেশন সিমপ্লিফিকেশনে — তাই এখানে নির্ভুলভাবে লিখে রাখা হলো:
| নিয়ম | AND (·) রূপ | OR (+) রূপ |
|---|---|---|
| Identity | A·1 = A | A+0 = A |
| Null | A·0 = 0 | A+1 = 1 |
| Idempotent | A·A = A | A+A = A |
| Complement | A·A' = 0 | A+A' = 1 |
| Commutative | A·B = B·A | A+B = B+A |
| Associative | (A·B)·C = A·(B·C) | (A+B)+C = A+(B+C) |
| Distributive | A·(B+C) = A·B+A·C | A+(B·C) = (A+B)·(A+C) |
এখানে A' মানে NOT(A)। লক্ষ্য করুন AND ও OR-এর নিয়মগুলো প্রায় সবসময় "জোড়ায়" আসে — একটির AND-রূপ থাকলে তার একটি OR-রূপও থাকে (এই প্রতিসাম্যকে বলা হয় duality, যা L05-এ De Morgan's Law-এর মূল ভিত্তি)।
# ৬টি মৌলিক/ডেরাইভড গেট বাস্তবায়ন + একটি যুক্ত ৩-ভ্যারিয়েবল এক্সপ্রেশনের সম্পূর্ণ ট্রুথ টেবিল
def AND(a, b): return a & b
def OR(a, b): return a | b
def NOT(a): return 1 - a
def XOR(a, b): return a ^ b
def XNOR(a, b): return NOT(XOR(a, b))
def NAND(a, b): return NOT(AND(a, b)) # L07-এ ইউনিভার্সাল গেট হিসেবে বিস্তারিত আসবে
print("মৌলিক ও ডেরাইভড গেটগুলোর ট্রুথ টেবিল")
print("A B | AND OR NOT(A) XOR XNOR NAND")
print("-" * 40)
for a in (0, 1):
for b in (0, 1):
print(f"{a} {b} | {AND(a,b)} {OR(a,b)} {NOT(a)} {XOR(a,b)} {XNOR(a,b)} {NAND(a,b)}")
print()
print("যুক্ত এক্সপ্রেশন F(A,B,C) = (A AND B) OR (NOT C) -- সম্পূর্ণ ট্রুথ টেবিল")
print("A B C | A.B NOT-C | F")
print("-" * 30)
for a in (0, 1):
for b in (0, 1):
for c in (0, 1):
ab = AND(a, b)
notc = NOT(c)
f = OR(ab, notc)
print(f"{a} {b} {c} | {ab} {notc} | {f}")
বুলিয়ান অ্যালজেব্রা হলো লজিক গেটের গাণিতিক ভাষা, আর ট্রুথ টেবিল হলো সেই ভাষায় লেখা একটি "স্পেসিফিকেশন" — যেকোনো জটিল এক্সপ্রেশনের আচরণ ট্রুথ টেবিল দিয়ে নিঃসন্দেহে যাচাই করা যায়। সাতটি বীজগাণিতিক নিয়ম এই একই সত্যকে হাতে-কলমে (algebraically) হ্যান্ডেল করার হাতিয়ার — L05-এ দেখবেন কীভাবে এগুলো দিয়ে জটিল এক্সপ্রেশন সরল করা যায়।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ XOR ও XNOR-কে "ডেরাইভড" গেট বলা হয় কেন — এরা কি AND/OR/NOT-এর মতো সমান গুরুত্বপূর্ণ মৌলিক গেট নয়?
গাণিতিকভাবে XOR সম্পূর্ণরূপে AND/OR/NOT দিয়ে প্রকাশযোগ্য — A XOR B = (A AND NOT-B) OR (NOT-A AND B) — তাই যুক্তিগতভাবে এটি "নতুন" কিছু যোগ করে না, শুধু একটি সুবিধাজনক শর্টহ্যান্ড। কিন্তু বাস্তব চিপ ডিজাইনে XOR-কে প্রায়ই একটি নিজস্ব ফিজিক্যাল গেট হিসেবেই তৈরি করা হয় — কারণ প্রতিবার তিনটি আলাদা গেট জোড়া লাগানোর চেয়ে একটি একক XOR গেট দ্রুততর ও কম জায়গা নেয়। তাই "গাণিতিকভাবে ডেরাইভড" আর "ফিজিক্যালি স্বতন্ত্র গেট" — দুটোই সত্য, একই সময়ে।
প্র ০২ বুলিয়ান অ্যালজেব্রার সাতটি নিয়ম মুখস্ত রাখা কি সত্যিই দরকার — ট্রুথ টেবিল দিয়েই তো সবকিছু যাচাই করা যায়?
একটি নির্দিষ্ট, ছোট এক্সপ্রেশনের জন্য ট্রুথ টেবিলই যথেষ্ট — সসীম সংখ্যক সারি ব্রুট-ফোর্স যাচাই করে ফেলা যায়। কিন্তু নিয়মগুলোর আসল কাজ ভিন্ন — এগুলো একটি এক্সপ্রেশনকে সাধারণভাবে, সিম্বলিকভাবে সরল করার হাতিয়ার, যেখানে টেবিল বানানো অব্যবহারিকভাবে বড় (যেমন ১০টি ভ্যারিয়েবল হলে 2¹⁰=1024 সারি)। ট্রুথ টেবিল "কী সত্য তা যাচাই করে," নিয়মগুলো "কীভাবে কম গেট দিয়ে একই সত্য বাস্তবায়ন করা যায় তা বের করে" — এই পার্থক্যই L05-এর মূল বিষয়।
প্র ০৩ উপরের F(A,B,C) = (A AND B) OR (NOT C) এক্সপ্রেশনে A=1, B=0, C=1 হলে ফলাফল কী হবে, এবং কেন?
A.B = AND(1,0) = 0 (কারণ B=0, AND-এর জন্য উভয় ইনপুট 1 হতে হয়)। NOT-C = NOT(1) = 0। তাই F = OR(0,0) = 0। এই সারিটি (A=1,B=0,C=1) কোডের প্রিন্ট করা ট্রুথ টেবিলে ঠিক এই ফলাফলই দেখাবে — গুরুত্বপূর্ণ শিক্ষা: A বা B যেকোনো একটি 0 হলেই A.B পুরো টার্মটি 0 হয়ে যায়, ঠিক Null নিয়মের (A·0=0) প্রতিফলন।
অনুশীলন
-
চিন্তা করুন: A=0, B=0, C=0 হলে F(A,B,C) = (A AND B) OR (NOT C)-এর মান হাতে-কলমে বের করুন, তারপর কোডের আউটপুটের সাথে মিলিয়ে দেখুন।
A.B = AND(0,0) = 0। NOT-C = NOT(0) = 1। তাই F = OR(0,1) = 1। কোডের ট্রুথ টেবিলের প্রথম সারি (A=0, B=0, C=0) ঠিক এই মানই দেখাবে — F=1।
-
পরীক্ষা করুন: এই পাঠের এক্সপ্রেশনে ৩টি ভ্যারিয়েবল (A,B,C) ছিল বলে ট্রুথ টেবিলে ৮টি সারি লাগলো। যদি ৫টি ভ্যারিয়েবল থাকতো (এখনো কোড পরিবর্তন করবেন না), টেবিলে কতগুলো সারি লাগতো, এবং এই বৃদ্ধির হার সম্পর্কে কী বলা যায়?
5 ভ্যারিয়েবলের জন্য 2⁵=32 সারি লাগতো — সাধারণভাবে N ভ্যারিয়েবলের জন্য 2N সারি, অর্থাৎ প্রতিটি নতুন ভ্যারিয়েবল যোগ হলে সারির সংখ্যা দ্বিগুণ হয়ে যায় (এক্সপোনেনশিয়াল বৃদ্ধি)। এই দ্রুত বৃদ্ধিই বড় এক্সপ্রেশনের জন্য শুধু ট্রুথ টেবিলের উপর নির্ভর করাকে অব্যবহারিক করে তোলে — বীজগাণিতিক নিয়ম (L05) ও গ্রাফিক্যাল K-map (L06) পদ্ধতি ঠিক এই সমস্যারই সমাধান দেয়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ বুলিয়ান অ্যালজেব্রা থেকে শুরু করে সিমপ্লিফিকেশন, K-map ও সম্পূর্ণ CPU ডিজাইন পর্যন্ত — সম্পূর্ণ সিলেবাস দেখুন।
- পূর্ববর্তী পাঠ L03 বাইনারি-ডেসিমেল কনভার্সন ও বেস কনভার্সন — এই পাঠের ভিত্তি হিসেবে যাওয়ার আগে দেখে নিন।
- পরবর্তী পাঠ L05 বুলিয়ান এক্সপ্রেশন সিমপ্লিফিকেশন ও De Morgan's Law — এই পাঠের সাতটি নিয়ম ব্যবহার করে জটিল এক্সপ্রেশন সরল করা।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems ও Computer Architecture — সব এক জায়গায়।