কোয়ান্টাম কম্পিউটার simulator
JavaScript-এ ছোট কোয়ান্টাম সার্কিট লিখে ব্রাউজারে চালান এবং চিত্র, সম্ভাবনা ও অবস্থা ভেক্টর দেখুন। অথবা উচ্চ স্তরে যোগের মতো হিসাব লিখে বাস্তব বিপরীতযোগ্য সার্কিটে রূপান্তর দেখুন।
Noise মডেল
বাস্তব কোয়ান্টাম কম্পিউটারে পরিবেশ, gate ও readout-এর ত্রুটি হয়। আদর্শ হিসাবের পাশাপাশি এখানে সাধারণ ত্রুটি মডেল চালিয়ে ফলের প্রভাব দেখা যায়।
quantum.add, subtract, multiply, divide বা random নির্দেশ দিয়ে হিসাব লিখুন। Ctrl+Enter একসঙ্গে চাপলে কোয়ান্টাম অনুকরণ চালু হয়।
ওপরের program থেকে code তৈরি ও সরাসরি অনুকরণ হয়েছে। হাতে সম্পাদনা করে আবার চালাতে পারেন।
তৈরি circuit হাতে বদলানো হয়েছে। তাই register grouping লুকানো; ওপরের program আবার চালালে পরিবর্তন মুছে যাবে।
সর্বোচ্চ ৪০০০ অক্ষর। QuantumCircuit method: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot, swap, measureAll, run।
Circuit চিত্র
নির্বাচিত gate-এর ঠিক পরের সম্ভাবনা ও state vector দেখায়। নিচের shot ফল পূর্ণ circuit-এর।
ওপেনকিউএএসএম ২.০ (OpenQASM 2.0)
OpenQASM বহুল ব্যবহৃত circuit বিনিময় format। এখানে q0 বাঁয়ের সবচেয়ে গুরুত্বপূর্ণ bit, Qiskit-এ q[0] সবচেয়ে কম গুরুত্বপূর্ণ; bit string সেখানে উল্টো দেখায়।
সম্ভাবনা
State vector থেকে প্রতিটি bit string মাপার exact সম্ভাবনা। q0 বাঁয়ের bit।
Bloch sphere
প্রতি কিউবিটের অবস্থা sphere-এ তীর: উত্তর |0⟩, দক্ষিণ |1⟩, বিষুবরেখা সমান superposition। ছোট তীর entanglement, mixed state বা noise বোঝাতে পারে।
Shot ফল
অনুকরণ করা মাপে প্রতিটি bit string কতবার এসেছে। সংখ্যা exact সম্ভাবনার চারপাশে র্যান্ডমভাবে ছড়ায়।
State vector
সম্ভাবনার complex amplitude; magnitude-এর বর্গ (real² + imaginary²) সম্ভাবনা।
| অবস্থা | বাস্তব অংশ | কাল্পনিক অংশ |
|---|
ভিত্তি: কীভাবে কাজ করে?
Program থেকে ভৌত কিউবিট
বাস্তব কোয়ান্টাম কম্পিউটার শুধু chip নয়। ধ্রুপদি electronics circuit-কে সুনির্দিষ্ট pulse-এ বদলে vacuum chamber-এর কিউবিট পরিবর্তন ও মাপে; ফল আবার ধ্রুপদি computer-এ ফেরে।
কিউবিট ও ভিত্তি অবস্থা
ধ্রুপদি bit 0 বা 1। কিউবিট দুই ভিত্তি অবস্থার superposition-এও থাকতে পারে |0⟩ এবং |1⟩। একাধিক কিউবিটে সব ভিত্তি অবস্থা bit string, যেমন |10⟩ ২ কিউবিটে—যেখানে q0 এই simulator-এ সব সময় বাঁয়ের সবচেয়ে গুরুত্বপূর্ণ bit।
সুপারপজিশন
Superposition-এ একাধিক ভিত্তি অবস্থার component থাকে। Complex amplitude-এর magnitude-এর বর্গ মাপের সম্ভাবনা দেয়।
Bloch sphere
এক কিউবিটকে sphere-এর তীরে দেখা যায়: উত্তর |0⟩, দক্ষিণ |1⟩, আর বিষুবরেখা সমান superposition। phase দিক নির্ধারণ করে। Rotation gate rx, ryএবং rz নিজ অক্ষ ঘিরে তীর ঘোরায়; S ও T Z অক্ষ ঘিরে phase ঘোরায়। Entanglement-এ তীর কেন্দ্রের দিকে ছোট হয়।
মাপ ও shot
measureAll() সব কিউবিট মেপে circuit শেষ করে। এক মাপে এক random ফল বলে circuit-কে ধারণাগতভাবে বহু shot মাপা হয় run({ shots }), ফলে histogram-এ বণ্টন দেখা যায়। exact সম্ভাবনা state vector থেকে আলাদা হিসাব হয়।
Hadamard gate
Hadamard gate h(q) কিউবিটকে নির্দিষ্ট অবস্থা (|0⟩ বা |1⟩) থেকে সমান superposition-এ নেয় |0⟩ এবং |1⟩ —মাপে প্রায় ৫০% / ৫০%।
Phase gate: S ও T
Gate s(q) এবং t(q) এক কিউবিটের মাপের সম্ভাবনা বদলায় না; শুধু |1⟩ কম্পনের বিস্তারের পর্যায়কে এস গেট ৯০° ও টি গেট ৪৫° ঘোরায়। হাডামার্ড গেটের মাঝের তরঙ্গ-হস্তক্ষেপে এর প্রভাব দেখা যায়। বিপরীত রূপ sdg(q) এবং tdg(q) বিপরীত দিকে ঘোরায়। দুই T = S, দুই S = Z।
CNOT ও শর্তাধীন entanglement
CNOT gate cnot(control, target) control কিউবিট অবস্থায় থাকলেই target উল্টায় |1⟩। control আগে superposition-এ থাকলে entanglement হতে পারে; নির্দিষ্ট অবস্থায় শুধু শর্তাধীন bit flip। তাই সব CNOT entanglement তৈরি করে না।
CZ: CNOT-এর সমমিত আত্মীয়
CZ gate cz(a, b) দুই কিউবিটই হলে amplitude-এর চিহ্ন উল্টায় |1⟩। control ও target নেই; দুই কিউবিটে একই কাজ। Target-এর আগে-পরে Hadamard দিলে CZ থেকে CNOT হয়। Grover-এ এটি গুরুত্বপূর্ণ।
GHZ: তিন কিউবিটের entanglement
GHZ Bell ধারণাকে তিন কিউবিটে বাড়ায়: এক Hadamard ও দুই CNOT-এর পর শুধু |000⟩ বা |111⟩ মাপে। তথ্য যৌথ সম্পর্কেই থাকে।
Deutsch: ক্ষুদ্রতম কোয়ান্টাম সুবিধা
এক oracle মূল্যায়নে ফাংশন স্থির নাকি সুষম জানা যায়, যেখানে ধ্রুপদি হিসাবে দুইবার লাগে। Superposition ও interference উত্তরকে input কিউবিটে রাখে।
Grover অনুসন্ধান: amplitude বাড়ানো
Oracle phase flip দিয়ে লক্ষ্য চিহ্নিত এবং diffusion তার amplitude বাড়ায়। দুই কিউবিটে এক ধাপেই ১০০% লক্ষ্য মাপে।
বিপরীতযোগ্য যোগ: quantum.add() থেকে circuit
ওপরের editor অনুবাদ করে quantum.add({ a, b }) X, CNOT ও CCNOT circuit-এ, যা তথ্য না ফেলে বিপরীতযোগ্যভাবে যোগ করে। CCNOTccnot(c1, c2, target)দুই control হলে target উল্টায় |1⟩ । X দিয়ে A ও B নির্দিষ্ট ভিত্তি অবস্থায় শুরু হয়। Superposition না থাকায় শেষে এক সঠিক যোগফল ১০০% আসে। তাই quantum.add() কোয়ান্টাম simulation হলেও নির্ধারিত ফল দেয়।
বিয়োগ: উল্টো যোগ
সব gate বিপরীতযোগ্য বলে পুরো adder উল্টো চালালে বিয়োগ হয়: quantum.subtract({ a, b }) adder-এর gate উল্টো ক্রমে a − b হিসাব করে। ঋণাত্মক ফল এড়াতে a ≥ b লাগে।
গুণ: quantum.multiply()
স্কুলের পদ্ধতিতে b-এর বসা bit অনুযায়ী a-কে সরে যাওয়া অবস্থানে যোগ করা হয়। প্রতিটি আংশিক যোগ বিপরীতযোগ্য। ১০ কিউবিট সীমার জন্য factor ০–৭।
ভাগ: quantum.divide()
ভাগও বিপরীতযোগ্য অংশ ব্যবহার করে: quantum.divide({ a, b }) ভাগশেষ register থেকে ভাজকের সরে যাওয়া বিয়োগে ভাগফল দেয় এবং ভাগশেষ (a = quotient · b + remainder)। Dividend, divisor, quotient এবং borrow কিউবিট ১০-এর মধ্যে থাকতে হওয়ায় bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 শর্ত পূরণ জরুরি; divisor b অন্তত ১। না মিললে editor ত্রুটি জানায়।
সত্যিকারের randomness: quantum.random()
ধ্রুপদি computer-এর random সংখ্যা deterministic algorithm। কোয়ান্টাম computer-এ quantum.random({ bits }) Hadamard দিয়ে প্রতিটি bit ৫০/৫০ superposition-এ এবং মাপ মৌলিকভাবে অনির্দেশ্য ফল দেয়। বাস্তব hardware-এ সত্যিকারের; এই simulator browser-এর pseudo-randomness দিয়ে নকল করে।
Simulator বনাম বাস্তব hardware
এই simulator browser-এ ধ্রুপদি floating-point দিয়ে সর্বোচ্চ ১০ কিউবিট exact হিসাব করে। বাস্তব computer ভৌত, ত্রুটিপ্রবণ কিউবিট ব্যবহার করে এবং বড় circuit-এ সুবিধা দেয়। এটি শেখার সরঞ্জাম, বাস্তব processor নয়।