পাঠ ৩৩ · ৪৪-এর মধ্যে · মডিউল ৭
Home / Courses / Discrete Mathematics / বুলিয়ান অ্যালজেব্রা

বুলিয়ান অ্যালজেব্রা ও লজিক গেট

Boolean algebra & logic gates
৮ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • বুলিয়ান অ্যালজেব্রার মূল নিয়মগুলো এবং L04-এর যৌক্তিক সমতুল্যতার সাথে তাদের সরাসরি সম্পর্ক
  • সাতটি প্রধান লজিক গেটের ট্রুথ টেবিল — AND, OR, NOT, NAND, NOR, XOR, XNOR
  • কেন NAND গেট "functionally complete" — এবং কীভাবে NOT ও AND শুধু NAND দিয়ে তৈরি হয়
  • একটি ট্রুথ টেবিল থেকে Sum-of-Products (SOP) এক্সপ্রেশন বানানো

১ · বুলিয়ান অ্যালজেব্রা — প্রপোজিশনাল লজিকের আরেক রূপ

Boolean AlgebraBoolean Algebraএকটি গাণিতিক কাঠামো যেখানে ভ্যারিয়েবল শুধু দুটি মান নিতে পারে — 0 ও 1 — এবং তিনটি মূল অপারেশন আছে: AND (·), OR (+), NOT (‾)। ডিজিটাল সার্কিট ডিজাইনের ভিত্তি। মূলত L01-04-তে শেখা প্রপোজিশনাল লজিকেরই আরেকটি রূপ — শুধু নোটেশন আলাদা। T/F-এর বদলে 1/0, ∧-এর বদলে · (বা AND), ∨-এর বদলে + (বা OR), ¬-এর বদলে ‾ (বা NOT)।

মূল নিয়মগুলো (L04-এর সাথে সরাসরি সমান্তরাল)

Identity: A·1=A, A+0=A  ·  Domination: A·0=0, A+1=1  ·  Idempotent: A·A=A, A+A=A  ·  Commutative: A·B=B·A, A+B=B+A  ·  Associative: (A·B)·C=A·(B·C)  ·  Distributive: A·(B+C)=(A·B)+(A·C), A+(B·C)=(A+B)·(A+C)  ·  Absorption: A+(A·B)=A  ·  De Morgan's: $\overline{A \cdot B} = \overline{A} + \overline{B}$, $\overline{A + B} = \overline{A} \cdot \overline{B}$

লক্ষ্য করুন — এগুলো হুবহু L04-এর ডিস্ট্রিবিউটিভ ল ও ডি মরগ্যানের নিয়মের সাথে মিলে যায়, শুধু ∧→·, ∨→+, ¬→‾ প্রতিস্থাপন করে।

২ · লজিক গেট — সাত ধরনের ট্রুথ টেবিল

একটি লজিক গেটLogic Gateএকটি ডিজিটাল সার্কিট উপাদান যা এক বা একাধিক বাইনারি ইনপুট নিয়ে একটি বুলিয়ান অপারেশন প্রয়োগ করে একটি বাইনারি আউটপুট দেয়। হলো একটি বুলিয়ান অপারেশনের ফিজিক্যাল বাস্তবায়ন — এটাই প্রতিটি প্রসেসর, RAM চিপ এবং মাইক্রোকন্ট্রোলারের ভেতরের সবচেয়ে ছোট নির্মাণ-উপাদান।

AND (A·B)
উভয় ইনপুট 1 হলেই আউটপুট 1: (0,0)→0, (0,1)→0, (1,0)→0, (1,1)→1
OR (A+B)
অন্তত একটি ইনপুট 1 হলেই আউটপুট 1: (0,0)→0, (0,1)→1, (1,0)→1, (1,1)→1
NOT (Ā)
ইনপুট উল্টে দেয়: 0→1, 1→0
NAND
AND-এর বিপরীত: (0,0)→1, (0,1)→1, (1,0)→1, (1,1)→0
NOR
OR-এর বিপরীত: (0,0)→1, (0,1)→0, (1,0)→0, (1,1)→0
XOR (⊕)
ঠিক একটি ইনপুট 1 হলে আউটপুট 1: (0,0)→0, (0,1)→1, (1,0)→1, (1,1)→0
XNOR
XOR-এর বিপরীত — উভয় ইনপুট সমান হলে আউটপুট 1: (0,0)→1, (0,1)→0, (1,0)→0, (1,1)→1

৩ · NAND — একাই যথেষ্ট (Functionally Complete)

একটি বিস্ময়কর তথ্য: শুধু NAND গেট ব্যবহার করে — অন্য কোনো গেট ছাড়াই — যেকোনো বুলিয়ান ফাংশন তৈরি করা সম্ভব। একেই বলে NAND functionally completeFunctionally Completeএকটি অপারেশন (বা অপারেশনের সেট) functionally complete যদি সেটি দিয়ে যেকোনো সম্ভাব্য বুলিয়ান ফাংশন তৈরি করা যায়। NAND এবং NOR উভয়েই এককভাবে functionally complete। — এই কারণেই বাস্তব চিপ ডিজাইনে NAND গেট এত গুরুত্বপূর্ণ (উৎপাদন সহজ ও সস্তা)।

প্রমাণ — NOT ও AND শুধু NAND দিয়ে

$\overline{A} = \text{NAND}(A, A)$ — একটি ইনপুটকে নিজের সাথে NAND করলে তা NOT-এর সমান।
$A \cdot B = \overline{\text{NAND}(A,B)} = \text{NAND}(\text{NAND}(A,B), \text{NAND}(A,B))$ — NAND-এর আউটপুটকে আবার নিজের সাথে NAND করলে (অর্থাৎ উল্টে দিলে) তা AND-এর সমান। OR-ও একইভাবে De Morgan's ব্যবহার করে NAND থেকে বানানো যায় (এখানে দেখানো হলো না, চিন্তা করে দেখুন কীভাবে সম্ভব)।

Python
import itertools

def nand(a, b):
    return not (a and b)

def NOT(a):
    return nand(a, a)

def AND(a, b):
    return NOT(nand(a, b))

for a, b in itertools.product([True, False], repeat=2):
    print(f"a={a}, b={b} -> NAND={nand(a,b)}, NOT(a) via NAND={NOT(a)}, AND(a,b) via NAND={AND(a,b)}")

# Python-এর native not/and-এর সাথে মিলিয়ে যাচাই
match = all(
    NOT(a) == (not a) and AND(a, b) == (a and b)
    for a, b in itertools.product([True, False], repeat=2)
)
print()
print("সব ইনপুটে NAND-ভিত্তিক NOT ও AND মিলেছে:", match)

    

৪ · ট্রুথ টেবিল থেকে Sum-of-Products (SOP)

যেকোনো ট্রুথ টেবিল থেকে সরাসরি একটি বুলিয়ান এক্সপ্রেশন লেখা যায় — যেসব সারিতে আউটপুট 1, সেগুলোর AND-টার্ম নিয়ে OR করে দিলেই হয়। একে বলে Sum-of-Products (SOP)Sum-of-Productsএকটি বুলিয়ান এক্সপ্রেশন লেখার ফর্ম যেখানে একাধিক AND-টার্মকে (products) OR (sum) দিয়ে যোগ করা হয় — প্রতিটি টার্ম ট্রুথ টেবিলের একটি "output=1" সারির সাথে মিলে যায়। — কারণ এটি "products (AND-টার্ম) যোগ (sum/OR) করা"।

উদাহরণ — XOR-এর ট্রুথ টেবিল: (A,B)=(0,1)→1 এবং (1,0)→1, বাকি দুই সারিতে আউটপুট 0। তাই $F(A,B) = \overline{A}B + A\overline{B}$ — এই এক্সপ্রেশনটিই XOR-এর SOP রূপ, যাচাই করলে দেখা যাবে ঠিক ওই দুই সারিতেই এটি 1 হয়।

SOP পদ্ধতি ডিজিটাল সার্কিট ডিজাইনের প্রথম ধাপ — যেকোনো লজিক্যাল স্পেসিফিকেশন (ট্রুথ টেবিল আকারে) থেকে সরাসরি একটি বাস্তবায়নযোগ্য বুলিয়ান এক্সপ্রেশন পাওয়া যায়, যা পরে AND/OR/NOT (বা শুধু NAND) গেট দিয়ে বাস্তবায়ন করা যায়।
মূল কথা · Key takeaway

বুলিয়ান অ্যালজেব্রা কোনো নতুন গণিত নয় — এটি L01-M1-এর প্রপোজিশনাল লজিকেরই ভিন্ন ভাষা, যা সরাসরি ফিজিক্যাল সার্কিটে বাস্তবায়িত হয়। NAND-এর মতো একটি একক গেট দিয়ে সব কিছু তৈরি করা যায় জেনে বোঝা যায় কেন আধুনিক প্রসেসর বিলিয়ন বিলিয়ন ট্রানজিস্টর দিয়ে তৈরি হলেও তাদের ভিত্তি এত সরল।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ De Morgan's ল বুলিয়ান অ্যালজেব্রায় ($\overline{A \cdot B} = \overline{A} + \overline{B}$) এবং প্রপোজিশনাল লজিকে (L04-এ, $\neg(p \land q) \equiv \neg p \lor \neg q$) — এই দুটো আসলে কি একই জিনিস?

হ্যাঁ, সম্পূর্ণভাবে একই। শুধু নোটেশন আলাদা — $A,B$ ভ্যারিয়েবলকে $p,q$ প্রপোজিশন দিয়ে, $\cdot$ কে $\land$ দিয়ে, $+$ কে $\lor$ দিয়ে, এবং overline কে $\neg$ দিয়ে প্রতিস্থাপন করলেই একটি অন্যটিতে পরিণত হয়।

এটি কাকতালীয় নয় — বুলিয়ান অ্যালজেব্রা মূলত প্রপোজিশনাল লজিকেরই একটি বিমূর্ত (abstract) সংস্করণ, যেখানে "সত্য/মিথ্যা"-কে "1/0" দিয়ে প্রতিস্থাপন করা হয়েছে যাতে এটি সরাসরি ইলেকট্রনিক সার্কিটে (ভোল্টেজ হাই/লো) বাস্তবায়ন করা যায়। George Boole ১৮৫৪ সালে যখন এই অ্যালজেব্রা তৈরি করেন, তখন তিনি আসলে লজিককেই গণিতের ভাষায় লিখছিলেন — প্রায় ১০০ বছর পর ক্লড শ্যানন দেখান এটি দিয়ে ইলেকট্রিক্যাল সার্কিটও ডিজাইন করা যায়।

প্র ০২ NOR গেটও কি NAND-এর মতো একাই functionally complete? যদি হ্যাঁ, তাহলে কেন বাস্তব চিপে NAND-ই বেশি জনপ্রিয়?

হ্যাঁ, NOR-ও একাই functionally complete — একই যুক্তিতে: $\overline{A} = \text{NOR}(A,A)$ এবং $A + B = \overline{\text{NOR}(A,B)}$। তাত্ত্বিকভাবে NAND ও NOR সমান শক্তিশালী।

বাস্তব চিপ প্রযুক্তিতে (CMOS) NAND গেট NOR-এর চেয়ে দ্রুত ও কম জায়গা নেয় — কারণ CMOS-এ NAND বাস্তবায়ন করতে সিরিজে থাকা transistor-গুলোর electrical resistance NOR-এর প্যারালাল বাস্তবায়নের চেয়ে কম, ফলে সিগন্যাল দ্রুত propagate করে। এই একেবারে ফিজিক্যাল ইঞ্জিনিয়ারিং কারণেই NAND শিল্পে বেশি ব্যবহৃত হয়, গণিতের কোনো অসামঞ্জস্যতার কারণে নয়।

প্র ০৩ একটি ট্রুথ টেবিলে যদি সব সারিতে আউটপুট 0 হয়, তাহলে SOP এক্সপ্রেশন কী হবে?

এই বিশেষ ক্ষেত্রে standard SOP পদ্ধতি (output=1 সারিগুলো নিয়ে) কোনো টার্ম দেবে না — কারণ কোনো সারিতেই আউটপুট 1 নেই। ফাংশনটি নিজেই একটি ধ্রুবক ফাংশন $F=0$ (সবসময় মিথ্যা/false) — এটি বুলিয়ান অ্যালজেব্রার contradiction-এর সমতুল্য, যা L02-এ দেখেছেন প্রপোজিশনাল লজিকে।

একইভাবে যদি সব সারিতে আউটপুট 1 হতো, ফাংশনটি হতো ধ্রুবক $F=1$ (সবসময় সত্য) — L02-এর tautology-এর সমতুল্য। SOP পদ্ধতি এই দুই প্রান্তিক ক্ষেত্রেও ধারণাগতভাবে সামঞ্জস্যপূর্ণ, শুধু আলাদাভাবে হ্যান্ডেল করতে হয়।

অনুশীলন

  1. হাতে হিসাব করুন: XNOR গেটের SOP এক্সপ্রেশন লিখুন (ট্রুথ টেবিল: (0,0)→1, (0,1)→0, (1,0)→0, (1,1)→1)।

    output=1 এমন দুটি সারি: (A,B)=(0,0) এবং (1,1)। তাই SOP: $F(A,B) = \overline{A}\,\overline{B} + AB$। এটিই XNOR-এর মানক এক্সপ্রেশন — লক্ষ্য করুন এটি XOR-এর ($\overline{A}B + A\overline{B}$) ঠিক পরিপূরক (complement)।

  2. কোড চালিয়ে দেখুন: উপরের কোড সেলে AND-এর মতো করে একটি OR(a, b) ফাংশন লিখুন যা শুধু nand() ব্যবহার করে, তারপর Python-এর native or-এর সাথে সব ইনপুটে মিলিয়ে দেখুন।

    De Morgan's ব্যবহার করে: $A+B = \overline{\overline{A}\cdot\overline{B}} = \text{NAND}(\text{NOT}(A), \text{NOT}(B))$। Python-এ: def OR(a, b): return nand(NOT(a), NOT(b))। সব ৪টি ইনপুট কম্বিনেশনে এটি Python-এর native or-এর সাথে মিলবে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
জেনারেটিং ফাংশন পরিচিতি