mitiqとは
量子コンピュータにエラー緩和技術を実装するための
パッケージです。
現在の量子コンピュータは、
- 環境との相互作用
- 不完全なゲートアプリケーション
- 状態準備や測定エラー
などによりノイズが多くなっています。
エラー緩和は、量子プログラムを巧妙にコンパイルすることで、
これらの影響をソフトウェアレベルで軽減しようとするものです。
始める
インストールします。
!pip install mitiq
回路を入力し、計算したい期待値を返す関数を定義し、
mitiqを使用してエラーを軽減します。
import cirq
from mitiq import zne, benchmarks
def execute(circuit: cirq.Circuit, noise_level: float = 0.001) -> float:
"""Returs Tr[ρ |0⟩⟨0|] where ρ is the state prepared by the circuit with depolarizing noise."""
noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))
return cirq.DensityMatrixSimulator().simulate(noisy_circuit).final_density_matrix[0, 0].real
circuit: cirq.Circuit = benchmarks.generate_rb_circuits(n_qubits=1, num_cliffords=50)[0]
true_value = execute(circuit, noise_level=0.0) # 理想
noisy_value = execute(circuit) # ノイズ有
zne_value = zne.execute_with_zne(circuit, execute) # ノイズ有 + mitiq
print(f"Error (w/o Mitiq): %0.4f" %abs((true_value - noisy_value) / true_value))
print(f"Error (with Mitiq): %0.4f" %abs((true_value - zne_value) / true_value))
Error (w/o Mitiq): 0.0688
Error (with Mitiq): 0.0002