class QPanda::QProgDAG

Overview

transform QProg to DAG(directed acyclic graph) More…

#include <QProgDAG.h>

class QProgDAG
{
public:
    // fields

    std::map<uint32_t, Qubit*> m_qubits;

    // methods

    void add_vertex(std::shared_ptr<QProgDAGNode> n, DAGNodeType type);
    void get_adjacency_matrix(AdjacencyMatrix& matrix);
    const QProgDAGVertex& get_vertex(const size_t vertice_num) const;
    bool is_connected_graph();
    TopologSequence<DAGSeqNode> build_topo_sequence();
    std::set<QProgDAGEdge> get_edges() const;
    void remove_edge(const QProgDAGEdge& e);
    const std::vector<QProgDAGVertex>& get_vertex_c() const;
    std::vector<QProgDAGVertex>& get_vertex();
    const auto& get_qubit_vertices_map() const;
    std::shared_ptr<QProg> dag_to_qprog();
};

Detailed Documentation

transform QProg to DAG(directed acyclic graph)

transform QProg to DAG

Methods

void add_vertex(std::shared_ptr<QProgDAGNode> n, DAGNodeType type)

add vertex

Parameters:

node_info

Returns:

size_t vertex num

void get_adjacency_matrix(AdjacencyMatrix& matrix)

get adjacency_matrix

Parameters:

vertices_map&

AdjacencyMatrix&

Returns:

void

const QProgDAGVertex& get_vertex(const size_t vertice_num) const

get vertex by vertex num

Parameters:

size_t

vertex num

Returns:

std::shared_ptr<QPanda::QNode> qnode