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:

QGate

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>