Class QuantumGateBase¶
Defined in File gate.hpp
Inheritance Relationships¶
Derived Types¶
public ClsNoisyEvolution
(Class ClsNoisyEvolution)public ClsNoisyEvolution_auto
(Class ClsNoisyEvolution_auto)public ClsNoisyEvolution_fast
(Class ClsNoisyEvolution_fast)public ClsOneControlOneTargetGate
(Class ClsOneControlOneTargetGate)public ClsOneQubitGate
(Class ClsOneQubitGate)public ClsOneQubitRotationGate
(Class ClsOneQubitRotationGate)public ClsPauliGate
(Class ClsPauliGate)public ClsPauliRotationGate
(Class ClsPauliRotationGate)public ClsReversibleBooleanGate
(Class ClsReversibleBooleanGate)public ClsStateReflectionGate
(Class ClsStateReflectionGate)public ClsTwoQubitGate
(Class ClsTwoQubitGate)public QuantumGate_Adaptive
(Class QuantumGate_Adaptive)public QuantumGate_CP
(Class QuantumGate_CP)public QuantumGate_CPTP
(Class QuantumGate_CPTP)public QuantumGate_Probabilistic
(Class QuantumGate_Probabilistic)public QuantumGate_SingleParameter
(Class QuantumGate_SingleParameter)public QuantumGateDiagonalMatrix
(Class QuantumGateDiagonalMatrix)public QuantumGateMatrix
(Class QuantumGateMatrix)public QuantumGateSparseMatrix
(Class QuantumGateSparseMatrix)
Class Documentation¶
-
class QuantumGateBase¶
量子ゲートの基底クラス
Subclassed by ClsNoisyEvolution, ClsNoisyEvolution_auto, ClsNoisyEvolution_fast, ClsOneControlOneTargetGate, ClsOneQubitGate, ClsOneQubitRotationGate, ClsPauliGate, ClsPauliRotationGate, ClsReversibleBooleanGate, ClsStateReflectionGate, ClsTwoQubitGate, QuantumGate_Adaptive, QuantumGate_CP, QuantumGate_CPTP, QuantumGate_Probabilistic, QuantumGate_SingleParameter, QuantumGateDiagonalMatrix, QuantumGateMatrix, QuantumGateSparseMatrix
Public Functions
-
inline virtual ~QuantumGateBase()¶
デストラクタ
-
inline std::vector<UINT> get_target_index_list() const¶
ターゲット量子ビットの添え字のリストを取得する
- 戻り値
量子ビットの添え字のリスト
-
inline std::vector<UINT> get_control_index_list() const¶
コントロール量子ビットの添え字のリストを取得する
- 戻り値
量子ビットの添え字のリスト
-
inline std::vector<UINT> get_control_value_list() const¶
-
inline std::vector<std::pair<UINT, UINT>> get_control_index_value_list() const¶
-
virtual void update_quantum_state(QuantumStateBase *state) = 0¶
量子状態を更新する
- パラメータ
state -- 更新する量子状態
-
virtual QuantumGateBase *copy() const = 0¶
自身のディープコピーを生成する
- 戻り値
自身のディープコピー
-
virtual void set_matrix(ComplexMatrix &matrix) const = 0¶
自身のゲート行列をセットする
- パラメータ
matrix -- 行列をセットする変数の参照
-
bool is_commute(const QuantumGateBase *gate) const¶
与えれたゲート
gate
と自身が可換かを判定する非可換であると判定されても、実際には可換であることもある。 可換と判定された場合は必ず可換である。
- パラメータ
gate -- 可換か比較するゲート
- 戻り値
true 可換である
- 戻り値
false 非可換である
-
bool is_Pauli() const¶
ゲートがパウリゲートかどうかを判定する
- 戻り値
true パウリゲートである
- 戻り値
false パウリゲートではない
-
bool is_Clifford() const¶
ゲートがクリフォードゲートかどうかを判定する
- 戻り値
true クリフォードゲートである
- 戻り値
false クリフォードゲートではない
-
bool is_Gaussian() const¶
ゲートがFermionic Gaussianかどうかを判定する
- 戻り値
true Fermionic Gaussianである
- 戻り値
false Fermionic Gaussianではない
-
bool is_parametric() const¶
ゲートがparametricかどうかを判定する
- 戻り値
true parametricである
- 戻り値
false parametricではない
-
bool is_diagonal() const¶
ゲート行列が対角行列かどうかを判定する
- 戻り値
true 対角行列である
- 戻り値
false 対角行列ではない
-
UINT get_property_value() const¶
ゲートのプロパティ値を取得する
ゲートのプロパティ値はゲートがパウリかどうかなどのゲート全体の性質の情報を持つ
- 戻り値
プロパティ値
-
bool commute_Pauli_at(UINT qubit_index, UINT pauli_type) const¶
ゲートがある添え字の量子ビットにおいて、与えられたパウリ演算子と可換かどうかを判定する。
- パラメータ
qubit_index -- 量子ビットの添え字
pauli_type -- 比較するパウリ演算子。(I,X,Y,Z)が(0,1,2,3)に対応する。
- 戻り値
true 可換である
- 戻り値
false 可換ではない
-
virtual std::string get_name() const¶
量子ゲートの名前を出力する。
- 戻り値
ゲート名
-
virtual std::string to_string() const¶
量子ゲートのデバッグ情報の文字列を生成する
- 戻り値
生成した文字列
-
inline virtual bool is_noise()¶
-
inline virtual void set_seed(int)¶
-
inline void set_target_index_list(const std::vector<UINT> &target_index_list)¶
-
inline void set_control_index_list(const std::vector<UINT> &control_index_list)¶
-
virtual QuantumGateBase *get_inverse(void) const¶
Public Members
-
std::vector<TargetQubitInfo> &target_qubit_list¶
ターゲット量子ビットのリスト
-
std::vector<ControlQubitInfo> &control_qubit_list¶
コントロール量子ビットのリスト
Protected Functions
-
inline QuantumGateBase()¶
-
inline QuantumGateBase(const QuantumGateBase &obj)¶
-
QuantumGateBase &operator=(const QuantumGateBase &rhs) = delete¶
Protected Attributes
-
std::vector<TargetQubitInfo> _target_qubit_list¶
-
std::vector<ControlQubitInfo> _control_qubit_list¶
-
UINT _gate_property = 0¶
property of whole gate (e.g. Clifford or Pauli)
-
std::string _name = "Generic gate"¶
Friends
-
friend std::ostream &operator<<(std::ostream &os, const QuantumGateBase&)¶
量子回路のデバッグ情報を出力する。
- 戻り値
受け取ったストリーム
-
friend std::ostream &operator<<(std::ostream &os, const QuantumGateBase *gate)¶
量子回路のデバッグ情報を出力する。
- 戻り値
受け取ったストリーム
-
inline virtual ~QuantumGateBase()¶