class QPanda::QCircuitRewrite
#include <QCircuitRewrite.h>
class QCircuitRewrite
{
public:
// structs
struct SemMatch;
struct StructMatch;
// fields
StructMatch m_struct;
SemMatch m_sem;
std::set<int> matched;
std::vector<std::map<int, int>> match_vertex_list;
std::vector<std::map<int, int>> match_qubit_list;
std::vector<std::map<int, double>> match_angle_list;
// methods
std::shared_ptr<QProgDAG> generator_to_dag(QCircuitGenerator& cir_gen);
QProg replace_subgraph(
std::shared_ptr<QProgDAG> g,
QCircuitGenerator::Ref cir_gen
);
void recursiveMatch(
std::shared_ptr<QProgDAG> pattern,
std::shared_ptr<QProgDAG> graph,
int i = 0
);
bool feasibilityRules(
std::shared_ptr<QProgDAG> pattern,
std::shared_ptr<QProgDAG> graph,
int n,
int m,
StructMatch& match
);
std::shared_ptr<QProg> circuitRewrite(
QProg prog,
const std::string& config_data
);
static double angle_str_to_double(const std::string angle_str);
};