এই লেখাটি পড়ার জন্য পাঠকদের যেসব জিনিস জানা থাকলে সুবিধা হবে সেগুলি হল: বীজগণিত ও বাইনারী বা দ্বিমিক সংখ্যা ব্যবস্থা। নিউটনের সূত্র ও কোয়ান্টাম মেকানিক্স জানা থাকলে সুবিধে, কিন্তু জানা না থাকলেও সমস্যা নেই।
বলুনতো আজকের যুগে আপনার সবচেয়ে মূল্যবান সম্পদ কি? বাড়ি, গাড়ি, ব্যাংক অ্যাকাউন্ট? আমি যদি বলি আপনার সবচেয়ে বড় সম্পদ ইন্টারনেটে আপনার অনলাইন অ্যাকাউন্টের চাবি বা পাসওয়ার্ড? ভেবে দেখুন, বাড়ি ভাড়ার রসিদ, গাড়ির কিস্তি, ব্যাংক অ্যাকাউন্টের লেনদেন সবকিছুর সাথে এই অনলাইন অ্যাকাউন্টের পাসওয়ার্ড জড়িয়ে – সে ইমেইলের পাসওয়ার্ড হোক, বা ফোনে ব্যাঙ্কের ওয়ান টাইম পাসওয়ার্ড (OTP) হোক। এখন যদি কেউ আপনার সেই চাবি হাতিয়ে নেয়, তাহলে? আপনার মাথায় আকাশ ভেঙ্গে পড়বে! তবে আমরা সবাই জানি সেই চাবি হাতানো অত সোজা না। যদি বলি এমন একটি কম্পিউটার বানানো হচ্ছে যেটি চোখের নিমিষে আপনার চাবিটি বের করে ফেলবে তাহলে? ভয় নেই! সেইরকম কম্পিউটার কীভাবে বানানো যায়, তা নিয়ে গবেষণা পুরোদমে চললেও এখনো অনেক সময় লাগবে। পাসওয়ার্ড হ্যাক করে ফেলার ক্ষমতাটা চমক লাগানোর জন্য বললাম, কিন্তু এমন শক্তিশালী কম্পিউটার, যাকে আমরা বলব ‘কোয়ান্টাম কম্পিউটার’, মানব সভ্যতায় বিপ্লব আনতে পারে। সম্পূর্ণ নতুন ধর্মবিশিষ্ট পদার্থের আবিষ্কার থেকে জীবনদায়ী রোগের ওষুধ আবিষ্কার, অথবা কেউ ভাঙতে পারবে না এমন পাসওয়ার্ড তৈরি – এমন সব কাজ রয়েছে এই কম্পিউটারের সম্ভাব্য কাজের তালিকায়। কতদিন সময় লাগবে এমন কম্পিউটার বানাতে? সঠিক কেউ জানে না। হয়তো আরো বছর ত্রিশেক, হয়তো আরও বেশী। কিন্তু ততদিন বসে না থেকে চলুন আজকেই জেনে নেই – কোয়ান্টাম কম্পিউটিং, ব্যাপারখানা কী!
এমন একটি কম্পিউটার বানানো হচ্ছে যেটি চোখের নিমিষে আপনার পাসওয়ার্ড বের করে ফেলতে পারে!
এই নিবন্ধটি কি করে সাজানো হয়েছে সেটি প্রথমে বলে দেই।
- প্রথম পর্বে আলোচনা করেছি কম্পিউটিং-এর সংক্ষিপ্ত ইতিহাস। হিলবার্টের দশম সমস্যার উত্তর খুঁজতে গিয়ে কম্পিউটার বিজ্ঞান আর তার মৌলিক গাণিতিক ভিত্তি ট্যুরিং যন্ত্রের জন্ম।
- দ্বিতীয় পর্বে আলোচনা করেছি কোয়ান্টাম কম্পিউটিং-এর গাণিতিক ভিত্তি ও প্রথম কোয়ান্টাম অ্যালগরিদম।
- তৃতীয় পর্বে ক্রিপটোগ্রাফি ও কোয়ান্টাম কম্পিউটিং নিয়ে আলোচনা করেছি। আপনি জানবেন কিভাবে দুষ্ট লোকের হাতে ভবিষ্যতের কোয়ান্টাম কম্পিউটার পড়লে আপনার ব্যাংক অ্যাকাউন্ট আর নিরাপদ নাও থাকতে পারে! তবে ততদিনে আশা করি ব্যাঙ্কও কোয়ান্টাম কম্পিউটিং ব্যবহার করেই আরও শক্ত পাসওয়ার্ড তৈরি করবে।
- চতুর্থ পর্বে এখন বানানো হচ্ছে এমন কিছু কোয়ান্টাম কম্পিউটারের সাথে পাঠকের আলাপ করিয়ে দিয়েছি।
প্রথম পর্ব
শুরুর কথাঃ হিলবার্টের দশ নম্বর সমস্যা!

ঊনিশশো সালের আগস্ট মাস। প্যারিসে ইন্টারন্যাশনাল কংগ্রেস অফ ম্যাথেমেটিশিয়ানসে ঘটে গেল খুব গুরুত্বপূর্ণ একটি ঘটনা। সে সময়ের সবচেয়ে বিখ্যাত গণিতবিদদের একজন জার্মান অধ্যাপক ডেভিড হিলবার্ট গণিতের ভবিষ্যৎ কেমন হবে সেটির একটি রূপরেখা দিতে গিয়ে বিংশ শতাব্দীর সবচেয়ে গুরুত্বপূর্ণ তেইশটি গাণিতিক সমস্যার উল্লেখ করেছিলেন। সেই সময়টি ছিল গণিতের জগতে খুবই উত্তাল এক সময়। বিভিন্ন দেশের বাঘা বাঘা গণিতজ্ঞরা গণিতের বিভিন্ন শাখাকে একীভূত করার জন্য আপ্রাণ চেষ্টা করেছিলেন। প্রকৃতিকে বোঝার ভাষা হল গণিত। সেই গণিতের সব শাখা নিয়ে যদি এক ভাষায় কথা বলা যায় তাহলে প্রকৃতি বিভিন্ন দিকের মধ্যে যে অদেখা সংযোগ সেটি বোঝার ব্যাপারে আমরা আরো এক ধাপ এগিয়ে যাব। হিলবার্ট ও তার সহকর্মীরা সেই স্বপ্ন নিয়ে এগুচ্ছিলেন।
হিলবার্টের এই তেইশটি সমস্যার মধ্যে দশ নম্বর সমস্যাটি পৃথিবীর ইতিহাস চিরতরে পাল্টে দিয়েছে।1 কী ছিল সেটি?
হিলবার্টের দশ নম্বর সমস্যা: একটি বহুপদী ডায়োফেন্টিন সমীকরণের সমাধানের অস্তিত্ত্ব আছে কিনা সেটি স্বয়ংক্রিয় যান্ত্রিকভাবে নির্ণয় করার একটি পদ্ধতি উদ্ভাবন কর।
গণিতের অনেক সমস্যার বর্ণনাই এরকম খটমটে শুনতে লাগে! উপরের বক্তব্যটি উদাহরণ সহ ভেঙে বলার চেষ্টা করি। নিচের সমীকরণটি দেখুন।
x২ + y২ – ৫ = ০
এটি একটি ডায়োফেন্টিন সমীকরণের উদাহরণ। সাধারণভাবে, ডায়োফেন্টিন সমীকরণ হল একটা বহুপদী (বা পলিনোমিয়াল) সমীকরণ যার বিভিন্ন পদের সহগ হল পূর্ণসংখ্যা (ইনটিজার)।
যেমন, উপরের সমীকরণে x২ আর y২ দুটো পদেরই সহগ (কো-এফিশিয়েন্ট) হল ১, যেটি একটি পূর্ণসংখ্যা। হিলবার্ট খোঁজ করছিলেন ডায়োফেন্টিন সমীকরণের পূর্ণসাংখ্যিক সমাধান।
এই সমীকরণের কি কোন পূর্ণসাংখ্যিক সমাধান আছে? অবশ্যই আছে! x = ১ এবং y = ২ ।
আরেকটি সমীকরণ দেখুন।
x২ + y২ + ১ = ০
এটির কিন্তু কোন পূর্ণসাংখ্যিক সমাধান নেই!
উপরের দুটো সমীকরণের সমাধানের অস্তিত্ত্ব আছে কিনা সেটি বের করা খুব একটা শক্ত নয়। কিন্তু, নীচে একটা ডায়োফেন্টিন সমীকরণ দিলাম। এটার পূর্ণসাংখ্যিক সমাধান বের করুন তো!
x২ + y২ = ১৯৯৭(x – y)
ডেভিড হিলবার্ট একটি যান্ত্রিক পদ্ধতির খোঁজ চেয়েছিলেন যেটি কিনা বলে দিবে কোন সমীকরণের পূর্ণসাংখ্যিক সমাধান আছে কিনা।
হিলবার্টের দেওয়া তেইশটি সমস্যার মধ্যে দশ নম্বর সমস্যাটি পৃথিবীর ইতিহাস চিরতরে পাল্টে দিয়েছে।
হিলবার্টের সমস্যায় যান্ত্রিকভাবে সমাধান নির্ণয় করার কথা আছে। যান্ত্রিক পদ্ধতি বলতে আমরা কি বুঝি?
কোন কাজ করার একটি সুলিখিত পদ্ধতি যেটিতে প্রত্যেকটি ধাপের পূর্বশর্ত এবং ধাপটির কাজ সুনির্দিষ্টভাবে বলা থাকে। উদাহরণ হল আপনার ঘরের দেয়ালে একটি স্ক্রু যখন স্ক্রুড্রাইভার নামের যন্ত্রটি দিয়ে লাগান তখন সেই প্রক্রিয়াটি চাইলে ধাপে ধাপে বর্ণনা করা যায়। কাজেই এই কাজটি যান্ত্রিক পদ্ধতিতে করা সম্ভব। কিন্তু রবীন্দ্রনাথ যখন সোনার তরী কবিতাটি লেখা শুরু করেন সেই কবিতা লেখার প্রক্রিয়াটিকে ধাপে ধাপে বর্ণনা করার কোন উপায় আমাদের জানা নেই। বলার উপায় বের করা সম্ভব কি অসম্ভব সেটি ভিন্ন প্রশ্ন। কিন্তু এখন পর্যন্ত কোন উপায় জানা নেই। কাজেই এখন পর্যন্ত আমরা সোনার তরীর মত আরেকটি কবিতা যান্ত্রিক পদ্ধতিতে লেখার কোন উপায় জানি না।
আগের শতক থেকেই, মূলত: চার্লস ব্যাবেজের2 জন্য, মানুষ যান্ত্রিক পদ্ধতিতে গাণিতিক সমস্যা সমাধানের ধারণার সাথে পরিচিত ছিল। হিলবার্টের দশম সমস্যাটি সে সময়কার তরুণ গণিতবিদদের বেশ আকৃষ্ট করে। আস্তে আস্তে সমস্যাটির আরো সাধারণীকরণ (generalization) হতে থাকে এবং ঊনিশশো আটাশ সালে এসে এটি এন্টশাইডুংসপ্রবলেম (Entscheidungsproblem) বা সিদ্ধান্ত-সমস্যায় রুপ নেয়। সিদ্ধান্ত-সমস্যা ব্যাপারটি কি? এটি একটি গাণিতিক সমস্যা যার উত্তর দেওয়া যায় হ্যাঁ বা না এই সিদ্ধান্ত দিয়ে। সিদ্ধান্ত-সমস্যাটি নিচের মত:
যদি কিছু স্বত:সিদ্ধ ও একটি গাণিতিক প্রস্তাবনা দেয়া থাকে তাহলে সেই স্বত:সিদ্ধগুলির ভিত্তিতে গাণিতিক প্রস্তাবনার সত্যতা কোনো স্বয়ংক্রিয় যান্ত্র্রিক পদ্ধতিতে জানা সম্ভব?

ট্যুরিং যন্ত্র

এই সিদ্ধান্ত-সমস্যা নিয়ে কাজ শুরু করেন ম্যাক্স নয়ম্যান, কার্ট গডেল, অ্যালান ট্যুরিঙয়ের মত নামকরা গণিতবিদরা। তারপর ঊনিশশো সাঁইত্রিশ সালে ট্যুরিঙ তার পিএইচডি গবেষণায় কম্পিউটারবিজ্ঞানের গাণিতিক ভিত্তি রচনা করেন3।
মূলত: ট্যুরিঙ একটি কাল্পনিক যন্ত্র কাগজে কলমে নির্মাণ করেছিলেন যাকে আমরা এখন বলি ট্যুরিঙ যন্ত্র বা ট্যুরিঙ মেশিন। ট্যুরিং যন্ত্র ঠিক নাট বল্টু ওয়ালা কোন জিনিস নয়। নামে যন্ত্র বলা থাকলেও এটি আসলে একটি গাণিতিক ধারণা। তারপরও কেউ যদি কল্পনা করতে চায় তাহলে টেপ রেকর্ডারের কাছাকাছি কিছু একটা কল্পনা করতে পারে। তবে এতে টেপের বা ফিতার দৈর্ঘ্য অসীম। যন্ত্রের একটি শূঁড় (ইংরেজীতে হেড) আছে। ফিতাটি শূঁড়ের নিচ দিয়ে ডানে বা বামে যায়। শূঁড়টি ফিতার উপর লিখতে পারে বা কি লেখা আছে সেটি পড়তে পারে। এটি আবার লেখা মুছেও দিতে পারে।

ট্যুরিঙ দেখিয়েছিলেন যেসব গাণিতিক সমস্যা সমাধানের স্বয়ংক্রিয় যান্ত্রিক গাণিতিক পদ্ধতি জানা আছে তার সবই এই কাল্পনিক যন্ত্রের মাধ্যমে সমাধান করা সম্ভব।
ট্যুরিং যন্ত্র কাজ করে কিভাবে? এই যন্ত্র আসলে আপনার লেখা প্রোগ্রাম বা নির্দেশমালা চালাবে। আপনি কিভাবে আর কোথায় এই নির্দেশমালা লিখবেন? এটি আপনি লিখবেন যন্ত্রের টেপে ‘০’ আর ‘১’ এই দুইটি প্রতীক বা অক্ষর দিয়ে। যন্ত্রটি সেটি পড়বে এবং সেটি অনুযায়ী কাজ করবে।
একটি উদাহরণ দেই। ধরুন আপনি ২ এর সাথে ৩ যোগ করবেন। ট্যুরিং যন্ত্র সেটি কিভাবে করবে? ট্যুরিং যন্ত্র যোগ বিয়োগ বুঝে না। এটি কেবল পারে টেপের উপর ০ বা ১ পড়তে, লিখতে বা মুছতে। কাজগুলি সে শূঁড় যেখানে সেই ঘরটিতে করতে পারে বা তার ডানে বা বাঁয়েও পারে।
এর অর্থ হল আমরা যদিও কম্পিউটার দিয়ে বড় বড় গাণিতিক সমস্যা সমাধান করে থাকি ট্যুরিং যন্ত্র তার কিছুই টের পায় না। সে যোগ, বিয়োগ, গুণ, ভাগ কিছুই পারে না। পারে কেবল পড়তে, লিখতে আর মুছতে। মজার ব্যাপার হল এই তিনটি কাজ ঘুরিয়ে ফিরিয়ে করিয়ে সব বড় বড় গাণিতিক সমস্যা সমাধান করা হয়।
ট্যুরিং যন্ত্র পারে কেবল পড়তে, লিখতে আর মুছতে – তাই দিয়েই যেকোন গাণিতিক সমস্যার সমাধান করতে পারে।
ট্যুরিং যন্ত্রের টেপে আমরা নিচের মত করে দুই আর তিন লিখতে পারি।

প্রথমে ৳ চিহ্ন দিয়ে বুঝিয়েছি সংখ্যার দ্বিমিক বা বাইনারি রূপ শুরু হচ্ছে। এরপর ০০১০ অর্থ ২ আর ০০১১ অর্থ ৩। আমি চাই যোগফলটি ৩ এর জায়গায় লেখা হোক।
ট্যুরিং যন্ত্র এই যোগের কাজটি করবে কয়েক ধাপে। প্রতি ধাপে সে প্রথম সংখ্যা
২ থেকে ১ বিয়োগ করবে আর সেই ১, দ্বিতীয় সংখ্যা ৩ এর সাথে যোগ করবে। এরকম করতে করতে যখন দেখবে ২ কমে ০ হয়ে গেছে সে জানবে যোগের কাজ শেষ।
ধরুন আমাকে জিজ্ঞেস করা হল ২ + ৩ = ? আমার সামনে একটি বাটিতে ২টি আপেল আর অন্য বাটিতে ৩টি আপেল আছে। ধরুন কোন এক রহস্যময় কারণে আমি যোগ করতে পারি না। আমি পারি কেবল আপেল এক বাটি থেকে অন্য বাটিতে সরাতে। যদি একটি একটি করে আপেল প্রথম বাটি থেকে দ্বিতীয় বাটিতে সরাতে থাকি, এক সময় দ্বিতীয় বাটিতে ৫টি আপেল হয়ে যাবে। এটিই ২+৩ এর উত্তর। কম্পিউটারও এরকম ধাপে ধাপে কাজ করে।
এখন দুই থেকে এক বিয়োগ করবে কি করে? আগে বলেছি ট্যুরিং মেশিন বিয়োগ কি, জানে না। কিন্তু সে প্রত্যেকটি চিহ্নকে তার বিপরীত চিহ্নে পাল্টে দিতে পারে। দ্বিমিক পাটিগণিতে যদি কোন সংখ্যার অংকগুলোকে পাল্টে দেয়া হয় (এককে শূন্যতে আর শূন্যকে একে) তাহলে তা যোগের সময় একটি সীমা পর্যন্ত ঋণাত্মক সমমানের কাজ করে। কাজের ২ এর চিহ্ন পাল্টালে এটি হবে -২। তারপর এর সাথে ১ যোগ করলে হবে -১। তারপর আবার চিহ্ন পাল্টালে হয়ে যাবে ১। এভাবে কম্পিউটারে কোন সংখ্যা থেকে ১ বিয়োগ করা হয়।
২ এর চিহ্ন পাল্টালে টেপটি দেখতে নিচের মত হবে। এর জন্য শূঁড়টিকে চারবার স্থান পরিবর্তন করতে হবে।

এর পর সংখ্যাটির সাথে ১ যোগ করবে। তখন টেপটি দেখতে নিচের মত হবে।

তারপর আবার প্রত্যেকটি চিহ্নকে তার বিপরীত চিহ্নে পাল্টে দিবে। তখন টেপটি দেখতে নিচের মত হবে।

তাহলে বাঁয়ের সংখ্যাটি শুরুতে ছিল ২ বা দ্বিমিকে ০০১০ আর এখন ১ বা দ্বিমিকে ০০০১। এভাবে আরেকবার পুরো ব্যাপারটি করলে ১ থেকে হয়ে যাবে ০। এখন দেখি ডানের ৩ এর সাথে ১ যোগ করা হবে কি করে।
শূড়ের অবস্থান যাই থাকুক না কেন সে সরে সবচেয়ে ডানের অংকে চলে যাবে। তারপর ডান দিক থেকে পড়া শুরু করবে। যখনই কোন ১ পাবে তাকে ০ করে দিবে। প্রথম যখন কোন ০ পাবে তাকে ১ বানিয়ে দিয়ে থেমে যাবে। তখন টেপটি দেখতে নিচের মত হবে।

দেখা যাচ্ছে ২ থেকে যে ১ বিয়োগ করেছিলাম সেটি ডানে ৩ এর সাথে যোগ করায় টেপে এখন আছে ১ আর ৪ পরের ধাপে টেপটি দেখাবে ০ আর ৫।

এভাবেই ট্যুরিং যন্ত্রে যোগ করা যায়। ট্যুরিং যন্ত্রে যেহেতু শুধু ০ আর ১ লেখা যায় সব গণিত করতে হয় এই দুটি চিহ্ন ব্যবহার করে। একে জর্জ বুলের নামানুসারে বলা হয় বুলিয়ান বীজগণিত। গণিতের ভাষায় একে বলে দুই চিহ্নের গ্যালোয়া ক্ষেত্র।
ভাল কথা, টেপের উপর ‘০’ বা ‘১’ লেখার যে জায়গা একেই বলে বিট। আট বিটে হয় এক বাইট।
আপনার ল্যাপটপ, আইফোন, ট্যাব এক একটি দেখতে এক এক রকম হলেও এসবগুলোরই গাণিতিক ভিত্তি একই – ট্যুরিং যন্ত্র।
ধ্রুপদী কম্পিউটারবিজ্ঞানের জন্ম যেসব মৌলিক কাজের হাত ধরে ট্যুরিং যন্ত্র তার মধ্যে প্রথম দিককার একটি। একসময়ই আরেকজন বিখ্যাত গণিতবিদ আলোঞ্জো চার্চও4 স্বাধীনভাবে প্রায় একইরকম একটি তত্ত্ব দাঁড় করান। দুজনেরই অবদানকে স্বীকৃতি দেওয়ার জন্য এদের কাজগুলোকে একত্রে চার্চ-ট্যুরিঙ প্রস্তাব বলা হয়। প্রস্তাবের বক্তব্যটি একটু সহজ ভাষায় নিচে দিলাম।
একটি সর্বজনীন কম্পিউটারে বস্তুজগতের যান্ত্রিকভাবে বর্ণীত যেকোন গাণিতিক সমস্যার সমাধান করা সম্ভব।
তাহলে আমরা দেখলাম হিলবার্টের সিদ্ধান্ত-সমস্যার সমাধান খুঁজতে গিয়ে কম্পিউটার বিজ্ঞানের জন্ম। তাহলে কী সেই প্রশ্ন যার উত্তর খুঁজতে গিয়ে কোয়ান্টাম কম্পিউটিংয়ের জন্ম?
টীকা
- পৃথিবীর ইতিহাস পাল্টে দেবার মতটি আমার একান্তই ব্যক্তিগত। আমার মতে হিলবার্টের দশম প্রশ্নটিই মানুষকে যন্ত্রের দ্বারা গণনা করার ব্যাপারে আগ্রহী করে তোলে যা থেকে কম্পিউটার বিজ্ঞানের জন্ম ও কম্পিউটারের সৃষ্টি। (লেখায় ফেরত)
- চার্লস ব্যাবেজ (১৭৯১-১৮৭১) ছিলেন একজন ব্রিটিশ গণিতবিদ ও যন্ত্রকৌশলী। তিনিই প্রথম যান্ত্রিক গণক যন্ত্র আবিষ্কার করেন। মূলত: জ্যোর্তিবিদ্যার কঠিন গাণিতিক সমস্যাগুলো সমাধান করার স্বয়ংক্রিয় পদ্ধতি আবিষ্কার করাই ছিল তার লক্ষ্য। তিনি মূলত: প্রথমে ডিফারেন্সিয়াল ইঞ্জিন নামে একটি যন্ত্র তৈরি করেন যার কাজ ছিল স্বয়ংক্রিয়ভাবে সমীকরণ সমাধান করা। এরপর তিনি অ্যানালাইটিক্যাল ইঞ্জিন নামে আরেকটি আরো সাধারণীকৃত যন্ত্রের নকশা করেন যেটি যে কোনো গাণিতিক সমস্যা সমাধান করবে। তার কাজের উপর সমসাময়িক ফরাসী গবেষণার প্রভাবও কম্পিউটারের ইতিহাসে বিস্তারিতভাবে উল্লিখিত আছে। (লেখায় ফেরত)
- অ্যালান ট্যুরিঙ ১৯৩৬ সালে একটি গবেষণাপত্রে ট্যুরিঙ যন্ত্র নামে একটি গাণিতিক ধারণা প্রস্তাব করেন। তিনি দেখান যে যে কোনো গাণিতিক প্রক্রিয়াকে যদি ক্রমসূচী বা অ্যালগরিদম হিসেবে লেখা যায় তাহলে সেটি ট্যুরিঙ যন্ত্রে চালিয়ে সেই সংশ্লিষ্ট গাণিতিক সমস্যা স্বয়ংক্রিয়ভাবে সমাধান করা যায়। পরে ১৯৩৮ সালে তার প্রস্তাবে ট্যুরিঙ সেই যন্ত্রের আরো প্রয়োগ দেখান। (লেখায় ফেরত)
- ঘটনাচক্রে ইনি আমার অধ্যাপকের অধ্যাপক। (লেখায় ফেরত)
উৎসর্গ: মুক্তচিন্তক শহীদ অভিজিৎ রায়
কৃতজ্ঞতা: মাহবুব আজাদ আজাদকে পরিভাষা ও বানানের ব্যাপারে সাহায্যের জন্য ধন্যবাদ।
Such a complex content is explained in such a manner is just amazing.