Struct PauliOperator¶
Defined in File pauli_operator.hpp
Struct Documentation¶
-
struct PauliOperator¶
複数qubitに作用するパウリ演算子の情報を保持するクラス。 SinglePauliOperatorをリストとして持ち, 種々の操作を行う。
Public Functions
-
inline std::vector<UINT> get_index_list() const¶
自身の保持するパウリ演算子が作用する添字のリストを返す
それぞれの添字に作用する演算子は PauliOperator::get_pauli_id_listで得られる添字のリストの対応する場所から得られる。
- 戻り値
自身の保持するパウリ演算子が作用する添字のリスト。
-
inline UINT get_qubit_count() const¶
自身の保持するパウリ演算子が添え字のうち、最大の添え字を返す
- 戻り値
自身の保持するパウリ演算子が作用する添字のうち最大の整数
-
inline std::vector<UINT> get_pauli_id_list() const¶
自身が保持するパウリ演算子を返す。
それぞれが作用するqubitは PauliOperator::get_index_listで得られる添字のリストの対応する場所から得られる。
- 戻り値
自身の保持するパウリ演算子のリスト。(I,X,Y,Z)が(0,1,2,3)に対応する。
-
inline explicit PauliOperator(CPPCTYPE coef = 1.)¶
コンストラクタ
係数をとって空のインスタンスを返す。
- パラメータ
coef -- [in] 係数。デフォルトは1.0
- 戻り値
係数がcoefの空のインスタンス
-
explicit PauliOperator(std::string strings, CPPCTYPE coef = 1.)¶
コンストラクタ
パウリ演算子とその添字からなる文字列と、その係数から複数qubitに掛かるパウリ演算子を作成する
- パラメータ
strings -- [in]
Pauli演算子とその掛かるindex. "X 1 Y 2 Z
5"のようにスペース区切りの文字列
coef -- [in] 演算子の係数
- 戻り値
入力のパウリ演算子と係数をもつPauliOpetatorのインスタンス
-
PauliOperator(const std::vector<UINT> &target_qubit_index_list, std::string Pauli_operator_type_list, CPPCTYPE coef = 1.)¶
コンストラクタ
パウリ演算子の文字列と添字のリスト、係数からPauliOperatorのインスタンスを生成する。 このとき入力として与える演算子と添字のリストは、i番目の演算子にi番目の添字が対応する。
- パラメータ
target_qubit_index_list -- [in] Pauli_operator_type_listで与えるパウリ演算子が掛かるqubitを指定する添字のリスト。
Pauli_operator_type_list -- [in] パウリ演算子の文字列。(example: "XXYZ")
coef -- [in] 係数
- 戻り値
入力として与えたパウリ演算子のリストと添字のリスト、係数から生成されるPauliOperatorのインスタンス
-
explicit PauliOperator(const std::vector<UINT> &pauli_list, CPPCTYPE coef = 1.)¶
コンストラクタ
配列の添字に作用するパウリ演算子と係数からインスタンスを生成する。
- パラメータ
pauli_list -- [in] 配列の添字に対応するqubitに作用するパウリ演算子のリスト
coef -- [in] 係数
- 戻り値
pauli_listの添字に対応するqubitに作用するパウリ演算子と係数をもつインスタンス
-
PauliOperator(const std::vector<UINT> &target_qubit_index_list, const std::vector<UINT> &target_qubit_pauli_list, CPPCTYPE coef = 1.)¶
コンストラクタ
パウリ演算子のリストと添字のリスト、係数からPauliOperatorのインスタンスを生成する。 このとき入力として与える演算子と添字のリストは、リストの同じ添字の場所にあるものが対応する。
- パラメータ
target_qubit_index_list -- [in] Pauli_operator_type_listで与えるパウリ演算子が掛かるqubitを指定する添字のリスト
target_qubit_pauli_list -- [in] パウリ演算子の符号なし整数リスト。(I,X,Y,Z)が(0,1,2,3)に対応する。
coef -- [in] 係数
- 戻り値
入力として与えたパウリ演算子のリストと添字のリスト、係数から生成されるPauliOperatorのインスタンス
-
PauliOperator(const boost::dynamic_bitset<> &x, const boost::dynamic_bitset<> &z, CPPCTYPE coef = 1.)¶
-
inline virtual boost::dynamic_bitset get_x_bits() const¶
自身のxビットを返す
- 戻り値
自身のxビット
-
inline virtual boost::dynamic_bitset get_z_bits() const¶
自身のzビットを返す
- 戻り値
自身のzビット
-
inline virtual ~PauliOperator()¶
-
virtual void add_single_Pauli(UINT qubit_index, UINT pauli_type)¶
指定した添字のqubitに作用するSinglePauliOperatorを自身が保持するリストの末尾に追加する。
- パラメータ
qubit_index -- [in] 作用するqubitの添字
pauli_type -- [in] パウリ演算子。(I,X,Y,Z)が(0,1,2,3)に対応する。
-
virtual CPPCTYPE get_expectation_value(const QuantumStateBase *state) const¶
量子状態に対応するパウリ演算子の期待値を計算する
- パラメータ
state -- [in] 期待値をとるときの量子状態
- 戻り値
stateに対応する期待値
-
virtual CPPCTYPE get_expectation_value_single_thread(const QuantumStateBase *state) const¶
added by myself 量子状態に対応するパウリ演算子の期待値を計算する get_expectation_value の 1 スレッドバージョン
- パラメータ
state -- [in] 期待値をとるときの量子状態
- 戻り値
stateに対応する期待値
-
virtual CPPCTYPE get_transition_amplitude(const QuantumStateBase *state_bra, const QuantumStateBase *state_ket) const¶
量子状態に対応するパウリ演算子の遷移振幅を計算する
- パラメータ
state_bra -- [in] 遷移先の量子状態
state_ket -- [in] 遷移元の量子状態
- 戻り値
state_bra, state_ketに対応する遷移振幅
-
virtual PauliOperator *copy() const¶
自身のディープコピーを生成する
- 戻り値
自身のディープコピー
-
virtual std::string get_pauli_string() const¶
パウリ演算子に対応する文字列を返す
-
PauliOperator operator*(const PauliOperator &target) const¶
-
PauliOperator operator*(CPPCTYPE target) const¶
-
PauliOperator &operator*=(const PauliOperator &target)¶
-
PauliOperator &operator*=(CPPCTYPE target)¶
-
inline std::vector<UINT> get_index_list() const¶