Langkau ke kandungan utama

Keadaan rujukan

Dalam pelajaran ini, kita akan meneroka bagaimana kita boleh memulakan sistem kita dengan keadaan rujukan bagi membantu algoritma variasi kita menumpu dengan lebih cepat. Pertama, kita akan belajar cara membina keadaan rujukan secara manual, kemudian meneroka beberapa pilihan standard yang boleh digunakan dalam algoritma variasi.

Rajah pilihan untuk keadaan rujukan termasuk lalai, khusus aplikasi, dan kuantum.

Keadaan lalai

Keadaan rujukan merujuk kepada titik permulaan tetap dan awal untuk masalah kita. Untuk menyediakan keadaan rujukan, kita perlu menerapkan unitary yang sesuai dan tidak berparameter URU_R pada permulaan litar kuantum kita, supaya ρ=UR0|\rho\rangle = U_R |0\rangle. Jika Anda ada tekaan yang berpengetahuan atau titik data daripada penyelesaian optimum yang sedia ada, algoritma variasi kemungkinan besar akan menumpu lebih cepat jika Anda menggunakannya sebagai titik permulaan.

Keadaan rujukan yang paling mudah ialah keadaan lalai, di mana kita menggunakan keadaan permulaan litar kuantum nn-qubit: 0n|0\rangle^{\otimes n}. Untuk keadaan lalai, operator unitary kita ialah URIU_R \equiv I. Disebabkan kesederhanaannya, keadaan lalai adalah keadaan rujukan yang sah dan digunakan dalam banyak senario.

Keadaan rujukan klasik

Katakan Anda mempunyai sistem tiga qubit dan Anda mahu bermula dalam keadaan 001|001\rangle dan bukannya keadaan lalai 000|000\rangle. Ini adalah contoh keadaan rujukan yang sepenuhnya klasik, dan untuk membinanya, Anda hanya perlu menerapkan get X pada qubit 00 (mengikut susunan qubit Qiskit), kerana 001=X0000|001\rangle = X_0 |000\rangle.

Dalam kes ini, operator unitary kita ialah URX0U_R \equiv X_0, yang membawa kepada keadaan rujukan ρ001|\rho\rangle \equiv |001\rangle.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit

qc = QuantumCircuit(3)
qc.x(0)

qc.draw("mpl")

Output of the previous code cell

Keadaan rujukan kuantum

Katakan Anda ingin bermula dengan keadaan yang lebih kompleks yang melibatkan superposisi dan/atau keterkaitan, seperti 12(100+111)\frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

Untuk mendapatkan keadaan ini daripada 000|000\rangle, salah satu pendekatan ialah menggunakan get Hadamard pada qubit 00 (H0H_0), get CNOT (CX) dengan qubit 00 sebagai qubit kawalan dan qubit 11 sebagai qubit sasaran (CNOT01CNOT_{01}), dan akhirnya get XX yang diterapkan pada qubit 22 (X2X_2).

Dalam senario ini, operator unitary kita ialah URX2CNOT01H0000U_{R} \equiv X_2CNOT_{01}H_0|000\rangle, dan keadaan rujukan kita ialah ρ12(100+111)|\rho\rangle \equiv \frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)

qc.draw("mpl")

Output of the previous code cell

Membina Keadaan Rujukan menggunakan litar templat

Kita juga boleh menggunakan pelbagai litar templat, seperti TwoLocal yang membolehkan ungkapan pelbagai parameter boleh laras dan keterkaitan dengan mudah. Kita akan membincangkan litar templat ini dengan lebih terperinci dalam pelajaran seterusnya, tetapi kita boleh menggunakannya untuk keadaan rujukan kita sekiranya kita mengikat parameter:

from qiskit.circuit.library import TwoLocal
from math import pi

reference_circuit = TwoLocal(2, "rx", "cz", entanglement="linear", reps=1)
theta_list = [pi / 2, pi / 3, pi / 3, pi / 2]

reference_circuit = reference_circuit.assign_parameters(theta_list)

reference_circuit.decompose().draw("mpl")

Output of the previous code cell

Keadaan rujukan khusus aplikasi

Pembelajaran mesin kuantum

Dalam konteks pengelas kuantum variasi (VQC), data latihan dikodkan ke dalam keadaan kuantum dengan litar berparameter yang dikenali sebagai peta ciri, di mana setiap nilai parameter mewakili titik data daripada set data latihan. zz_feature_map adalah sejenis litar berparameter yang boleh digunakan untuk menghantar titik data kita (xx) kepada peta ciri ini.

from qiskit.circuit.library import zz_feature_map

data = [0.1, 0.2]

zz_feature_map_reference = zz_feature_map(feature_dimension=2, reps=2)
zz_feature_map_reference = zz_feature_map_reference.assign_parameters(data)
zz_feature_map_reference.decompose().draw("mpl")

Output of the previous code cell

Ringkasan

Dengan pelajaran ini, Anda telah belajar cara memulakan sistem Anda menggunakan:

  • Keadaan rujukan lalai
  • Keadaan rujukan klasik
  • Keadaan rujukan kuantum
  • Keadaan rujukan khusus aplikasi

Beban kerja variasi peringkat tinggi kita kelihatan seperti berikut:

Rajah litar operator unitary yang menyediakan keadaan rujukan.

Walaupun keadaan rujukan adalah titik permulaan tetap dan awal, kita boleh menggunakan bentuk variasi untuk mentakrifkan ansatz bagi mewakili koleksi keadaan berparameter untuk algoritma variasi kita terokai.