今話題の量子力学(Qubit)を使った一番簡単な計算をしてみよう | Study with Me #9
はじめに・今回の課題
みなさん、こんにちは。投資エンジニアです。
前回、IBMのQiskitを使って量子の最小単位Qubitを3D化しました。
今回は、Qubitを使った一番簡単な計算をしてみましょう。NOTです。実際量子力学と言っても複雑な数式を使わないと計算できないと皆さんは思いでしょうか?実は、量子力学でも簡単な計算は現在のパソコンで出来ます。
NOTとは、入力値を逆にする論理回路です。入力値が0の場合、出力は1となります。入力値が1の場合、出力は0となります。
今回使用するソフトウェアの紹介
今回もQiskitを使ってGoogleのColabを使いました。
この下のリンクでコードを共有しています。
作り方と説明
NOTは、Qubitを用いるとPythonでこのように書けます。Qiskitの例を用いています。Google Colabで共有した2段落目で参考コードを実行できます。
def NOT(inp):
"""An NOT gate.
Parameters:
inp (str): Input, encoded in qubit 0.
Returns:
QuantumCircuit: Output NOT circuit.
str: Output value measured from qubit 0.
"""
qc = QuantumCircuit(1, 1) # A quantum circuit with a single qubit and a single classical bit
qc.reset(0)
# We encode '0' as the qubit state |0⟩, and '1' as |1⟩
# Since the qubit is initially |0⟩, we don't need to do anything for an input of '0'
# For an input of '1', we do an x to rotate the |0⟩ to |1⟩
if inp=='1':
qc.x(0)
# barrier between input state and gate operation
qc.barrier()
# Now we've encoded the input, we can do a NOT on it using x
qc.x(0)
#barrier between gate operation and measurement
qc.barrier()
# Finally, we extract the |0⟩/|1⟩ output of the qubit and encode it in the bit c[0]
qc.measure(0,0)
qc.draw('mpl')
# We'll run the program on a simulator
backend = Aer.get_backend('qasm_simulator')
# Since the output will be deterministic, we can use just a single shot to get it
job = execute(qc, backend, shots=1, memory=True)
output = job.result().get_memory()[0]
return qc, output
ここで、このNOT functionを使って入力値によってどのように出力が出るのか見ていきましょう。
## Test the NOT function
for inp in ['0', '1']:
qc, out = NOT(inp)#use the custom NOT function above
print('NOT with input',inp,'gives output',out)
%matplotlib inline
display(qc.draw('mpl'))
print('\n')
最初の例は、qubitの入力値が0のときです。赤で囲まれたところがNOTの計算過程です。
次の例は、qubitの入力値が1のときです。青で囲まれたところがqubitの入力値を1にする過程です。先ほどと同様にX(NOT gate)を実行します。
完成と遊び方
先程ほど紹介した通り下のリンクで実際にコードを実行して納得するまで遊べます。
Google Colabの4番目のコードに行くとQubitの値(0または1)を入力できます。
そうするとあら不思議、Qubitの回路を自動的に作れました!
次は、Qubitの回路について詳しく見ていきましょう。読んでくれてありがとうございます。
この記事が気に入ったらサポートをしてみませんか?