class QPanda::SabreQAllocator

SABRE qubit mapping Implemented from Gushu et. al.: Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices.

#include <SabreQMapping.h>

class SabreQAllocator: public QPanda::AbstractQubitMapping
{
public:
    // typedefs

    typedef SabreQAllocator* Ref;
    typedef std::unique_ptr<SabreQAllocator> uRef;

    // methods

    static uRef Create(
        QPanda::ArchGraph::sRef ag,
        uint32_t max_look_ahead = 20,
        uint32_t max_iterations = 10
        );

    uint32_t get_swap_cnt() const;
};

Inherited Members

public:
    // typedefs

    typedef AbstractQubitMapping* Ref;
    typedef std::unique_ptr<AbstractQubitMapping> uRef;

    // methods

    bool run(QPanda::QProg prog, QPanda::QuantumMachine* qvm);
    void setGateWeightMap(const GateWeightMap& weightMap);
    const Mapping& get_final_mapping() const;
    const Mapping& get_init_mapping() const;
    QPanda::QProg get_mapped_prog() const;