Class ParametricQuantumCircuit

Inheritance Relationships

Base Type

Class Documentation

class ParametricQuantumCircuit : public QuantumCircuit

Public Functions

ParametricQuantumCircuit(UINT qubit_count)
ParametricQuantumCircuit *copy() const
virtual void add_parametric_gate(QuantumGate_SingleParameter *gate)
virtual void add_parametric_gate(QuantumGate_SingleParameter *gate, UINT index)
virtual void add_parametric_gate_copy(QuantumGate_SingleParameter *gate)
virtual void add_parametric_gate_copy(QuantumGate_SingleParameter *gate, UINT index)
virtual UINT get_parameter_count() const
virtual double get_parameter(UINT index) const
virtual void set_parameter(UINT index, double value)
virtual UINT get_parametric_gate_position(UINT index) const
virtual void add_gate(QuantumGateBase *gate) override

量子ゲートを回路の末尾に追加する

量子ゲートを回路に追加する。 追加した量子ゲートは量子回路の解放時に開放される。

パラメータ

gate -- [in] 追加する量子ゲート

virtual void add_gate(QuantumGateBase *gate, UINT index) override

量子ゲートを回路の指定位置に追加する。

量子ゲートを回路の指定した位置に追加する。 追加した量子ゲートは量子回路の解放時に開放される。

パラメータ
  • gate -- [in] 追加する量子ゲート

  • index -- [in] 追加する位置

virtual void add_gate_copy(const QuantumGateBase *gate) override

量子ゲートを回路の末尾に追加する

与えられた量子ゲートのコピーを回路に追加する。 add_gateに比べコピーが発生する分低速な一方、引数で与えたゲートを再利用できる。

パラメータ

gate -- [in] 追加する量子ゲート

virtual void add_gate_copy(const QuantumGateBase *gate, UINT index) override

量子ゲートを回路の指定位置に追加する。

与えらた量子ゲートを回路の指定した位置に追加する。

パラメータ
  • gate -- [in] 追加する量子ゲート

  • index -- [in] 追加する位置

virtual void remove_gate(UINT index) override

量子回路からゲートを削除する。

削除した量子ゲートは解放される。

パラメータ

index -- [in] 削除するゲートの位置

virtual void merge_circuit(const ParametricQuantumCircuit *circuit)

量子回路をマージする。

引数で与えた量子回路のゲートを後ろに追加していく。 マージされた側の量子回路に変更を加えてもマージした側の量子回路には変更は加わらないことに注意する。 パラメータゲートに対応するため、ParametricQuantumCircuit にも merge_circuit() を追加する circuit1.add_circuit(circuit2) circuit2.add_gate(gate) # これをしても、circuit1にgateは追加されない

パラメータ

circuit -- [in] マージする量子回路

virtual std::string to_string() const override

量子回路のデバッグ情報の文字列を生成する

戻り値

生成した文字列

virtual void add_parametric_RX_gate(UINT target_index, double initial_angle)
virtual void add_parametric_RY_gate(UINT target_index, double initial_angle)
virtual void add_parametric_RZ_gate(UINT target_index, double initial_angle)
virtual void add_parametric_multi_Pauli_rotation_gate(std::vector<UINT> target, std::vector<UINT> pauli_id, double initial_angle)
virtual std::vector<double> backprop(GeneralQuantumOperator *obs)
virtual std::vector<double> backprop_inner_product(QuantumState *bistate)

Friends

friend std::ostream &operator<<(std::ostream &os, const ParametricQuantumCircuit&)
friend std::ostream &operator<<(std::ostream &os, const ParametricQuantumCircuit *circuit)