একটা সাধারণ আয়তক্ষেত্রের প্রতিসমতা (symmetry) আর তথ্য আদান-প্রদানের সময় ভুল শনাক্ত করা শুনতে সম্পর্কহীন মনে হলেও, এদের মধ্যে চমৎকার একটা সম্পর্ক আছে। আর এই সম্পর্ক বুঝতে আমাদের দরকার Group Theory, বিশেষ করে isomorphism বা সমরূপতার ধারণা।
একটা আয়তক্ষেত্র কল্পনা করি, যেটা বর্গক্ষেত্র নয়। আয়তক্ষেত্রটাকে এমনভাবে ঘোরাতে বা প্রতিফলিত করতে চাই, যাতে পরিবর্তনের পরেও সেটি আগের অবস্থানের সঙ্গে সম্পূর্ণ মিলে যায়।
এভাবে মোট চারটি transformation পাওয়া যায়:
- e (Identity): কিছুই পরিবর্তন না করা।
- r (Rotation): ১৮০° ঘোরানো।
- sₓ (Horizontal Reflection): অনুভূমিক অক্ষ বরাবর প্রতিফলন।
- sᵧ (Vertical Reflection): উল্লম্ব অক্ষ বরাবর প্রতিফলন।
এই চারটি transformation-এর সেটকে লিখতে পারি:

এখানে একটা সূক্ষ্ম ব্যাপার আছে। আয়তক্ষেত্রের চারটি কোণকে আলাদাভাবে চিহ্নিত করলে দেখা যাবে, এই transformation-গুলো প্রতিটি বিন্দুকে ভিন্নভাবে স্থানান্তরিত করে। যদিও শেষ পর্যন্ত আয়তক্ষেত্রের সামগ্রিক আকৃতি অপরিবর্তিত থাকে।
এখন প্রশ্ন হলো, এটাকে Group বলছি কেন?
গণিতে কোনো সেটের ওপর একটি operation সংজ্ঞায়িত থাকলে সেটি Group হওয়ার জন্য চারটি শর্ত পূরণ করতে হয়: closure, associativity, identity এবং inverse।
এখানে আমাদের operation হলো transformation composition, অর্থাৎ একটি transformation-এর পর আরেকটি প্রয়োগ করা।
প্রথমত, যেকোনো দুটি symmetry পরপর প্রয়োগ করলে আবার এই চারটির মধ্যেই একটি পাওয়া যায়। অর্থাৎ closure আছে।
দ্বিতীয়ত, transformation composition associative: (a ∘ b) ∘ c = a ∘ (b ∘ c)
তৃতীয়ত, e হলো identity, কারণ কোনো transformation-এর সঙ্গে e প্রয়োগ করলে সেটি অপরিবর্তিত থাকে।
চতুর্থত, প্রত্যেক transformation-এর inverse আছে। মজার ব্যাপার হলো, এখানে প্রত্যেকটি element নিজেরই inverse: e² = r² = sₓ² = sᵧ² = e
অর্থাৎ ১৮০° দুবার ঘোরালে কিংবা একই অক্ষ বরাবর দুবার প্রতিফলিত করলে আয়তক্ষেত্র আগের অবস্থায় ফিরে আসে।
এখন আরও একটা বিষয় লক্ষ করি। প্রথমে আয়তক্ষেত্রকে ১৮০° ঘুরিয়ে তারপর অনুভূমিক প্রতিফলন করলে যে ফল পাওয়া যায়, আগে প্রতিফলন করে পরে ঘোরালেও একই ফল পাওয়া যায়: r ∘ sₓ = sₓ ∘ r = sᵧ
একইভাবে, r ∘ sᵧ = sᵧ ∘ r = sₓ এবং sₓ ∘ sᵧ = sᵧ ∘ sₓ = r
অর্থাৎ transformation-গুলোর composition-এর ক্রম পরিবর্তন করলেও ফল পরিবর্তিত হচ্ছে না। এমন Group-কে বলা হয় Abelian Group।
আমাদের এই চারটি symmetry মিলে যে Group তৈরি হয়েছে, তার নাম Klein Four-Group, যা V₄ বা D₂ নামেও পরিচিত।
আপাতত এই Group-এর operation table, অর্থাৎ Cayley table-টি লক্ষ করি:
| ∘ | e | r | sₓ | sᵧ |
|---|---|---|---|---|
| e | e | r | sₓ | sᵧ |
| r | r | e | sᵧ | sₓ |
| sₓ | sₓ | sᵧ | e | r |
| sᵧ | sᵧ | sₓ | r | e |
এই table-টা মনে রাখি। কিছুক্ষণ পর একেবারে অন্য একটি সমস্যায় ঠিক একই algebraic structure খুঁজে পাব।
ধরা যাক, আমরা দুটি classical bit, a এবং b, পাঠাতে চাই। কিন্তু transmission-এর সময় noise-এর কারণে কোনো একটা bit flip হয়ে যেতে পারে। অর্থাৎ 0 হয়ে যেতে পারে 1, কিংবা 1 হয়ে যেতে পারে 0।
Receiver কীভাবে বুঝবে যে তথ্য পরিবর্তিত হয়েছে? একটি সহজ পদ্ধতি হলো দুটি information bit-এর সঙ্গে একটি অতিরিক্ত parity bit যুক্ত করা: (a,b) → (a,b,a ⊕ b)
এখানে ⊕ হলো XOR বা modulo-2 addition। ফলে চারটি বৈধ codeword পাওয়া যায়:
C = {000, 011, 101, 110}
| Information bits | Encoded word |
|---|---|
| 00 | 000 |
| 01 | 011 |
| 10 | 101 |
| 11 | 110 |
এই কোডটিকে বলা হয় classical binary [3,2,2] error-detecting code।
এখানে [n,k,d] notation-এর অর্থ হলো:
- n = 3: মোট তিনটি transmitted bit।
- k = 2: দুটি independent information bit।
- d = 2: minimum Hamming distance।
Hamming distance হলো দুটি binary string-এর মধ্যে যতগুলো অবস্থানে bit আলাদা, তার সংখ্যা।
যেমন, dₕ(000,011) = 2, dₕ(011,101) = 2
আমাদের কোডের যেকোনো দুটি ভিন্ন codeword-এর Hamming distance দুই। তাই minimum distance, d = 2।
লক্ষ করি, প্রতিটি codeword-এ 1-এর সংখ্যা জোড়। এই কারণেই একে even-parity code বলা হয়। এখন ধরা যাক, আমরা 011 পাঠিয়েছি।
Transmission-এর সময় প্রথম bit flip হয়ে গেল: 011 → 111
কিন্তু 111 আমাদের বৈধ codeword-এর সেট C-তে নেই। কারণ এতে তিনটি 1 আছে, অর্থাৎ parity বিজোড়, Receiver তাই বুঝতে পারবে, কোথাও একটা ভুল হয়েছে।
গাণিতিকভাবে এই পরীক্ষা করতে পারি syndrome বের করার মাধ্যমে। প্রাপ্ত word y = (y₁,y₂,y₃) হলে,
যদি s(y) = 0 হয়, parity constraint পূরণ হয়েছে। আর s(y) = 1 হলে error শনাক্ত হয়েছে।
যেকোনো একটি bit flip করলে syndrome 1 হবে। তাই কোডটি একটি arbitrary single-bit error detect করতে পারে। তবে কোন bit-এ ভুল হয়েছে, তা নির্দিষ্ট করে বলতে পারে না। ফলে একটি arbitrary single-bit error detect করতে পারলেও correct করতে পারে না।
এবার সবচেয়ে মজার অংশ।
আমাদের চারটি codeword আবার দেখি এবং এই সেটের ওপর operation হিসেবে bitwise XOR নিই।
প্রথমেই লক্ষ করি, প্রতিটি codeword নিজেরই inverse:
এখানে identity হলো 000, কারণ যেকোনো codeword-এর সঙ্গে 000 XOR করলে সেটি অপরিবর্তিত থাকে।
এছাড়া যেকোনো দুটি codeword XOR করলে আবার বৈধ codeword পাওয়া যায়। যেমন,
XOR associative এবং commutative। সুতরাং C সেটটিও XOR operation-এর অধীনে একটি Abelian Group! এখন এর Cayley table তৈরি করি:
| ⊕ | 000 | 011 | 101 | 110 |
|---|---|---|---|---|
| 000 | 000 | 011 | 101 | 110 |
| 011 | 011 | 000 | 110 | 101 |
| 101 | 101 | 110 | 000 | 011 |
| 110 | 110 | 101 | 011 | 000 |
একটু আগে দেখা আয়তক্ষেত্রের Cayley table-এর সঙ্গে কোনো মিল পাওয়া যাচ্ছে কি?
আমরা যদি নিচের correspondence নিই,
| Codeword | আয়তক্ষেত্রের Symmetry |
|---|---|
| 000 | e (Identity) |
| 011 | r (১৮০° Rotation) |
| 101 | sₓ (Horizontal Reflection) |
| 110 | sᵧ (Vertical Reflection) |
তাহলে দেখা যাবে, দুটি table-এর algebraic pattern একেবারে একই!
এটি শুধু element-গুলোর নাম পরিবর্তন নয়। Operation-ও একই structure অনুসরণ করছে।
যেমন, 011 ⊕ 101 = 110
আর symmetry-র ভাষায়, r ∘ sₓ = sᵧ
একইভাবে, 011 ⊕ 110 = 101
যার corresponding geometric operation: r ∘ sᵧ = sₓ
অর্থাৎ codeword-এর XOR এবং আয়তক্ষেত্রের symmetry composition একই algebraic নিয়ম অনুসরণ করছে।
এখানেই আসে Group Isomorphism।
দুটি Group G ও K-এর মধ্যে একটি bijective mapping φ: G → K যদি operation সংরক্ষণ করে, অর্থাৎ
তাহলে Group দুটি isomorphic।
আমাদের ক্ষেত্রে mapping-টি হলো:
এটি bijective এবং Cayley table অনুযায়ী প্রতিটি element-এর জোড়ার জন্য operation সংরক্ষণ করে।
সুতরাং, (C, ⊕) ≅ D₂
এখানে ≅ চিহ্নটি বোঝায় isomorphism, অর্থাৎ আমাদের error-detecting code-এর বৈধ codeword-গুলো XOR-এর অধীনে ঠিক একটি আয়তক্ষেত্রের symmetry group-এর মতো আচরণ করে! এখানে আমরা বলছি না যে codeword-গুলো নিজেরাই geometric rotation বা reflection। বরং এদের algebraic structure একই। এটাই isomorphism-এর সৌন্দর্য। সম্পূর্ণ আলাদা দুটি mathematical object, অথচ তাদের operation-এর নিয়ম এক।
কিন্তু Group Theory কীভাবে Error Detection ব্যাখ্যা করে?
এখন পর্যন্ত আমরা দেখেছি, বৈধ codeword-গুলোর Group আয়তক্ষেত্রের symmetry group-এর সঙ্গে isomorphic। কিন্তু প্রশ্ন থেকে যায়: এই Group Theory দিয়ে error detection-এর প্রক্রিয়াটাই কি ব্যাখ্যা করা সম্ভব?
উত্তর হলো, হ্যাঁ। তবে এবার আমাদের আরও দুটি ধারণার দরকার: subgroup এবং coset.
তিনটি bit দিয়ে মোট 2³ = 8টি binary string তৈরি করা সম্ভব:
XOR-এর অধীনে এরা সবাই মিলে একটি Abelian Group গঠন করে। আরও নির্দিষ্টভাবে,
G = (𝔽₂³, ⊕)
এখানে 𝔽₂ = {0,1} হলো দুই element-এর finite field, যেখানে যোগ ও গুণ modulo 2 অনুযায়ী হয়।
কিন্তু আমাদের বৈধ codeword মাত্র চারটি: C = {000, 011, 101, 110}
অর্থাৎ C হলো G-এর একটি subgroup।
কোনো Group-এর একটি subset যদি একই operation-এর অধীনে নিজেও Group হয়, তাকে subgroup বলা হয়। আমাদের C সেই শর্ত পূরণ করে।
একটি subgroup N-কে normal বলা হয় যদি প্রত্যেক g ∈ G-এর জন্য gN = Ng হয়। সাধারণভাবে non-Abelian Group-এ এই শর্তটি আলাদাভাবে যাচাই করতে হয়। কিন্তু আমাদের G Abelian, তাই এর প্রত্যেক subgroup স্বয়ংক্রিয়ভাবে normal।
সুতরাং, C ◁ G
এখন এই normal subgroup দিয়ে আমরা পুরো G-কে কয়েকটি ভাগে ভাগ করতে পারি। এই ভাগগুলোকে বলা হয় coset. কোনো a ∈ G-এর জন্য a + C হলো C-এর একটি coset। আমাদের ক্ষেত্রে যোগ বলতে XOR বোঝাচ্ছি অর্থাৎ,
প্রথম coset হলো C নিজেই। এবার a = 100 নিই, তাহলে,
অর্থাৎ পুরো G-কে দুটি আলাদা coset-এ ভাগ করতে পারি: প্রথম coset-এ রয়েছে সব even-parity word, আর দ্বিতীয়টিতে সব odd-parity word।
এখন ধরা যাক, একটি valid codeword c পাঠানো হয়েছে এবং error vector ε-এর কারণে receiver পেয়েছে y = c ⊕ ε. যদি ε একটি single-bit error হয়, তাহলে ε হতে পারে 100, 010 অথবা 001। মজার ব্যাপার হলো, এই তিনটি error vector-ই একই coset-এর সদস্য:
তাই যেকোনো একটি bit flip হলে transmitted codeword প্রথম coset থেকে দ্বিতীয় coset-এ চলে যায়।
উদাহরণস্বরূপ, 011 ⊕ 100 = 111
এখানে 011 ∈ C, কিন্তু 111 ∈ 100 + C।
Receiver যখন parity বা syndrome পরীক্ষা করে, তখন মূলত received word কোন coset-এ রয়েছে, সেটিই নির্ণয় করছে। অর্থাৎ error syndrome-কে আমরা coset membership-এর একটি algebraic representation হিসেবে বুঝতে পারি।
তবে একটি সীমাবদ্ধতা মনে রাখতে হবে। যদি দুটি bit একসঙ্গে flip হয়, তাহলে error vector নিজেই C-এর সদস্য হতে পারে। যেমন, 000 ⊕ 110 = 110
এখানে 110 একটি বৈধ codeword। ফলে error ঘটলেও syndrome শূন্য হবে। তাই parity ঠিক থাকলেই যে error ঘটেনি, এমন নিশ্চয়তা নেই। Minimum distance 2-এর এই কোডটি একটি arbitrary bit error শনাক্ত করার নিশ্চয়তা দেয়, দুটি নয়।
যেহেতু C একটি normal subgroup, তাই আমরা quotient group G/C তৈরি করতে পারি।
এই quotient group-এর element হলো C-এর coset-গুলো:
এখানে মাত্র দুটি element রয়েছে। তাই, G/C ≅ ℤ₂ = {0,1}
এটি বলছে, সব সম্ভাব্য received word-কে দুটি syndrome class-এ ভাগ করা যায়। Syndrome 0 হলে received word C-এর সদস্য। Syndrome 1 হলে সেটি অন্য coset-এর সদস্য। অর্থাৎ error syndrome শুধু একটি parity bit নয়। এটি quotient group-এর দুটি coset-এর মধ্যে পার্থক্য শনাক্ত করছে। একটি bit flip হলে coset পরিবর্তিত হয়, আর সেই পরিবর্তনই error detection সম্ভব করে।
আমরা শুরু করেছিলাম একটি সাধারণ আয়তক্ষেত্র দিয়ে।
সেখান থেকে পেলাম চারটি symmetry, Group-এর চারটি axiom, Abelian Group এবং Klein Four-Group।
এরপর দুটি classical bit-এর সঙ্গে একটি parity bit যুক্ত করে তৈরি করলাম একটি [3,2,2] error-detecting code।
Codeword-গুলোর ওপর XOR operation প্রয়োগ করে দেখলাম, সেটিও Klein Four-Group। আর isomorphism-এর মাধ্যমে বুঝলাম, আয়তক্ষেত্রের symmetry এবং codeword-গুলোর algebraic structure আসলে একই।
তারপর আরও এক ধাপ এগিয়ে subgroup, coset এবং quotient group ব্যবহার করে error syndrome-এর গাণিতিক ভিত্তি খুঁজে পেলাম।
একটি আয়তক্ষেত্রকে ১৮০° ঘোরানো, তিনটি bit XOR করা এবং transmission error শনাক্ত করা সম্পূর্ণ আলাদা কাজ। কিন্তু তাদের অন্তর্নিহিত গাণিতিক কাঠামোর মধ্যে গভীর সম্পর্ক রয়েছে।
Group Theory-এর সৌন্দর্য এখানেই। এটি শুধু কোনো বস্তুর symmetry শেখায় না; বরং আপাতদৃষ্টিতে সম্পর্কহীন সমস্যার মধ্যে লুকিয়ে থাকা একই algebraic structure চিনতে শেখায়।









মতামত জানান