Class QuantumGateBase

Inheritance Relationships

Derived Types

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)

量子回路のデバッグ情報を出力する。

戻り値

受け取ったストリーム