Qiskit 2.0で逆量子フーリエ変換
前回の記事では量子フーリエ変換の具体例やメリットについて確認しました。
今回の記事ではQiskit 2.0で実際に逆量子フーリエ変換を実行し、元々の量子状態が判別できることを確認します。
Amazon Braket学習コース
量子コンピュータの基本的な知識や、Amazon Braketの使い方についてはこちらのコースで効率的に学べます。
量子コンピュータやAWSの知識が無い方でも学び始められ、最終的には量子機械学習についても学べます。 こちらも利用し、量子技術のスキルを身につけましょう!
はじめての量子コンピューター入門【基礎知識・Qiskitでの実装・量子機械学習 全て学べる】
量子コンピューターの入門コースを作成しました。このコースにより、量子コンピューターの基礎知識、Qiskitでの実装、量子機械学習について学べます。
Qiskit 2.0で逆量子フーリエ変換
前回の記事の例で、ある2量子ビットが$\psi_1 = \frac{1}{2} \left( \ket{00} + i\ket{01} - \ket{10} - i\ket{11} \right)$もしくは$\psi_2 = \frac{1}{2} \left( \ket{00} - \ket{01} + \ket{10} - \ket{11} \right)$どちらかの状態で存在していた場合、逆量子フーリエ変換を用いることで、どちらの状態か判別可能と説明しました。
今回はQiskitで実際に逆量子フーリエ変換を行い、元々の量子状態が判別できることを確認します。
まずは必要となる関数をimportします。
from qiskit import QuantumCircuit
from qiskit.circuit.library import StatePreparation
from qiskit.primitives import StatevectorSampler
from qiskit.circuit.library import QFT
Samplerや、量子回路定義します。
sampler = StatevectorSampler()
n_qubits = 2
qc = QuantumCircuit(n_qubits, 2)
今回対象とする量子ビットの状態は$\psi_2$とし、この状態を生成する量子回路を以下でappendします。
state = [1/2, - 1/2, 1/2, - 1/2]
prep = StatePreparation(state)
qc.append(prep, [0, 1])
ちなみにこのまま量子状態を測定するだけでは以下のような結果しか得られず、$\psi_1$であったか$\psi_2$であったかの判別はできません。
qc.measure([0,1], [0,1])
pub = (qc, None)
job = sampler.run([pub], shots=100)
result=job.result()[0]
print(result.data.c.get_counts())
# Output
{'01': 27, '10': 27, '11': 23, '00': 23}
では逆量子フーリエ変換を実装しましょう。
iqft = QFT(num_qubits=n_qubits, inverse=True, do_swaps=True)
qc.append(iqft, [0, 1])
qc.measure([0,1], [0,1])
全体的な回路は以下の通りです。前回の記事での例の通り、$\ket{01}$が観測された場合は元々の状態は$\psi_1$であったことを、$\ket{10}$が観測された場合は$\psi_2$であったこと意味します。
qc.draw('mpl')
以下で量子回路を実行します。
pub = (qc, None)
job = sampler.run([pub], shots=100)
result=job.result()[0]
print(result.data.c.get_counts())
結果は以下の通り$\ket{10}$が観測されます。$\psi_2$の状態が生成されていたことが分かりました。 同様に、$\psi_1$の状態を生成した後に、逆量子フーリエ変換を実行すると$\ket{01}$が観測されます。是非試してみてください。
# Output
{'10': 100}
次の記事では、Amazon Braket SDKを用いて逆量子フーリエ変換を実行します。
Amazon Braket学習コース
量子コンピュータの基本的な知識や、Amazon Braketの使い方についてはこちらのコースで効率的に学べます。
量子コンピュータやAWSの知識が無い方でも学び始められ、最終的には量子機械学習についても学べます。 こちらも利用し、量子技術のスキルを身につけましょう!
はじめての量子コンピューター入門【基礎知識・Qiskitでの実装・量子機械学習 全て学べる】
量子コンピューターの入門コースを作成しました。このコースにより、量子コンピューターの基礎知識、Qiskitでの実装、量子機械学習について学べます。