class QPanda::Variational::VariationalQuantumGate¶
Overview¶
#include <var.h> class VariationalQuantumGate { public: // construction VariationalQuantumGate(const VariationalQuantumGate&); VariationalQuantumGate(); // methods size_t n_var(); const std::vector<var>& get_vars(); const std::vector<double>& get_constants(); int var_pos(var _var); virtual QGate feed() = 0; virtual QGate feed(std::map<size_t, double> offset); virtual std::shared_ptr<VariationalQuantumGate> copy() = 0; virtual bool set_dagger(bool dagger); virtual bool set_control(QVec control_qubit); virtual bool is_dagger(); virtual QVec get_control_qubit(); virtual void copy_dagger_and_control_qubit(QGate& gate); virtual void copy_dagger_and_control_qubit(std::shared_ptr<VariationalQuantumGate> gate); }; // direct descendants class VariationalQuantumGate_CNOT; class VariationalQuantumGate_CR; class VariationalQuantumGate_CRX; class VariationalQuantumGate_CRY; class VariationalQuantumGate_CRZ; class VariationalQuantumGate_CU; class VariationalQuantumGate_CZ; class VariationalQuantumGate_H; class VariationalQuantumGate_iSWAP; class VariationalQuantumGate_RPhi; class VariationalQuantumGate_RX; class VariationalQuantumGate_RY; class VariationalQuantumGate_RZ; class VariationalQuantumGate_S; class VariationalQuantumGate_SqiSWAP; class VariationalQuantumGate_SWAP; class VariationalQuantumGate_T; class VariationalQuantumGate_U1; class VariationalQuantumGate_U2; class VariationalQuantumGate_U3; class VariationalQuantumGate_U4; class VariationalQuantumGate_X; class VariationalQuantumGate_X1; class VariationalQuantumGate_Y; class VariationalQuantumGate_Y1; class VariationalQuantumGate_Z; class VariationalQuantumGate_Z1;
Detailed Documentation¶
Construction¶
VariationalQuantumGate(const VariationalQuantumGate&)
Copy Constructor for a new Variational Quantum Gate object.
VariationalQuantumGate()
Default Constructor for a new Variational Quantum Gate object.
Methods¶
size_t n_var()
Returns:
size_t the number of vars.
const std::vector<var>& get_vars()
Get all variables for the VQG.
Returns:
std::vector<Variable>
int var_pos(var _var)
Get the position for var in the m_vars. If not existed, return -1. Otherwise, return the position n, which is var == m_vars[n].
Parameters:
var |
The corresponding variable. |
Returns:
int -1 if not existed, or position.
virtual QGate feed() = 0
Interface to instantialize the QGate with VQG.
Returns:
QGate Instantiation
virtual QGate feed(std::map<size_t, double> offset)
Interface to instantialize the QGate with the “offset”.
Parameters:
offset |
<number of variable, offset> |
Returns:
virtual std::shared_ptr<VariationalQuantumGate> copy() = 0
Interface to copy the instance, and return a shared_ptr for the object.
Returns:
std::shared_ptr<VariationalQuantumGate>