CNOT二面角
class qiskit.quantum_info.CNOTDihedral(data=None, num_qubits=None, validate=True)
ベース: BaseOperator, AdjointMixin
CNOT-Dihedral群のN量子ビット演算子。
CNOT-Dihedral群は量子ゲートによって生成される、
CXGate,TGateとXGate.表現
-qubitのCNOT-Dihedral演算子は、文献 [1, 2の]慣例に基づき、アフィン関数と位相多項式として格納される。
アフィン関数は、 逆転可能な2値行列と、 2値ベクトルで構成される。
位相多項式は、 変数で、最大3次の多項式であり、その係数は8個の要素を持つ環 Z_8 にある。
from qiskit import QuantumCircuit from qiskit.quantum_info import CNOTDihedral circ = QuantumCircuit(3) circ.cx(0, 1) circ.x(2) circ.t(1) circ.t(1) circ.t(1) elem = CNOTDihedral(circ) # Print the CNOTDihedral element print(elem)
phase polynomial =
0 + 3*x_0 + 3*x_1 + 2*x_0*x_1
affine function =
(x_0,x_0 + x_1,x_2 + 1)回路変換
CNOTDihedral オペレータは、以下のゲートのみを含む回路から初期化できます:
IGate,XGate,YGate,ZGate,TGate,TdgGateSGate,SdgGate,CXGate,CZGate,CSGate,CSdgGate,SwapGate,CCZGate。これらは、それぞれ メソッドto_circuit()またはto_instruction()メソッドQuantumCircuitを使用して、, またはGateオブジェクトに戻すことができます。 なお、量子ビットの数が2を超える場合、この分解はゲート数の点で必ずしも最適とは限らないことに注意してください。CNOTDihedral演算子は、次のようにオブジェクトに変換することもできる。
Operatorオブジェクトに変換することもできます。to_operator()メソッドを使ってオブジェクトに変換することもできます。 これは回路に分解し、その回路をユニタリー演算子としてシミュレートすることによって行われる。参照資料:
- Shelly Garion and Andrew W. Cross, 最適な2量子ゲート数を持つCNOT-Dihedral回路の合成, Quantum 4(369), 2020
- Andrew W. Cross, Easwar Magesan, Lev S. Bishop, John A. Smolin and Jay M. Gambetta, Scalable randomized benchmarking of non-Clifford gates, npj Quantum Inf 2, 16012 (2016).
CNOTDihedral 演算子オブジェクトを初期化します。
パラメーター
- data (CNOTDihedral orQuantumCircuit orInstruction) – 初期化用の演算子。
- num_qubits (int) – 空のCNOTDihedral演算子を初期化する。
- validate (bool) – True の場合、CNOTDihedral 要素を検証します。
レイズ
- QiskitError - 型が無効な場合
- QiskitError - validate=TrueでCNOTDihedral要素が無効な場合。
属性
dim
タプル(input_shape, output_shape)を返す。
name
操作タイプを表す一意の文字列識別子。
num_clbits
クラシックビットの数。
num_qubits
N量子ビット演算子の場合は量子ビット数を、それ以外の場合はNoneを返す。
qargs
演算子の qargs を返す。
方法
adjoint
compose
compose(other, qargs=None, front=False)
別の CNOTDihedral との合成演算子を返す。
パラメーター
- other (CNOTDihedral) – CNOTDihedral オブジェクト。
- qargs (list or None) – 他の処理を適用するサブシステムの位置のリスト。 すべてのサブシステムに「None」が適用される場合(デフォルト:None)。
- front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].
戻り値
構成されたCNOTDihedral。
戻りの型
レイズ
QiskitError - 他が演算子に変換できない場合、または指定されたサブシステムに対して互換性のない寸法を持つ場合。
conjugate
copy
dot
dot(other, qargs=None)
右掛け演算子 self * other を返す。
パラメーター
- other (Operator) – 演算子オブジェクト。
- qargs (list or None) – 他の処理を適用するサブシステムの位置のリスト。 すべてのサブシステムに「None」が適用される場合(デフォルト:None)。
戻り値
演算子を乗じた右行列。
戻りの型
ドット積は、 @ 二項演算子を用いて求めることができる。 したがって、 a.dot(b) は a @ b と等価である。
expand
expand(other)
別のCNOTDihedralとの逆次テンソル積を返す。
パラメーター
other (CNOTDihedral) – CNOTDihedral オブジェクト。
戻り値
テンソル積 。
は現在のCNOTDihedralであり、 はもう一つのCNOTDihedralである。
戻りの型
input_dims
output_dims
power
power(n)
演算子をそれ自身と n 回組み合わせて返します。
パラメーター
n (int) – self ( n>0 ) と合成する回数。
戻り値
n回合成された演算子。
戻りの型
レイズ
QiskitError - 演算子の入力と出力の次元が等しくない場合、またはべき乗が正の整数でない場合。
reshape
reshape(input_dims=None, output_dims=None, num_qubits=None)
入出力サブシステムの寸法を変更した浅いコピーを返す。
パラメーター
- input_dims (None or tuple) – 新しいサブシステムの入力寸法。 None の場合、元の入力ディムが保持される [Default:なし]。
- output_dims (None or tuple) – 新しいサブシステムの出力寸法。 None の場合、元の出力ディムが保持される [Default:なし]。
- num_qubits (None or int) – N-qubit 演算子への再形成[デフォルト:なし]。
戻り値
入出力寸法を整形した self を返す。
戻りの型
BaseOperator
レイズ
QiskitError - すべてのサブシステム入力次元またはサブシステム出力次元の合計サイズが一定でない場合。
tensor
tensor(other)
別のCNOTDihedralとのテンソル積を返す。
パラメーター
other (CNOTDihedral) – CNOTDihedral オブジェクト。
戻り値
テンソル積 。
は現在のCNOTDihedralであり、 はもう一つのCNOTDihedralである。
戻りの型
テンソル積は、 ^ 二項演算子を用いて求めることができる。 したがって、 a.tensor(b) は a ^ b と等価である。
to_circuit
to_circuit()
CNOT-Dihedral 要素を実装した QuantumCircuit を返す。
戻り値
CNOTDihedralオブジェクトの回路実装。
戻りの型
参考文献
- Shelly Garion and Andrew W. Cross, 最適な2量子ゲート数を持つCNOT-Dihedral回路の合成, Quantum 4(369), 2020
- Andrew W. Cross, Easwar Magesan, Lev S. Bishop, John A. Smolin and Jay M. Gambetta, Scalable randomized benchmarking of non-Clifford gates, npj Quantum Inf 2, 16012 (2016).