Quantum Computing - Part 3
5 February 2023
quantum computingqubittensor productvectorMultiple qubits
Qubit တစ်ခုကို vector အနေနဲ့ ဖော်ပြရတယ်ဆိုတာ အရှေ့ပိုင်းမှာပြောခဲ့ပါတယ်။ Qubit ရဲ့ complex amplitude တွေကို basis တစ်ခုမှာ column vector အနေနဲ့ရေးလို့ရပါတယ်။ Measurement probability တွေက သက်ဆိုင်ရာ basis vector ရဲ့ amplitude နှစ်ထပ်ကိန်းအသီးသီးဖြစ်ပါတယ်။
Qubit တစ်ခုထက်ပိုလာရင်ရော ဘယ်လိုဖော်ပြမလဲ။ vector တစ်ခုချင်းစီအနေနဲ့ ဖော်ပြပြီး vector algebra ကိုသုံးလို့ရမလား။ ဒီလိုလုပ်လို့မရပါဘူး။ အကြောင်းကတော့ qubit တွေက သီးသန့်ရှိနေတာမဟုတ်ပဲ တစ်ခုပေါ်တစ်ခုသက်ရောက်မှုရှိနိုင်တဲ့အတွက် multiple qubit state ရဲ့ basis က single qubit basis ထက်ပိုပြီးကျယ်ပြန့်ပါတယ်။
Vector နှစ်ခု အချင်းချင်းဆက်နွယ်တဲ့ component မျိုးစုံကိုပြချင်တဲ့အခါ tensor product ဆိုတာကိုသုံးပါတယ်။ ဒီလိုပဲ two-qubit စနစ်ကို qubit vector နှစ်ခုရဲ့ tensor product နဲ့ဖော်ပြပါတယ်။ ဥပမာ computational basis မှာ qubit နှစ်ခုဖြစ်တဲ့ နဲ့ ရှိတယ်ဆိုပါစို့။ ဒါဆိုရင် two-qubit စနစ်ဖြစ်တဲ့ ဟာ သူတို့နှစ်ခုရဲ့ tensor product ဖြစ်ပါတယ်။ (O-times လို့ဖတ်) သင်္ကေတနဲ့ပြတဲ့ tensor product လုပ်ပ ုံကတော့ အောက်မှာပြထားတဲ့အတိုင်း component တွေကိုအတွဲလိုက် မြှောက်လိုက်တာပါပဲ။
မှတ်ချက်။ Component လေးခုပါတဲ့ Rank-2 tensor product တွေကိုရေးတဲ့အခါ matrix ပုံစံနဲ့ရေးလေ့ရှိပါတယ်။ ဒါပေမယ့် ဒီနေရာမှာတော့ ကြည့်ရလွယ်အောင် vector ပုံစံနဲ့ပဲရေးပါမယ်။
Muliple qubit ၏ basis
ဒီ tensor product ရဲ့ basis vector တွေကဘာတွေဖြစ်မလဲ။ ဒါကိုသိဖို့ single qubit basis နှစ်ခုကို tensor product လုပ်လိုက်ရုံပါပဲ။
ဒီတော့ two-qubit system အတွက် component-basis ပုံစံနဲ့ဆိုရင်−
ဒီ 2-qubit ကို measurement လုပ်ရင်ရမယ့် (classical bit) binary တန်ဖိုးတွေက binary basis တွေဖြစ်ပြီး probability က သက်ဆိုင်ရာ amplitude ပကတိတန်ဖိုးရဲ့ နှစ်ထပ်ကိန်းဖြစ်ပါတယ်။ တနည်းပြောရင် 2-qubit state နဲ့ တိုင်းချင်တဲ့ basis ရဲ့ inner product နှစ်ထပ်ကိန်းဖြစ်ပါတယ်။
Normalization rule အရ ဖြစ်နိုင်တဲ့ measurement တွေရဲ့ probability စုစုပေါင်းက 1 ဖြစ်တဲ့အတွက် amplitude နှစ်ထပ်ကိန်းအားလုံးပေါင်းလဒ်က 1 နဲ့ညီရပါမယ်။
Two-qubit ဥပမာများ
ဒီတော့ two-qubit state ဥပမာတစ်ချို့ကို ကြည့်လို့ရပါပြီ။ တွေ့ရများတဲ့ two-qubit state တွေက ကိုယ်ပိုင်နာမည်ရှိတာကြောင့် သူတို့နာမည်တွေပါပြထားပါတယ်။ ပုံမှန်အားဖြင့် two-qubit state တခုမှာ component လေးခုပါရမှာဖြစ်ပေမယ့် 0 တန်ဖိုး component တွေကို ဖျောက်ရေးထားပါတယ်။ ဒီ state တွေက valid state တွေဖြစ်သလားဆိုတာ normalization rule နဲ့စစ်ကြည့်ပါ။
Multi-qubit basis ကို decimal ပုံစံဖြင့်ဖော်ပြခြင်း
Multi-qubit စနစ်ရဲ့ tensor product basis ကို အပေါ်မှာပြထားတဲ့ပုံစံအပြင် တခြားပုံစံတွေနဲ့လည်းရေးလေ့ရှိပါတယ်။ သိသာတဲ့ပုံစံတစ်ခုကတော့ သင်္ကေတအထဲကကိန်းတွေကို binary ကိန်းတွေအဖြစ်ယူဆပြီးရေးတာပါပဲ။ Binary ကိန်းတွေလို့ယူဆရင် ညီမျှတဲ့ decimal တန်ဖိုးတွေအနေနဲ့လည်း ရေးလို့ရပါတယ်။ ဥပမာ ဆိုရင် လို့ရေးပါတယ် (2-qubit စနစ်မှန်းသိအောင် subscript 2 ကိုထည့်ရေးထားပါတယ်)။
Tensor product basis ထဲမှာပါတဲ့ basis vector တွေကို အခြေခံ component တွေအလိုက်ဖြန့်ကြည့်ရင်−
ဒီ basis vector လေးခုက mutually orthogonal ဖြစ်တယ်ဆိုတာ အလွယ်တကူတွေ့နိုင်ပါတယ်။ ဒီတော့ two-qubit state တစ်ခုဟာ 4-D complex vector တစ်ခုဖြစ်ပါတယ်။ ဒီညီမျှခြင်းတွေကနေပြီး တွေ့နိုင်တာနောက်တစ်ခုက ထဲက decimal ကိန်းက column vector ထဲမှာ 1 ရှိတဲ့ row နံပါတ် (-1) ဖြစ်ပြီး ကျန်ကိန်းတွေက 0 ဖြစ်ပါတယ်။ ဥပမာ ဆိုရင် 11 က 3 နဲ့ညီမျှတဲ့အတွက် (၀ ကိုထည့်တွက်ရင်) column vector ရဲ့ ၄−တန်းမြောက်ကိန်းက 1 ဖြစ်ပါလိမ့်မယ်။
နှစ်ခုထက်ပိုတဲ့ qubit တွေအတွက်လည်း အလားတူပဲ tensor product ပုံစံနဲ့ရေးလို့ရပါတယ်။ Basis vector တွေကိုတွက်မယ်ဆိုရင် tensor product အဆင့်အဆင့်မြှောက်ပြီး တွက်လို့ရပါတယ်။ ဥပမာ 3-qubit ဆိုရင် dimension ရှိတာကြောင့် basis ၈ ခုရှိပါမယ်။ ဒါကြောင့် ယေဘူယျအားဖြင့် n-qubit စနစ်မှာ အရေအတွက်ရှိတဲ့ basis vector နဲ့ component တွေရှိပါတယ်။
n-qubit state နဲ့ normalization condition ကို အရိုးရှင်းဆုံးပုံစံနဲ့ရေးပြရင်−
ဒီနေရာမှာ basis vector နဲ့ component index တွေကို decimal notation နဲ့ရေးထားတာပါပဲ။
Single qubit state တစ်ခုချင်းစီကနေ multiple qubit state ကို tensor product လုပ်ပြီးဖော်ပြထားတာကို product state လို့ခေါ်ပါတယ်။ ဒါပေမယ့် နောက်ဆုံးရလဒ်ဖြစ်တဲ့ multiple qubit state ကိုအရင်ပေးထားရင် အဲ့ဒီ့ကနေ single qubit တွေကို ပြန်ခွဲထုတ်ဖို့က အမြဲတမ်းမဖြစ်နိုင်ပါဘူး။ Product state မဟုတ်တဲ့ state တွေကို entangled state လို့ခေါ်ပါတယ်။ Entanglement က ဘယ်လို state မျိုးလဲဆိုတာ နောက်ပိုင်းမှာတွေ့ရပါလိမ့်မယ်။
Quantum vs classical computing (n-qubits vs n-bits)
n-qubit state တစ်ခုဟာ dimension ရှိတဲ့ complex vector တစ်ခုဖြစ်တာကြောင့် n-qubit state ကိုဖော်ပြဖို့ complex number တွေလိုအပ်ပါတယ်။ Classical စနစ်မှာတော့ n-bit state ကိုဖော်ပြဖို့ n အရေအတွက် bit တွေပဲလိုပါတယ်။ ဥပမာ 3-bit state ကိုပြဖို့ bit ၃ ခုပဲလိုပေမယ့် 3-qubit state ကိုဖော်ပြဖို့ complex number ၈ ခုလိုပါတယ်။ 30-qubit state ဆိုရင် component တွေလိုတဲ့အတွက် သူ့ကို classical computer နဲ့ simulate လုပ်ဖို့ အနည်းဆုံး memory 1 GB လိုပါလိမ့်မယ်။ 35-qubit အတွက်ဆိုရင်တော့ ဖြစ်တဲ့အတွက် 34 GB memory လိုသွားပါပြီ။ ဒီလို qubit state ကိုဖော်ပြဖို့လိုအပ်တဲ့ component တွေက qubit အရေအတွက်အလိုက် exponential scale ဖြစ်နေတာကြောင့် quantum စနစ်တွေကို classical computer တွေနဲ့ simulate လုပ်ဖို့အလွန်ခက်ခဲတာဖြစ်ပါတယ်။
import numpy as npimport matplotlib.pyplot as pltn = np.linspace(1,50,50) mem = 2**n / 1e9plt.plot(n, mem)plt.grid('on')plt.yscale('log')plt.xlabel('n_qubits')plt.ylabel('Memory (GB) (at least)')
Multiple qubits in Qiskit
Qubit တစ်ခုထက်ပိုပါတဲ့ quantum circuit ကို ဘယ်လိုတည်ဆောက်မလဲဆိုတာ ကြည့်ရအောင်။
from qiskit import QuantumCircuit, Aer, executefrom qiskit.visualization import plot_histogram, plot_bloch_multivector# Build a two-qubit quantum circuitqc = QuantumCircuit(2)# Initialize the qubits in the state |01⟩qc.initialize('01', [0, 1])qc.measure_all()qc.draw('mpl')
Single qubit တုန်းကအတိုင်းပဲ QuantumCirciut
ကို qubit 2 ခုနဲ့ဆောက်မယ်လို့ပြောလိုက်ပါတယ်။ ဒုတိယလိုင်းမှာတော့ two-qubit state ကို 01
နဲ့ initialize လုပ်ထားပါတယ် (ဒုတိယ argument က qubit နှစ်ခုရဲ့ index ဖြစ်ပါတယ်) [0, 1]
ဆိုတာကြောင့် default order အတိုင်းပဲ qubit 0 က ဖြစ်ပြီး qubit 1 က ဖြစ်ပါမယ်။ ဒီ state ကိုတိုင်းတာရင် သူ့ရဲ့တွဲဖက် binary output ဖြစ်တဲ့ 01 ကို 100% ရပါမယ်။
# run the circuit in a simulatorcounts = execute(qc, Aer.get_backend('qasm_simulator')).result().get_counts()plot_histogram(counts)
Multiple qubit state ကို Qiskit မှာ plot_bloch_multivector
နဲ့ visualize လုပ်လို့ရပါတယ်။ ဒီ function က qubit တစ်ခုစီအတွက် Bloch sphere ပေါ်မှာသက်ဆိုင်ရာ state ကိုပြပေးပါတယ်။ ဒါပေမယ့်ာ tensor product ကနေ single qubit တစ်ခုစီသပ်သပ်ခွဲထုတ်လို့မရတဲ့ entangled state တွေဆိုရင် visualize လုပ်လို့ရမှာမဟုတ်ပါဘူး။
from qiskit.quantum_info import Statevectorqc = QuantumCircuit(2)# Initialize the qubits in the state |01⟩qc.initialize('01', [0, 1])state = Statevector(qc)plot_bloch_multivector(state, reverse_bits=True)