Skip to main content
IBM Quantum Platform

CNOT二面角

class qiskit.quantum_info.CNOTDihedral(data=None, num_qubits=None, validate=True)

GitHub

ベース: BaseOperator, AdjointMixin

CNOT-Dihedral群のN量子ビット演算子。

CNOT-Dihedral群は量子ゲートによって生成される、 CXGate, TGateXGate.

表現

NN -qubitのCNOT-Dihedral演算子は、文献 [1, 2の]慣例に基づき、アフィン関数と位相多項式として格納される。

アフィン関数は、 N×NN \times N 逆転可能な2値行列と、 NN 2値ベクトルで構成される。

位相多項式は、 NN 変数で、最大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, TdgGate SGate, SdgGate, CXGate, CZGate, CSGate, CSdgGate, SwapGate, CCZGate。これらは、それぞれ メソッド to_circuit() または to_instruction() メソッド QuantumCircuitを使用して、, または Gate オブジェクトに戻すことができます。 なお、量子ビットの数が2を超える場合、この分解はゲート数の点で必ずしも最適とは限らないことに注意してください。

CNOTDihedral演算子は、次のようにオブジェクトに変換することもできる。 Operator オブジェクトに変換することもできます。 to_operator() メソッドを使ってオブジェクトに変換することもできます。 これは回路に分解し、その回路をユニタリー演算子としてシミュレートすることによって行われる。

参照資料:

  1. Shelly Garion and Andrew W. Cross, 最適な2量子ゲート数を持つCNOT-Dihedral回路の合成, Quantum 4(369), 2020
  2. 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 要素を検証します。

レイズ


属性

dim

タプル(input_shape, output_shape)を返す。

name

操作タイプを表す一意の文字列識別子。

num_clbits

クラシックビットの数。

num_qubits

N量子ビット演算子の場合は量子ビット数を、それ以外の場合はNoneを返す。

qargs

演算子の qargs を返す。


方法

adjoint

adjoint()

GitHub

演算子の随伴点を返します。

compose

compose(other, qargs=None, front=False)

GitHub

別の CNOTDihedral との合成演算子を返す。

パラメーター

  • other (CNOTDihedral) – CNOTDihedral オブジェクト。
  • qargs (list or None) – 他の処理を適用するサブシステムの位置のリスト。 すべてのサブシステムに「None」が適用される場合(デフォルト:None)。
  • front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].

戻り値

構成されたCNOTDihedral。

戻りの型

CNOT二面体

レイズ

QiskitError - 他が演算子に変換できない場合、または指定されたサブシステムに対して互換性のない寸法を持つ場合。

デフォルトでは、合成 (&) は行列演算子の左行列乗算として定義され、 @ ( dot()) は右行列乗算として定義されます。 つまり、 AB が同じタイプである場合、 A & B == A.compose(B)B @ A == B.dot(A) と等価である。

front=True kwargを設定すると、これは右行列の乗算に変わり、以下のメソッドと同等になる。 dot() メソッド A.dot(B) == A.compose(B, front=True) と等価である。

conjugate

conjugate()

GitHub

CNOTDihedral の共役を返す。

copy

copy()

GitHub

現在のオペレータのディープコピーを作成する。

dot

dot(other, qargs=None)

GitHub

右掛け演算子 self * other を返す。

パラメーター

  • other (Operator) – 演算子オブジェクト。
  • qargs (list or None) – 他の処理を適用するサブシステムの位置のリスト。 すべてのサブシステムに「None」が適用される場合(デフォルト:None)。

戻り値

演算子を乗じた右行列。

戻りの型

オペレーター

ドット積は、 @ 二項演算子を用いて求めることができる。 したがって、 a.dot(b)a @ b と等価である。

expand

expand(other)

GitHub

別のCNOTDihedralとの逆次テンソル積を返す。

パラメーター

other (CNOTDihedral) – CNOTDihedral オブジェクト。

戻り値

テンソル積 bab \otimes aaa

は現在のCNOTDihedralであり、 bb はもう一つのCNOTDihedralである。

戻りの型

CNOT二面体

input_dims

input_dims(qargs=None)

GitHub

指定されたサブシステムの入力次元のタプルを返す。

output_dims

output_dims(qargs=None)

GitHub

指定されたサブシステムの出力次元のタプルを返す。

power

power(n)

GitHub

演算子をそれ自身と n 回組み合わせて返します。

パラメーター

n (int) – self ( n>0 ) と合成する回数。

戻り値

n回合成された演算子。

戻りの型

Clifford

レイズ

QiskitError - 演算子の入力と出力の次元が等しくない場合、またはべき乗が正の整数でない場合。

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

入出力サブシステムの寸法を変更した浅いコピーを返す。

パラメーター

  • 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)

GitHub

別のCNOTDihedralとのテンソル積を返す。

パラメーター

other (CNOTDihedral) – CNOTDihedral オブジェクト。

戻り値

テンソル積 aba \otimes baa

は現在のCNOTDihedralであり、 bb はもう一つのCNOTDihedralである。

戻りの型

CNOT二面体

テンソル積は、 ^ 二項演算子を用いて求めることができる。 したがって、 a.tensor(b)a ^ b と等価である。

to_circuit

to_circuit()

GitHub

CNOT-Dihedral 要素を実装した QuantumCircuit を返す。

戻り値

CNOTDihedralオブジェクトの回路実装。

戻りの型

QuantumCircuit

参考文献

  1. Shelly Garion and Andrew W. Cross, 最適な2量子ゲート数を持つCNOT-Dihedral回路の合成, Quantum 4(369), 2020
  2. 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).

to_instruction

to_instruction()

GitHub

CNOTDihedral オブジェクトを実装した Gate 命令を返す。

to_matrix

to_matrix()

GitHub

演算子をNumpy行列に変換します。

to_operator

to_operator()

GitHub

Operator オブジェクトに変換します。

戻りの型

オペレーター

transpose

transpose()

GitHub

CNOTDihedral の転置行列を返す。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。