量子コンピュータエラー緩和技術「mitiq」の紹介

https://github.com/unitaryfund/mitiq

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