.. index:: pair: class; QPanda::QCircuitOPtimizer .. _doxid-class_q_panda_1_1_q_circuit_o_ptimizer: class QPanda::QCircuitOPtimizer =============================== .. toctree:: :hidden: Overview ~~~~~~~~ .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class QCircuitOPtimizer: public :ref:`QPanda::ProcessOnTraversing` { public: // fields :ref:`QProg` :target:`m_new_prog`; // methods virtual void :target:`process`(const bool on_travel_end = false); void :target:`register_single_gate_optimizer`(const int mode); void :target:`register_optimize_sub_cir`( :ref:`QCircuit` sub_cir, :ref:`QCircuit` replase_to_cir ); void :target:`run_optimize`( :ref:`QProg` src_prog, const :ref:`QVec` qubits = {}, bool b_enable_I = false ); :ref:`QProg` :ref:`replase_sub_cir`(std::function<:ref:`QCircuit`(const size_t)> get_cir_fun); void :target:`sub_cir_optimizer`(const size_t optimizer_sub_cir_index); void :target:`do_optimizer`(); }; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // typedefs typedef :ref:`TopologSequence``>> :ref:`layer_iter_seq`; // methods virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, Args&&... func_args ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`traverse_qprog`(:ref:`QProg` prog); virtual void :ref:`process`(const bool on_travel_end) = 0; virtual void :ref:`run_traversal`(:ref:`QProg` src_prog, const :ref:`QVec` qubits = {}); virtual void :ref:`do_process`(const bool on_travel_end); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQGateNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumMeasure`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumReset`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractControlFlowNode`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractClassicalProg`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumCircuit`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`execute`( std::shared_ptr<:ref:`AbstractQuantumProgram`> cur_node, std::shared_ptr<:ref:`QNode`> parent_node, :ref:`QCircuitParam`& cir_param, :ref:`NodeIter`& cur_node_iter ); virtual void :ref:`gates_sink_to_topolog_sequence`(:ref:`OptimizerSink`& gate_buf, :ref:`LayeredTopoSeq`& seq, const size_t max_output_layer = :ref:`MAX_LAYER`); virtual void :ref:`clean_gate_buf_to_cir`(:ref:`QProg`& cir, bool b_clean_all_buf = false); virtual void :ref:`clean_gate_buf`(bool b_clean_all_buf = false); virtual void :ref:`drop_gates`(const size_t max_drop_layer); virtual void :ref:`seq_to_cir`( :ref:`layer_iter_seq`& tmp_seq, :ref:`QProg`& prog, const size_t start_layer_to_cir, const size_t max_output_layer ); virtual void :ref:`seq_to_cir`(:ref:`layer_iter_seq`& tmp_seq, :ref:`QProg`& prog); virtual void :ref:`add_node_to_seq`(:ref:`layer_iter_seq`& tmp_seq, :ref:`NodeIter` node_iter, const size_t layer); .. _details-class_q_panda_1_1_q_circuit_o_ptimizer: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Methods ------- .. index:: pair: function; replase_sub_cir .. _doxid-group___utilities_1ga7f0e3265cb94e76cbf4df636fead147a: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`QProg` replase_sub_cir(std::function<:ref:`QCircuit`(const size_t)> get_cir_fun) replace sub circuit .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - std::function the function to get a new quantum circuit .. rubric:: Returns: the new quantum prog