butch’s blog

メモ置き場。

【Qiskit Textbook】1. Quantum State and Qubits

個人的メモ。

1.2 Atoms Computation

1量子ビットの加算はNOT, CNOT, Toffoliゲートで行える。
(CNOTゲートはなくても良いみたいです。)
Toffoliゲートは3量子ビットに間に働く制御ゲートでQiskitではccxとして提供されている。
実装はめんどくさそう。

qiita.com

1量子ビットの加算が行えればプログラミングではほとんど何でも出来る。

1.3 Representing Qubit States

初期状態の設定

initial_state = [0,1]
qc.initialize(initial_state, 0)

initial_stateに設定するのは1量子ビットを2次元の複素ベクトルで展開した時の値を入力する。
qc.initializeの第2引数には初期化するビットの番号を入力する。
上の例では0番目のビットを$(0, 1) = \left|{1}\right\rangle$に初期化している。
initial_stateで設定する係数の値が規格化した時に1になっていないとエラーになる。

statevector

svsim = Aer.get_backend('statevector_simulator') # Tell Qiskit how to simulate our circuit

statevector_simulator.get_statevector()を使うと途中の量子状態を複素ベクトルとして取り出せる。(実際の量子コンピュータでは不可能)
qasm_simulatorには.get_statevector()が備わっていない。(実際の量子コンピュータで行える操作に寄せている。)

Measurement

回路の途中に測定を行うとその時点で状態が確定してしまう。

qc = QuantumCircuit(1) # We are redefining qc
initial_state = [0.+1.j/sqrt(2),1/sqrt(2)+0.j]
qc.initialize(initial_state, 0)
qc.measure_all()
qobj = assemble(qc)
state = svsim.run(qobj).result().get_statevector()
print("State of Measured Qubit = " + str(state))

1.4 Single Qubit Gates

Outer Product

Xゲートをブラケット表記すると$ \left|{0}\right\rangle \left\langle{1}\right| + \left|{1}\right\rangle \left\langle{0}\right|$である。
このブラケットの状態から外積(Outer Product)を行うことで行列表示に出来る。
$\left|{0}\right\rangle = (1, 0)^{T}, \left|{1}\right\rangle = (0, 1)^{T}$なので$ \left|{0}\right\rangle \left\langle{1}\right|$は、


 \left|{0}\right\rangle  \left\langle{1}\right| = \left(
    \begin{array}{cc}
      1 *(0, 1) \\
      0 * (0, 1)
    \end{array}
  \right) =  \left( \begin{array}{cc}
      0 & 1 \\
      0 & 0
    \end{array}
  \right)

になる。
$ \left|{1}\right\rangle \left\langle{0}\right|$も同様にすると、


 \left|{1}\right\rangle  \left\langle{0}\right| = \left( \begin{array}{cc}
      0 & 0 \\
      1 & 0
    \end{array}
  \right)

となる。

1.5 The Case for Quantum Computers

  • デジタルコンピュータ:0と1の離散値を使う。エラーが多いけど訂正する仕組みが整っている。
  • アナログコンピュータ:連続値を使用する。エラーが小さいため検出できず訂正しにくい。
  • 量子コンピュータ:0と1の離散値だが連続的なパラメータで制御できる。粒子と波動の2重性に由来する。