[আমার বর্তমান গবেষণার বিষয় “কোয়ান্টাম কম্পিউটার” নিয়ে ২য় লেখা এটা। কোয়ান্টাম কম্পিউটার কি ধরণের সমস্যা সমাধানে ব্যবহার করা যাবে এবং এর সীমাবদ্ধতা কোথায় সেগুলো নিয়ে আজকে আলোচনা করব]
কোয়ান্টাম কম্পিউটার কী পারে যেটা সাধারণ কম্পিউটার পারে না? কোয়ান্টাম কম্পিউটার কি সত্যি ঝড়ের গতিতে সমস্যা সমাধান করে দিতে পারে? রিচার্ড ফাইনম্যান কোয়ান্টাম মেকানিক্সকে একধাপ এগিয়ে ধারণা দেন কোয়ান্টাম কম্পিউটারের। এখনো কোয়ান্টাম কম্পিউটার ল্যাবে তৈরি করা সম্ভব না হলেও আমরা এরই মধ্যে তাত্ত্বিকভাবে অনেক কিছু জেনে গিয়েছি, হয়তো সেই তত্ত্বগুলো বাস্তবে পরিণত হতে খুব বেশি দেরী নেই। কোয়ান্টাম কম্পিউটার কেন শক্তিশালী, আবার কোথায় তাঁর দূর্বলতা এগুলো নিয়ে আজকের এই লেখা।
কোয়ান্টাম কম্পিউটার আপেক্ষিকভাবে বেশ নতুন একটা বিষয়। এই লেখায় কোয়ান্টাম কম্পিউটার কি সেটা নিয়ে বিস্তারিত লিখব না, জানতে চাইলে আমার আগের একটা লেখা এবং তানভীরুল ইসলামের কোয়ান্টাম তত্ত্ব লেখাটা পড়া যেতে পারে। কোয়ান্টাম কম্পিউটারে সব হিসাব-নিকাশ করা হয় হয় “কিউবিট” দিয়ে, কিউবিট হতে পারে একটা ফোটন কণিকা বা একটা ইলেক্ট্রণ বা অন্য কোনো কণিকা। এসব কণিকাকে ব্যবহার করে তথ্য সংরক্ষণ করা যায়, বিভিন্ন হিসাব-নিকাশ করা যায়, “কোয়ান্টাম ইনফরমেশন” হলো কিউবিটে রাখা তথ্য। বিজ্ঞানীরা যখন দেখলেন কোয়ান্টাম ইনফরমেশন ব্যবহার করে এমন কাজ করা সম্ভব যেটা সাধারণ কম্পিউটার দিয়ে সম্ভব না, স্বাভাবিকভাবেই তারা এই ব্যাপারে খুব আগ্রহী হয়ে পড়লেন। কোয়ান্টাম কম্পিউটারের গবেষণাক্ষেত্র শুরু করার কৃতিত্ব দেয়া হয় রিচার্ড ফাইনম্যানকে।
কোয়ান্টাম কম্পিউটার নিয়ে অনেক লেখাতেই দাবী করা হয় সাধারণ কম্পিউটারের থেকে হাজার বা লক্ষ্যগুণ দ্রুত কাজ করবে কোয়ান্টাম কম্পিউটার, অথবা সাধারণ কম্পিউটার যেসব সমস্যার সমাধান করতে পারে না সেগুলোকে সমাধান করা সম্ভব হবে। এসব দাবীর কতটা সত্য আর কতটা কল্পনা? এই লেখাতে আমরা এসব নিয়েই জানব। আগেভাগেই জানিয়ে রাখি লেখার একটা বড় অংশ সায়েন্টিফিক অ্যামেরিকান ২০০৮ এ প্রকাশিত MIT’র স্কট অ্যারনসনের প্রবন্ধের সারমর্ম[১], বাকিটা ইন্টার্নশীপ করতে এসে আমার সুপারভাইজর তানভীরুল ইসলামের ভাইয়ের কাছ থেকে প্রাপ্ত জ্ঞান!
কোয়ান্টাম কম্পিউটার সম্পর্কে বাস্তবতা হল এটা কিছু সমস্যা যেমন প্রাইম ফ্যাক্টরাইজেশন খুব দ্রুত করতে পারবে কিন্তু অন্য অনেক সমস্যা সমাধানের ক্ষেত্রে সাধারণ কম্পিউটারের থেকে ভালো পারফরমেন্স দিতে পারবে না।
ব্যাপারটা আরেকটু বিস্তারিত বোঝার চেষ্টা করি। একটা সমস্যা সমাধানের জন্য কম্পিউটারকে অনেকগুলো ধাপে কিছু হিসাব-নিকাশ করতে হয় যেটাকে আমরা বলি অ্যালগোরিদম। অ্যালগোরিদমে ধাপ সংখ্যা যত কম থাকবে তত কম হিসাব করতে হবে এবং তত দ্রুত কম্পিউটার সমস্যাটা সমাধান করতে পারবে। এখন ধাপ সংখ্যা নির্ভর করে ইনপুটের আকারের উপর। যদি ইনপুট হয় n আকারের এবং ধাপ লাগে n^2 টা তাহলে সেই অ্যালগোরিদমটাকে বলা হয় O(n2) অ্যালগোরিদম (পড়তে হবে order of n square algorithm)। O(n2) অ্যালগোরিদমে ইনপুটের আকার যদি হয় ১০০, তাহলে সর্বোচ্চ ১০০০০ ধাপে সমস্যাটা সমাধান করা যাবে। ঠিক সেরকম O(n), O(logn) অ্যালগোরিদম হতে পারে। এগুলোকে বলা হয় অ্যালগোরিদমের টাইম কমপ্লেক্সিটি, যা দেখে আমরা বুঝি কোন অ্যালগোরিদম দ্রুত কাজ করবে।
ব্যাপারটা আরেকটু বিস্তারিত বোঝার চেষ্টা করি। একটা সমস্যা সমাধানের জন্য কম্পিউটারকে অনেকগুলো ধাপে কিছু হিসাব-নিকাশ করতে হয় যেটাকে আমরা বলি অ্যালগোরিদম। অ্যালগোরিদমে ধাপ সংখ্যা যত কম থাকবে তত কম হিসাব করতে হবে এবং তত দ্রুত কম্পিউটার সমস্যাটা সমাধান করতে পারবে। এখন ধাপ সংখ্যা নির্ভর করে ইনপুটের আকারের উপর। যদি ইনপুট হয় n আকারের এবং ধাপ লাগে n^2 টা তাহলে সেই অ্যালগোরিদমটাকে বলা হয় O(n2) অ্যালগোরিদম (পড়তে হবে order of n square algorithm)। O(n2) অ্যালগোরিদমে ইনপুটের আকার যদি হয় ১০০, তাহলে সর্বোচ্চ ১০০০০ ধাপে সমস্যাটা সমাধান করা যাবে। ঠিক সেরকম O(n), O(logn) অ্যালগোরিদম হতে পারে। এগুলোকে বলা হয় অ্যালগোরিদমের টাইম কমপ্লেক্সিটি, যা দেখে আমরা বুঝি কোন অ্যালগোরিদম দ্রুত কাজ করবে।
এখন কিছু প্রশ্ন, তোমার কাছে যদি দুটি অ্যালগোরিদম থাকে, একটা O(n^2) আরেকটা O(n3) তাহলে কোনটা ব্যবহার করলে দ্রুত সমস্যা সমাধান করা যাবে? যদি n টা বইয়ে মধ্য থেকে একটা বই খুজে বের করতে হয় তাহলে সর্বোচ্চ কয়টা বইয়ের টাইটেল তোমাকে পড়তে হবে? বই খুজে বের করার কমপ্লেক্সিটি তাহলে কত? এবার আরেকটু চিন্তা করার মত একটা প্রশ্ন, ডিকশনারিতে যদি ১০০ টা শব্দ থাকে তাহলে বুদ্ধিমানের মত খুজলে সর্বোচ্চ কয় ধাপে নির্দিষ্ট শব্দ খুজে পাওয়া যাবে? ১০০ এর জায়গায় n টা শব্দ থাকলে?
এখন n2, n3, nk এগুলো সবই হলো পলিনমিয়াল কমপ্লেক্সিটি। আরেক ধরণের কমপ্লেক্সিটি আছে যেগুলোকে বলা হয় এক্সপোনেনশিয়াল কমপ্লেক্সিটি, সেগুলো হলো kn আকারের, যেমন 2n, 3n। n এর মান যত বাড়ে অ্যালগোরিদমের ধাপসংখ্যা তত বাড়ে, পলিনমিয়াল অ্যালগোরিদমের ধাপ সংখ্যা যে হারে বাড়ে তার থেকে অনেক দ্রুত হারে বাড়ে এক্সপোনেনশিয়াল অ্যালগোরিদমের ধাপ। একটা গল্প মনে আছে যেখানে বাচ্চা ছেলে তার মায়ের কাছে প্রথমদিন ১টাকা, পরেরদিন ২টাকা, পরেরদিন গুলোতে ৪ টাকা, ৮ টাকা, ১৬ টাকা এভাবে করে ১ বছর টাকা চেয়েছিল? তারমানে n তম দিনে 2n টাকা দিতে হবে। নিচের টেবিলে দেখুন এভাবে বাড়াতে থাকলে ৫০ ধাপ পরেই সংখ্যাটা কত বড় হয়ে যায়:
n | n2 | n3 | 2n |
10 | 100 | 1000 | 1024 |
15 | 225 | 3375 | 32768 |
20 | 400 | 8000 | 1048576 |
50 | 2500 | 125000 | 1125899906842624 |
ইনপুটের আকার মাত্র ৫০ হলেই 2n অ্যালগোরিদমের জন্য ধাপ সংখ্যা ১৬ অঙ্কের একটা সংখ্যা হয়ে গিয়েছে।
দু:খজনক ভাবে বাস্তবজীবনে এমন অনেক সমস্যা আছে যেগুলোর জন্য আমরা এক্সপোনেনশিয়াল অ্যালগোরিদমের থেকে ভালো কিছু এখন পর্যন্ত জানি না। বিজ্ঞানীরা এগুলোকে np বা non-deterministic-polynomial ক্যাটাগোরির সমস্যা বলেন। কেও যদি এই ক্যাটাগরির কোনো সমস্যার পলিনমিয়াল সমাধান বের করে দিতে পারে ১০০% নিশ্চিত ভাবে পৃথিবীর চেহারা সেই মূহুর্তে বদলে যাবে, কম্পিউটার বিজ্ঞানের “হলি গ্রেইল” বলা যেতে পারে এই সমস্যাটাকে। আরো ইন্টারেস্টিং ব্যাপার হলো, মাত্র ১টা np সমস্যা কেও সমাধান করতে পারলে সবগুলো np সমস্যার সমাধান হয়ে যাবে। বর্তমানে এ ধরণের সমস্যার ক্ষেত্রে সবধরণের সম্ভাব্য ফলাফল দেখে সেরাটা বেছে নেয়া হয় এবং বিভিন্ন শর্ত আরোপ করে ধাপ কিছুটা কমানো হয়।
এখন একটা সুপারকম্পিউটার হয়ত তোমার-আমার কম্পিউটারের থেকে কয়েক হাজার গুণ দ্রুত কাজ করতে পারে কিন্তু সেগুলোকেও 2100ধাপের একটা অ্যালগোরিদম নিয়ে বসিয়ে দিলে গ্যালাক্সি আয়ু শেষ হয়ে যাবে কিন্তু সমস্যার সমাধান হবে না। সুপারকম্পিউটার তাই সাধারণ কম্পিউটারের থেকে দ্রুত কাজ করতে পারলেও অ্যালগোরিদমের কমপ্লেক্সিটি কমিয়ে আনতে পারে না। আমাদের দরকার এমন একটা কম্পিউটার যে অ্যালগোরিদমের ধাপ সংখ্যা কমিয়ে আনতে পারে। তাহলেই আমরা np ক্যাটাগরির সমস্যা দ্রুত সমাধান করে ফেলতে পারব।
এবার প্রশ্ন হলো কোয়ান্টাম কম্পিউটার কি np ক্যাটাগরির সমস্যা সমাধান করতে পারে? দু:খজনক হলেও উত্তর হলো এখন পর্যন্ত পারে না। তাই কোয়ান্টাম কম্পিউটারও এসব সমস্যার ক্ষেত্রে সাধারণ কম্পিউটারের থেকে ভালো করতে পারবে না।
তাহলে কোয়ান্টাম কম্পিউটার কোন সমস্যা সমাধানে ভালো কাজ করবে? সাধারণ কম্পিউটারের একটা বিট যেমন ০ বা ১ হতে পারে ঠিক সেরকম কিউবিটও ০ বা ১ হতে পারে। তবে কিউবিটের মজার ব্যাপার হলো সেটা একই সাথে ০ এর ১ এর মিলিত একটা অবস্থায় থাকতে পারে যাকে সুপারপজিশন বলা হয়। আমাদের কাছে ১০০০টা কিউবিট থাকলে সেখানে একই সাথে 21000 টা সংখ্যা ভরে রাখা সম্ভব যেটা দৃশ্যমান মহাবিশ্বের অণূর সংখ্যার থেকেও বেশি । এখন যদি আমাদের এমন একটা অ্যালগোরিদম থাকে যেটা একই সময়ে কিউবিটগুলোর উপর কোনো অপারেশন করে সবগুলো সংখ্যাকে একটা করে সম্ভাব্য উত্তর বানিয়ে দিবে তাহলে আমরা খুব দ্রুত সঠিক উত্তরটা খুজে বের করতে পারতাম। কিন্তু সমস্যা হল যখন আমরা অ্যালগোরিদম শেষে কিউবিটগুলোর কোন স্টেট এ আছে সেটা দেখার চেষ্টা করব তখন আমরা মাত্র ১টা স্টেট পাবো, কোয়ান্টাম মেকানিক্সের নিয়ম অনুযায়ী বাকিগুলো আমরা কিছুতেই পড়তে পারব না। [১]
তবে ব্যাতিচার বা ইন্টারফেয়ারেন্স(interference) বলে একটা ব্যাপার আছে যেটা ব্যবহার করে আমরা কিছু সুবিধা পেতে পারি, প্রথমে তরঙ্গের অ্যামপ্লিচিউড বা বিস্তারের একটা ছবি দেখি:
এবার ইন্টারফেয়ারেন্স[৬] দেখি:
উপরের ডানের ছবিটাতে পজিটিভ আর নেগেটিভ অ্যামপ্লিচিউড একসাথে মিলিত হয়ে একটা আরেকটাকে বাতিল করে দিয়েছে, বামের ছবিতে একই ধরণের অ্যামপ্লিচিউড একসাথে হয়ে অ্যামপ্লিচিউড আরো বাড়িয়ে তুলেছে। আমরা যদি এমন একটা অ্যালগোরিদম তৈরি করতে পারি যেটা ভুল উত্তরগুলোকে ডিস্ট্রাক্টিভ ইন্টারফেয়ারেন্সের মাধ্যমে বাতিল করে দিবে এবং সঠিক উত্তরের অ্যামপ্লিচিউড বাড়িয়ে দিবে তাহলে সবার শেষের স্টেটে সঠিক উত্তর পাবার প্রোবাবিলিটি অনেক বেড়ে যাবে। [১]
এই প্রোপার্টি ব্যবহার করে প্রাইম ফ্যাক্টরাইজেশন বা মৌলিক উৎপাদকে বিশ্লেষনের একটা অ্যালগোরিদম আছে যা শোর’স অ্যালগোরিদম(shor’s algorithm)। এই অ্যালগোরিদম O(n^3) ধাপে n কে কিছু প্রাইম সংখ্যার গুণফল হিসাবে লিখতে পারে, ক্লাসিকাল কম্পিউটারে পলিনমিয়াল সময়ে কাজটা করতে পারে না (তবে এটা np ক্যাটাগরির কোনো সমস্যা না)। ক্রিপ্টোগ্রাফির অনেক প্রটোকল হয়েছে সাধারণ কম্পিউটার বড় সংখ্যাকে দ্রুত প্রাইম ফ্যাক্টরাইজেশন করতে পারে না এটাকে মূলনীতি ধরে, কোয়ান্টাম কম্পিউটার এসব প্রটোকলকে খুব দ্রুত ভেঙে ফেলতে পারবে। [৪]
শুরুর দিকে একটা প্রশ্ন করেছিলাম যে n টা বই থেকে ১টা বই খুজে বের করতে সর্বোচ্চ কয়টা বইয়ের টাইটেল পড়তে হবে? উত্তর খুব সহজ, বইটা সবার শেষে থাকতে পারে তাই n বইয়েরই টাইটেল পড়া দরকার হতে পারে, কমপ্লেক্সিটি হল O(n)। ডাটাগুলো কোনো নির্দিষ্ট নিয়মে (যেমন ছোট থেকে বড়) সাজানো না থাকলে তথ্য খুজে বের করতে O(n) সময় লাগবে বলেই এতদিন আমরা ধরে নিয়েছি। গ্রোভার সার্চ নামের একটা কোয়ান্টাম অ্যালগোরিদম দিয়ে দেখানো হয়েছে O( square_root(n) ) বা n এর বর্গমূল সংখ্যক ধাপেই ডাটা খুজে বের করা সম্ভব যেকোন ডাটাবেস থেকে! [৩]
তবে ক্রিপ্টোগ্রাফী ভাঙাটাই কোয়ান্টাম কম্পিউটারের একমাত্র কাজ না, আরো দারুণ কিছু সম্ভাবনা আছে। কোয়ান্টাম কম্পিউটার িদয়ে আমরা রাসায়নিক বিক্রিয়া সিমুলেট করতে পারব, কোনো পরমাণু কার সাথে কিভাবে বিক্রিয়া করে সেগুলো কম্পিউটার দিয়ে বের করতে পারব। ন্যানোটেকনোলজি যেহেতু কোয়ান্টাম মেকানিক্সের উপর নির্ভরশীল, সেখানেও কোয়ান্টাম সিমুলেশন খুবই গুরুত্বপূর্ণ ভূমিকা রাখবে। [২] সে সময় হয়তো নতুন ঔষধের কার্যকারিতা প্রাণীর উপর পরীক্ষা না করে আমরা কম্পিউটারে সিমুলেট করে ফেলতে পারব। তবে এমআইটির স্কট অ্যারনসনের মতে কোয়ান্টাম কম্পিউটিং নিয়ে গবেষণা করতে করতে যদি দেখা যায় যে কোয়ান্টাম কম্পিউটার তৈরি আসলে সম্ভব না তাহলেও আমরা বিশ্বজগৎ কিভাবে কাজ করে সেটা নিয়ে নতুন অনেক ধারণা পাব। [১]
কোয়ান্টাম কম্পিউটার বানিয়ে ফেলতে সমস্যা কোথায়? প্রধান সমস্যা হলো কোয়ান্টাম ডিকোহেরেন্স [১][৫] । কিউবিটগুলো পরিবেশের সাথে ইন্টার্যাকশনের কারণে সে যে স্টেট এ ছিল সেটা নষ্ট হয়ে যায়, পদার্থবিজ্ঞানীরা যাকে বলেন “ওয়েভ ফাংশন কলাপস” করে। আমরা জানি কিউবিট একই সাথে একাধিক স্টেট এ সুপারপজিশন অবস্থায় থাকতে পারে, ডিকোহেরেন্স এর ফলে একটা মাত্র স্টেট এ “কলাপস” করে। এবং একবার “কলাপস” করলে সেটাকে আর আগের অবস্থায় ফেরত নেয়া যায় না। কোয়ান্টাম কম্পিউটার তৈরির বাধাগুলোর মধ্যে এটাই সবথেকে বড়।
সূত্রঃ http://www.shafaetsplanet.com/