.. index:: pair: class; QPanda::FindSubCircuit .. _doxid-class_q_panda_1_1_find_sub_circuit: class QPanda::FindSubCircuit ============================ .. toctree:: :hidden: Overview ~~~~~~~~ .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class FindSubCircuit { public: // typedefs typedef :ref:`SeqNode`<:ref:`T`> :target:`MatchNode`; typedef std::vector<:ref:`MatchNode`<:ref:`T`>> :target:`MatchNodeVec`; typedef std::vector`, :ref:`MatchNodeVec`<:ref:`pOptimizerNodeInfo`>>> :target:`MatchNodeTable`; // construction :target:`FindSubCircuit`(:ref:`LayeredTopoSeq`& topolog_sequence); // methods void :ref:`sub_cir_query`(:ref:`LayeredTopoSeq`& sub_sequence); bool :target:`node_match`( const :ref:`SeqNode`<:ref:`pOptimizerNodeInfo`>& target_seq_node, const :ref:`SeqNode`<:ref:`pOptimizerNodeInfo`>& graph_node ); bool :target:`check_angle`( const :ref:`pOptimizerNodeInfo` node_1, const :ref:`pOptimizerNodeInfo` node_2 ); void :ref:`match_layer`(:ref:`SeqLayer`<:ref:`pOptimizerNodeInfo`>& sub_seq_layer, const size_t match_layer, std::vector<:ref:`LayeredTopoSeq`>& sub_graph_vec); void :ref:`merge_sub_graph_vec`( std::vector<:ref:`LayeredTopoSeq`>& sub_graph_vec, const size_t match_layer, :ref:`LayeredTopoSeq`& target_sub_sequence ); void :ref:`clean_sub_graph_vec`(std::vector<:ref:`LayeredTopoSeq`>& sub_graph_vec, :ref:`LayeredTopoSeq`& target_sub_sequence); void :ref:`merge_topolog_sequence`(:ref:`LayeredTopoSeq`& src_seq, :ref:`LayeredTopoSeq`& dst_seq); const std::vector<:ref:`LayeredTopoSeq`>& :target:`get_sub_graph_vec`(); void :target:`clear`(); }; .. _details-class_q_panda_1_1_find_sub_circuit: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Methods ------- .. index:: pair: function; sub_cir_query .. _doxid-group___utilities_1ga98f8e27f8d14cb10ccfe86eadb2b72f6: .. ref-code-block:: cpp :class: doxyrest-title-code-block void sub_cir_query(:ref:`LayeredTopoSeq`& sub_sequence) Query the subgraph and store the query results in query_Result. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - LayeredTopoSeq& - store the query results .. rubric:: Returns: .. index:: pair: function; match_layer .. _doxid-group___utilities_1ga2f1d4adcbb4069815651f15127ca164f: .. ref-code-block:: cpp :class: doxyrest-title-code-block void match_layer( :ref:`SeqLayer`<:ref:`pOptimizerNodeInfo`>& sub_seq_layer, const size_t match_layer, std::vector<:ref:`LayeredTopoSeq`>& sub_graph_vec ) Layer matching: matching and combining the nodes of each layer of the sub graph. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - SeqLayer& - the target matching sub-seq-layer * - const - size_t the current matching layer * - std::vector& - sub-graph vector .. rubric:: Returns: .. index:: pair: function; merge_sub_graph_vec .. _doxid-group___utilities_1ga11e904035981925506cb8459bcd8116b: .. ref-code-block:: cpp :class: doxyrest-title-code-block void merge_sub_graph_vec( std::vector<:ref:`LayeredTopoSeq`>& sub_graph_vec, const size_t match_layer, :ref:`LayeredTopoSeq`& target_sub_sequence ) Merge incomplete subgraphs Implementation method: get the node set of the next layer of each subgraph of the matching subgraph set. If the node set of the next layer of the two subgraphs has duplicate elements, merge the two subgraphs. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::vector& - the sub graph vector * - const - size_t the target layer * - LayeredTopoSeq& - the target sub-sequence .. rubric:: Returns: .. index:: pair: function; clean_sub_graph_vec .. _doxid-group___utilities_1ga75b7ecc1316df12b781e7e0d7e8b2a1f: .. ref-code-block:: cpp :class: doxyrest-title-code-block void clean_sub_graph_vec(std::vector<:ref:`LayeredTopoSeq`>& sub_graph_vec, :ref:`LayeredTopoSeq`& target_sub_sequence) Clean up the result set of matching subgraphs and delete the wrong matches. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::vector& - the result set of matching subgraphs * - LayeredTopoSeq& - the target sub-sequence .. rubric:: Returns: .. index:: pair: function; merge_topolog_sequence .. _doxid-group___utilities_1ga2fa18e5bc2684b0eef3a7ec427f0eca7: .. ref-code-block:: cpp :class: doxyrest-title-code-block void merge_topolog_sequence(:ref:`LayeredTopoSeq`& src_seq, :ref:`LayeredTopoSeq`& dst_seq) merge sub-graph: merging src_seq into dst_seq by layer .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - LayeredTopoSeq& - the src_seq * - LayeredTopoSeq& - dst_seq .. rubric:: Returns: