কোয়ান্টাম গণক

কোয়ান্টাম গণক

আনন্দ দাশগুপ্ত
অধ্যাপক, ভৌত বিজ্ঞান বিভাগ, আই.আই.এস.ই.আর , কলকাতা
Posted on ১৬ নভেম্বর, ২০২৫

(পর্ব ৩)

আগের দুটো পোস্টে আমরা প্রথমে একটা কিউবিট আর তার পর একাধিক কিউবিটের কোয়ান্টাম ছবি কিরকম হবে সেটা নিয়ে কিছুটা আলোচনা করেছি। এবার সময় এসেছে কোয়ান্টাম কম্পিউটারের কার্যকরীতার মূলে যা – সেই কোয়ান্টাম অ্যালগরিদমগুলো নিয়ে কথা বলার। আগেই বলেছি যে কোয়ান্টাম মেকানিক্সের দৌলতে বহু-কিউবিট সিস্টেমের পক্ষে একই সঙ্গে অনেকগুলো সংখ্যাকে নিয়ে কাজ করা সম্ভব – কিন্তু ঝামেলা হচ্ছে যে মাপলে কিন্তু আমরা একটাই সংখ্যা পাবো। তাই খুব বুদ্ধি খাটালে তবেই কোয়ান্টামের ক্ষমতাকে ঠিক করে ব্যবহার করা যাবে। এরই ফসল হচ্ছে কোয়ান্টাম অ্যালগরিদম। প্রচুর খেটেখুটে এগুলোকে বের করতে হয়। তবে একবার কেউ ভেবে একটা অ্যালগরিদম বের করলে সেটা বোঝাটা অতোটা শক্ত নয়। সেই ভরসাতেই আমি এই পোস্ট লিখতে বসেছি।

সমস্যা হলো – এবার আমাদের আরো অনেক বেশি করে অঙ্কের সাহায্য নিতে হবে। এই অঙ্ক বোঝা খুব একটা শক্ত নয় – কিন্তু ঝামেলা হলো, ফোনের কিবোর্ড দিয়ে এই মাধ্যমে, মানে ফেসবুকে অঙ্ক লেখা বেশ শক্ত। তবু, চেষ্টা করে দেখা যাক।

খুব বেশি উচ্চাশা না রেখে বরং সবচেয়ে সহজ কোয়ান্টাম কম্পিউটেশন অ্যালগরিদম ব্যাখ্যা করা যাক। এর নাম ডয়েশ অ্যালগরিদম। ১৯৮৫ সালে ডেভিড ডয়েশ (David Deutsch) এটা আবিষ্কার করেছিলেন। এটা বোঝার জন্য যে পৃষ্ঠভূমি দরকার প্রথমে সেটার কথা বলছি।

প্রথমে, ডয়েশ যে সমস্যাটার সমাধান করেছিলেন সেটা বলে নি। আমরা জানি যে একটি বাইনারি সংখ্যা দুটি মান নিতে পারেঃ 0 আর 1। এবার একটি ফাংশনের কথা ভাবা যাক – যার আর্গুমেন্ট একটা বাইনারি সংখ্যা আর ফলও একটা বাইনারি সংখ্যা। এরকম চারটি ফাংশন থাকতে পারে। তার মধ্যে প্রথম দুটি হলো কনস্ট্যান্ট ফাংশনঃ

১. f(0) = 0, f(1) = 0
২. f(0) = 1, f(1) = 1

বাকি যে দুটি ফাংশন হতে পারে তাদের বলা হয় “ব্যালান্সড”

৩. f(0) = 1, f(1) = 0
৪. f(0) = 0, f(1) = 1

ডয়েশ অ্যালগরিদম যে প্রশ্নের উত্তর দেয় তা হলো – কোনো অজানা ফাংশন দেওয়া থাকলে সেটা কতো কমবার কষে সেটা কনস্ট্যান্ট না ব্যালান্সড বের করা যাবে? সনাতন অংকের নিয়ম অনুযায়ী ফাংশনটাকে দুবার কষতেই হবে। f(0) আর f(1) দুটো পরপর না কষলে তারা সমান, না বিপরীত সেটা জানা যাবে না। কিন্তু ডয়েশ দেখিয়েছেন যে কোয়ান্টাম কম্পিউটারের পক্ষে একবার ফাংশনটা কষেই এর উত্তর দেওয়া সম্ভব।

সনাতন হিসেবে দুবার কষতে হয় – কোয়ান্টাম হিসেবে একবার । তাহলে কোয়ান্টাম কম্পিউটারের শক্তি এখানে বেশি – সেটা দেখাই যাচ্ছে। দুবারের থেকে কমে একবার – এটা শুনলে খুব একটা সাংঘাতিক সুবিধা মনে নাই হতে পারে। তবে ডয়েশ অ্যালগরিদমের এক বড়ো ভাই আছে – যার নাম ডয়েশ-যোসজা অ্যালগরিদম। তাতে যে ফাংশন f এর কথা বলা হয় সেটার n খানা বাইনারি সংখ্যা আর্গুমেন্ট আছে – আর ফল হচ্ছে একটা বাইনারি সংখ্যা। এরকম ফাংশনের মোট 2^n খানা আলাদা আলাদা ইনপুট হতে পারে। ধরা যাক আমরা আগে থেকেই জানি যে আমাদের ফাংশনটা হয় কনস্ট্যান্ট – সব ইনপুটেই একই উত্তর দেয়, নয়তো ব্যালান্সড – অর্ধেক সংখ্যক ইনপুটের জন্য 0 দেয় আর বাকি অর্ধেকের জন্য 1 (একটা আর্গুমেন্ট থাকলে ফাংশনকে হয় কনস্ট্যান্ট, নয়তো ব্যালান্সড হতেই হতো। একাধিক আর্গুমেন্ট থাকলে এর বাইরেও অন্যরকম ফাংশন থাকবে – সেগুলো নিয়ে আমরা এখানে কথা বলছি না)। এবার প্রশ্নটা হলো এরকম একটা অজানা ফাংশন দেওয়া থাকলে সবচেয়ে কম কতোবার সেটা কষে বোঝা যাবে সেটা কোন দলে পড়ে। এটা সহজেই বোঝা যায় যে সনাতন উপায়ে 2^n /2 আলাদা ইনপুটের জন্য কষলেও কাজ নাও হতে পারে। প্রত্যেকবার উত্তর 0 হলেও হলফ করে বলা যায় না যে এই ফাংশনটা কনস্ট্যান্ট – অন্তত আরেকবার কষতে হবে। পক্ষান্তরে ডয়েশ-যোসজা অ্যালগরিদম এর উত্তর বের করতে হলে ফাংশনটা একবার কষলেই হয়। 2^n /2+1 এর থেকে কমে একবার – এই সাশ্রয়টা নিশ্চয়ই চোখে পড়ার মতো। যদি n খুব বড়ো না হয়ে স্রেফ 10 হয়, তাহলেও সনাতন উপায়ে 513 বার ফাংশনটা কষতে হতো – তার থেকে কোয়ান্টাম কম্পিউটারের একবার নিশ্চয়ই চোখে পড়ার মতো!

আপাতত ডয়েশ অ্যালগরিদমের কথায় ফেরা যাক। আরেকটা অঙ্কের ধাপ বাকি আছে – সেটা সেরে ফেলা যাক। সত্যি-মিথ্যা, ঠিক-ভুল বা 0-1 এর জগতে অঙ্ককে আমরা বুলিয়ান অ্যালজেব্রা বলে থাকি। এই বীজগণিতের একটা বিশেষ কাজ এর নাম হলো এক্সর (XOR) – exclusive OR। a XOR b, a⊕b, এর মান তখনই 1 হবে যখন তার দুটি উপাদান a আর b বিপরীত (হয় a=0, b=1, নাহয় a=1, b=0) । সহজেই দেখা যায় যে (a⊕b)⊕b=a। এর ভাষায় বললে, কোন এক বাইনারি সংখ্যার ফাংশন f কনস্ট্যান্ট হলে আমরা পাবো f(0)⊕f(1)=0, আর ব্যালান্সড হলে f(0)⊕f(1)=1।

এবার আসি আসল কথায় – কোনো কোয়ান্টাম কম্পিউটারের কাজকে মোটামুটি তিনভাগে ভাঙ্গা যায়

১। প্রাথমিক দশা তৈরি করা
২। দশাকে সময়ের সাথে যেরকম দরকার সেভাবে বিবর্তিত হতে দেওয়া।
৩। পরিমাপ করা।

এখানেই কাজ থামে না – পরিমাপ থেকে যে উত্তর দরকার সেটা বের করার কাজেও যথেষ্ট খাটুনি থাকে – কিন্তু সেটার জন্য কোয়ান্টাম কম্পিউটার লাগে না – তাই সেটা নিয়ে আপাতত আলোচনা করছি না।

সময়ের সাথে বিবর্তনের বিষয়ে একটা গুরুত্বপূর্ণ কথা আছে – কোয়ান্টাম মেকানিক্স আপাতভাবে গন্ডগোলের হলেও তার অঙ্কটা আসলে খুব সোজা। এখানে বিবর্তনের নিয়ম রৈখিকঃ |a⟩ যদি বিবর্তিত হয়ে |a’⟩ হয়, আর |b⟩ হয় |b’⟩, তাহলে u|a⟩ + v|b⟩ হবে u|a’⟩ + v|b’⟩। আদতে শুধু বিবর্তনের জন্য নয়, প্রায় সবক্ষেত্রেই কোয়ান্টাম মেকানিক্স দশা পরিবর্তনের জন্য এরকম রৈখিক সূত্র কাজে লাগে। আমরা বলি – দশা ভেক্টরের উপর একটা রৈখিক বা লিনিয়ার অপারেটর কাজ করছে, যার ধর্মই হলো

O(u|a⟩ + v|b⟩) = u O(|a⟩) + v O(|b⟩)

কোয়ান্টাম মেকানিক্সের প্রায় পুরোটা জুড়েই এরকম রৈখিক অপারেটরের খেলা।

বিবর্তন যে শুধু রৈখিক তা নয় – তার আরো কিছু শর্ত আছে। কোয়ান্টাম মেকানিক্স অনুযায়ী একটা দশা ভেক্টর u|0⟩ + v|1⟩ এর দৈর্ঘ্য (আসলে দৈর্ঘ্যের বর্গ) হলো |u|^2+|v|^2 – এই সংখ্যাটা বিবর্তনের ফলে পালটায় না। তার উপর বিবর্তনকে উলটো দিকে চালনা করা যায় – তাই বিবর্তন বোঝাতে যে অপারেটর U আমরা ব্যবহার করি, সেটার বিপরীত অপারেটর (ইনভার্স অপারেটর) থাকতে হবে। তবে এই ধর্মটা আলাদা করে না বললেও চলে – কোনো রৈখিক অপারেটর যদি যেকোনো ভেক্টরের দৈর্ঘ্য না পালটায় – তাহলে তাকে উলটে দেওয়া সবসময়ই সম্ভব। এটা প্রমাণ করা বেশ সহজ। যাই হোক, এই সব ধর্ম মিলিয়ে আমরা এই ধরণের অপারেটরের নাম দিই ইউনিটারি – সময়ের সাথে বিবর্তনকে তাই ইউনিটারি ইভোলিউশন বলা হয়।

বোঝার (এবং বাস্তবে রূপায়িত করার) সুবিধার জন্য কোনো কোয়ান্টাম কম্পিউটারের সময়ের বিবর্তনকে অনেকগুলো ছোট ছোট ধাপে ভেঙ্গে নেওয়া হয় – প্রত্যেক ধাপেই ইউনিটারি ইভোলিউশন হয় আর এক একটা ধাপে হয়তো অল্প কিছু কিউবিটের দশা পালটে যায় – বাকিগুলোর নয়। সনাতন কম্পিউটারের ডিজটাল গেটের মতোই এখানে এই ছোট ধাপগুলোকে (বা আরো ঠিক করে বললে সেই ধাপকে বাস্তবায়িত করার যন্ত্রগুলোকে ) বলা হয় কোয়ান্টাম গেট।

পরের পর্বে আমরা ডয়েসের সমস্যার সমাধানের কাজে বিশেষ কিছু গেটকে লাগাবো।

ক্রমশঃ

Leave a Reply

Your email address will not be published. Required fields are marked *

ten − three =