পর্ব – ২
গত পর্বে কোয়ান্টাম কম্পিউটারের মূলে যে কিউবিট তার সাথে আমাদের পরিচয় হয়েছে। সাধারণ কম্পিউটারের জন্য যেমন বিট – কোয়ান্টাম কম্পিউটারের তেমনি কিউবিট। শুধু একটা বিট দিয়ে যেমন সাধারণ কম্পিউটারের কাজ চলে না, ঠিক তেমনই একটা কিউবিট অসংখ্য দশায় থাকতে পারলেও কিন্তু শুধু একটা কিউবিট দিয়ে কোয়ান্টাম কম্পিউটারের কাজ চলবে না। তাই এবার একাধিক কিউবিটের দশা কিভাবে বোঝানো যাবে সেটা নিয়ে আলোচনা করা দরকার। প্রথমে দুটো কিউবিটের কথা বলবো – সেটা ভালো করে বুঝলে তার থেকে বেশি কিউবিট থাকলে ব্যপারটা কিরকম হয় বুঝতে খুব একটা অসুবিধা হবে না। তবে তারও আগে একটা কিউবিটের দশার কথাটা আরেকবার ঝালিয়ে নিলে সুবিধা হয় – তাহলে হয়তো জিনিসটা বুঝতে সুবিধা হবে।
খেয়াল করো – একটা কিউবিটের জন্য আমরা দুটো বিশেষ কেট দিয়ে শুরু করেছিলামঃ |0⟩ আর ∣1⟩। আগের বার বলেছি এই দশা বোঝাতে যে | ⟩ বন্ধনী ব্যবহার করা হয় সেটা এক বিশেষ ধরণের ভেক্টর – যাকে বলা হয় কেট। ভেক্টর কেন? না স্রেফ যোগ আর সংখ্যা দিয়ে গুণ করা যায় বলে। আরো বলেছিলাম যে এই কিউবিটের যে কোনো দশাকে একটা কেট দিয়ে বোঝানো যায় (এখানে কোনো কোয়ান্টাম বিশেষজ্ঞ আপত্তি তুলতেই পারেন – তাই আমি আগে থাকতে একটা কথা বলে রাখি – আমি আপাতত দশা বলতে “বিশুদ্ধ দশা” কে বোঝাচ্ছি, মিশ্র দশা – আর তার জন্য জরুরি ডেন্সিটি মেট্রিক্স ইত্যাদি নিয়ে আলোচনা আপাতত না করলেও চলবে)। এই কেট ∣x⟩ কে সবসময় ∣0⟩ আর ∣1⟩ এর রৈখিক সংমিশ্রণ হিসেবে লেখা যায়। কথাটা শুনতে গালভারী হলেও এর মানে স্রেফ এটুকুই – যে কোনো কেট ∣x⟩ এর জন্য দুটি জটিল সংখ্যা a আর b খুঁজে পাওয়া যাবে, যাতে আমরা লিখতে পারি
∣x⟩ = a∣0⟩ + b ∣1⟩
এই সংখ্যা দুটোর তাৎপর্য নিয়ে আগের পর্বে আলোচনা করেছি। আপাতত আমি যেদিকে দৃষ্টি আকর্ষণ করতে চাই সেটা হলো আমাদের দুটো বিশেষ কেট∣0⟩ আর ∣1⟩ দিয়ে সব এক-কিউবিট কেট কে তৈরি করা যায়। তাই আমরা বলি যে একটা কিউবিটের সবকটা কেট মিলিয়ে একটা দ্বিমাত্রিক লিনিয়ার ভেক্টর স্পেস তৈরি করে।
এবার আসি দুটো কিউবিটের কথায়। ধরা যাক দুটো কিউবিট যথাক্রমে ∣x⟩ আর ∣y⟩ দশায় আছে। এখানে একটা কথা ভালো করে বোঝা দরকার। আমরা যে এই মাত্র দুটো কেট ∣x⟩ আর ∣y⟩ এর কথা বললাম, এদের কিন্তু যোগ করে ∣x⟩ + ∣y⟩ তৈরি করা যায় না। ∣x⟩ আর ∣y⟩ দুটোই ভেক্টর বটে, কিন্তু তারা আলাদা আলাদা ভেক্টর স্পেসের সদস্য।
তাহলে তাদের যৌথ দশাকে বোঝাতে আমরা কোন ভেক্টর ব্যবহার করবো? যে ভেক্টর ব্যবহার করা হয় সেটাকে লেখা হয় সেটা হলো
∣x⟩ ⊗ ∣y⟩
এখানে দুটো ভেক্টরের মধ্যে একটা বিশেষ ধরনের “গুণ” করা হয়েছে (যার চিহ্ন ⊗)। এর নাম টেন্সর প্রোডাক্ট। তবে টেন্সর প্রোডাক্ট নাম দেখে ঘাবড়ে যাবার কোনো কারণ নেই – ∣x⟩ ⊗ ∣y⟩ মানে স্রেফ এই যে প্রথম কিউবিটের দশা ∣x⟩ আর দ্বিতীয়টার ∣y⟩।
ধরো, যৌথ দশাটা যদি∣0⟩ ⊗ ∣0⟩ হয়, তাহলে এই দুটো কিউবিটকে যদি দুটো আলাদা X-পোলারয়েড দিয়ে পাঠানো হয় (আমরা এখানে ধরে নিচ্ছি যে আমাদের কিউবিট দুটো আসলে দুটো ফোটন), তাহলে দুটো ফোটনই বেরিয়ে আসবে। কিন্তু যদি প্রথমটা ফোটনটাকে একটা X-পোলারয়েড, আর দ্বিতীয়টাকে Yপোলারয়েড দিয়ে পাঠানো হয়, তাহলে প্রথম ফোটনটা পার হবে, কিন্তু দ্বিতীয়টা হবে না।
আরেকটু জটিল উদাহরণ হিসেবে ধরা যাক
(∣0⟩ +∣1⟩)/√2 ⊗ (3∣0⟩ – 4∣1⟩)/5
ভেক্টরটার কথা। এটাকে খুলে
1/(5√2) [ 3∣0⟩ ⊗∣0⟩ – 4∣0⟩ ⊗ ∣1⟩ + 3 ∣1⟩ ⊗∣0⟩ – 4 ∣1⟩ ⊗ ∣1⟩ ]
লেখা যায়। বুঝতেই পারছো যে এই টেন্সর প্রোডাক্ট কিছুটা আমাদের সাধারণ গুণের মতোই। একটু ভাবলেই বোঝা যাবে যে দুটো কিউবিটের যৌথ দশা বোঝাবার জন্য যে কোনো ভেক্টরকে
∣0⟩ ⊗∣0⟩, ∣0⟩ ⊗ ∣1⟩, ∣1⟩ ⊗∣0⟩ আর ∣1⟩ ⊗ ∣1⟩
এই চারটে ভেক্টরকে দিয়ে লেখা যাবে – আমাদের এই সব ভেক্টর নিয়ে চার মাত্রার একটা লিনিয়ার ভেক্টর স্পেস তৈরি হবে।
এবার আমাদের উদাহরণ
1/(5√2) [ 3∣0⟩ ⊗∣0⟩ – 4∣0⟩ ⊗ ∣1⟩ + 3 ∣1⟩ ⊗∣0⟩ – 4 ∣1⟩ ⊗ ∣1⟩ ]
এর তাৎপর্য আরেকটু ভালো করে বোঝা যাক। যদি এই দশায় দুটি ফোটনকে দুটো X- পোলারয়েড দিয়ে পাঠানো হয় তাহলে দুটোই পেরোনোর সম্ভাবনা (3/5√2)^2, মানে ১৮%। প্রথম ফোটন যে পোলারয়েড দিয়ে যাবে সেটা ঘুরিয়ে Y অক্ষ বরাবর করে দিলেও দুটোই পেরোবার সম্ভাবনাও সেই ১৮%! কিন্তু প্রথম পোলারয়েডের অক্ষ X আর দ্বিতীয়টার Y বরাবর থাকলে সেই সম্ভাবনা হয়ে যাবে (4/5√2)^2, মানে ৩২%। দুটোর অক্ষ Y বরাবর হলেও সেই ৩২%। এই চারটে ক্ষেত্রে যদি ফোটন দুটো পোলারয়েড পার করে তাহলে তাদের দশা পালটে হয়ে যেতো যথাক্রমে ∣0⟩ ⊗ ∣0⟩, ∣1⟩ ⊗ ∣0⟩,∣0⟩ ⊗ ∣1⟩ আর ∣1⟩ ⊗ ∣1⟩।
তবে এখানে একটা কথা খেয়াল করা দরকার। যদি দুটো ফোটনকে দুটো পোলারয়েড দিয়ে না পাঠিয়ে শুধু দ্বিতীয়টাকে একটা X -পোলারয়েড দিয়ে পাঠানো হয় তাহলে সেটা পেরিয়ে যাবার সম্ভাবনা ৩৬%। কিন্তু এই ফোটনটা পেরোক, বা শোষিত হোক তাতে প্রথম ফোটনটার কিছু যায় আসে না। দুক্ষেত্রেই তার দশা (∣0⟩ +∣1⟩)/√2 থেকে যাবে। যদি দ্বিতীয় ফোটনের উপর অন্য কিছু করা হয় (যেমন X অক্ষের সাথে ২৩ ডিগ্রি কোণে অক্ষওয়ালা পোলারয়েড দিয়ে তাকে পাঠানো) তাহলে অবশ্যই তার পার হবার সম্ভাবনা পাল্টাবে – কিন্তু তাতে প্রথম ফোটনটার দশার কোনো হেরফের হবে না। ঠিক সেরকমই প্রথম ফোটনটাকে কোনো পোলারয়েড দিয়ে পাঠালে সেটার ভবিষ্যৎ যাই হোক না কেন, দ্বিতীয়টার দশা (3∣0⟩ – 4∣1⟩)/5 থেকে যাবে।
এবার তোমাদের মনে হতেই পারে যে এই কথাটা এতো জোর দিয়ে বলার কি আছে? এই দুটো ফোটন তো একে অপরের থেকে একেবারেই আলাদা। এমনকি একটা পৃথিবীতে আর আরেকটা অন্য কোনো গ্যালাক্সিতে থাকলেও এই ব্যাখ্যার কোনো পরিবর্তন হতো না। তাই দ্বিতীয় ফোটন পোলারয়েড পার করলো কি করলো না তাতে প্রথম ফোটনটার কিচ্ছু যায় আসে না – এমনটাই তো হওয়া স্বাভাবিক! আলাদা আলাদা ফোটনের আলাদা আলাদা দশা – একথাটা একদম ঠিক!
কিন্তু দুটো ফোটনের আরেকটা যৌথ দশার কথা ভেবে দেখা যাক। খেয়াল করো – আমাদের চারটে বিশেষ ভেক্টর ∣0⟩ ⊗∣0⟩, ∣0⟩ ⊗ ∣1⟩, ∣1⟩ ⊗∣0⟩ আর ∣1⟩ ⊗ ∣1⟩ কে যেকোনো চারটে জটিল সংখ্যা দিয়ে গুণ করার পর যোগ করে দিলে একটা দুই-কিউবিট কেট পাওয়া যাবে। এই সংখ্যা চারটেকে যদি আমরা 1/√2, 0, 0, 1/√2 নিই তাহলে পাবো
(∣0⟩ ⊗∣0⟩ + ∣1⟩ ⊗ ∣1⟩) /√2
যদি দুই-কিউবিটের যৌথ দশা এটা হয়, তাহলে কিন্তু ঘটনাটা একদম পাল্টে যায়। এক্ষেত্রে দ্বিতীয় ফোটনটার X-পোলারয়েড দিয়ে পেরোনোর সম্ভাবনা ৫০%। তবে এবার দ্বিতীয় ফোটনটা যদি পেরোয়, তাহলে প্রথম ফোটনের দশা সঙ্গে সঙ্গে হয়ে যাবে∣0⟩, আর দ্বিতীয় ফোটনটা না পেরোলে প্রথমটার দশা হয়ে যাবে ∣1⟩ ! তার মনে অন্য একটা গ্যালাক্সিতে একটা ফোটনের কি হলো সেটা আমাদের পৃথিবীর একটা ফোটনের প্রকৃতি ঠিক করে দেবে! এই যে তাৎক্ষণিক পরিবর্তন, তাতে মনে হতেই পারে যে অসীম গতিতে এক জায়গা থেকে আরেক জায়গায় বার্তা পৌঁছে যাচ্ছে – কিন্তু সেই ধাঁধার সমাধান নিয়ে বলতে বসলে সেটা আরেকটা লম্বা গল্প হয়ে যাবে। আপাতত শুধু এটুকু বলে ক্ষান্ত দিই যে এই যে বিশেষ ধর্ম আমরা দেখছি তাকে বলা হয় এন্ট্যাঙ্গলমেন্ট – এটা কোয়ান্টাম মেকানিক্সের সবচেয়ে বিস্ময়কর দিকগুলোর মধ্যে একটা।
এই ধর্মটা ফিজিক্সের দিক থেকে যতোই চমকপ্রদ হোক, এর পেছনের অঙ্কটা কিন্তু বেশ সোজা! আমাদের প্রথম দুই কিউবিট দশার উদাহরণ
1/(5√2) [ 3∣0⟩ ⊗∣0⟩ – 4∣0⟩ ⊗ ∣1⟩ + 3 ∣1⟩ ⊗∣0⟩ – 4 ∣1⟩ ⊗ ∣1⟩ ]
কে দুটো কিউবিটের আলাদা আলাদা দশা ভেক্টর দিয়ে লেখা যায় – আমরা তো শুরুতে ঠিক সেভাবেই – (∣0⟩ +∣1⟩)/√2 ⊗ (3∣0⟩ – 4∣1⟩)/5 – লিখেছিলাম !
কিন্তু দ্বিতীয় দুই-কিউবিট দশা, মানে
(∣0⟩ ⊗∣0⟩ + ∣1⟩ ⊗ ∣1⟩) /√2
কে এভাবে লেখা যায় না! যায় না যে – সেটা প্রমাণ করা কিন্তু বেশ সহজ! প্রমাণের পদ্ধতি আমরা সবাই স্কুলের জ্যামিতির থেকে চিনি! আমরা যদি এর উল্টোটাকে ঠিক বলে ধরে নিই, তাহলে নিশ্চয়ই লিখতে পারতাম যে
(∣0⟩ ⊗∣0⟩ + ∣1⟩ ⊗ ∣1⟩) /√2 = (a∣0⟩ +b∣1⟩) ⊗ (c∣0⟩ + d∣1⟩)
এটা হতে হলে
ac = bd = 1/√2 আর ad = bc = 0
হতে হবে! স্পষ্টতই সেটা অসম্ভব (ad = 0 হতে হলে হয় a নয়তো d কে শূন্য হতে হবে – কিন্তু তাহলে বাকি দুটো শর্ত মানা যাবে না) ! এইরকম যৌথ দশা যেটাকে আলাদা আলাদা কণার আলাদা দশা হিসেবে দেখা যায় না, সেটাই এন্ট্যাঙ্গলমেন্ট!
এরপর থেকে নাহয় এসব চিহ্নের ঝামেলা না রেখে বরং ∣x⟩ ⊗ ∣y⟩ এর জায়গায় ∣x⟩ ∣y⟩ লিখবো। গোলাবার সম্ভাবনা না থাকলে ∣x y⟩ ও লিখতে পারি।
তিনটি কিউবিট এর দশা যেমন
∣000⟩ , ∣010⟩, ∣011⟩,
∣100⟩, ∣101⟩, ∣110⟩,
∣111⟩
এই আটটার মধ্যে কোনো একটা হতে পারে, তেমনই
(∣000⟩ +∣010⟩+ ∣011⟩
+∣100⟩+ ∣101⟩+∣110⟩ +
∣111⟩)/√8
এরকম দশাতেও থাকতে পারে। একই সাথে বাইনারি সংখ্যার হিসেবে 0 থেকে 7 সবকটাকে বোঝানো দশায় থাকতে পারে এই তিনটে কিউবিট। খেয়াল করে দেখো – তিনটে ক্লাসিকাল বিটের ক্ষেত্রে তাদের দশা 0 থেকে 7 এর মধ্যে যে কোনো একটা হতে পারতো – একসাথে সবকটা দশায় থাকা শুধু কিউবিটের পক্ষেই সম্ভব।
N খানা কিউবিট একইভাবে একসাথে 2^N খানা সংখ্যা বোঝাতে পারে। এটাই কোয়ান্টাম কম্পিউটারের সুবিধে। একসাথে সবকটা সংখ্যাকে নিয়ে কাজ করা যায় – তাই কোয়ান্টাম কম্পিউটারের শক্তি অনেক বেশি।
তবে এখানে একটা গন্ডগোল আছে। এই যে কিউবিটগুলো একসাথে অনেকগুলো সংখ্যা বোঝাতে পারে সেটা সত্যি। কিন্তু কোয়ান্টাম মেকানিক্সের নিয়ম অনুযায়ী মাপার পর কোনো একটা সংখ্যাই পাওয়া যাবে। তাই কোয়ান্টাম কম্পিউটার ব্যবহার করে কোনো কাজ করা মোটেই সহজ নয়। খুব বুদ্ধি খাটিয়ে অ্যালগরিদম তৈরি করলে তবেই কোয়ান্টাম কম্পিউটারের শক্তি ব্যবহার করা সম্ভব হয়।
পরের পর্বে এরকম একটা অ্যালগরিদমের সাথে আমাদের পরিচয় হবে।
ক্রমশ
