26 #ifndef N_Qubit_Decomposition_Tree_Search_H 27 #define N_Qubit_Decomposition_Tree_Search_H virtual Gates_block * determine_gate_structure(Matrix_real &optimized_parameters_mtx)
Call determine the gate structrue of the decomposing circuit.
void add_two_qubit_block(Gates_block *gate_structure, int target_qbit, int control_qbit)
Call to add two-qubit building block (two single qubit rotation blocks and one two-qubit gate) to the...
int control_qbit
The index of the qubit which acts as a control qubit (control_qbit >= 0) in controlled operations...
int level_limit_min
The minimal number of adaptive layers used in the decomposition.
A base class to determine the decomposition of an N-qubit unitary into a sequence of CNOT and U3 gate...
Header file for Grey code container.
N_Qubit_Decomposition_Tree_Search()
Nullary constructor of the class.
matrix_base< int > possible_target_qbits
List of possible target qubits according to the topology – paired up with possible control qubits...
int target_qbit
The index of the qubit on which the operation acts (target_qbit >= 0)
GrayCode tree_search_over_gate_structures(int level_num)
Call to perform tree search over possible gate structures.
N_Qubit_Decomposition_custom perform_optimization(Gates_block *gate_structure_loc)
Call to perform the optimization on the given gate structure.
int level_limit
The maximal number of adaptive layers used in the decomposition.
A base class to determine the decomposition of an N-qubit unitary into a sequence of CNOT and U3 gate...
int accelerator_num
number of utilized accelerators
std::vector< matrix_base< int > > topology
A vector of index pairs encoding the connectivity between the qubits.
matrix_base< int > possible_control_qbits
List of possible control qubits according to the topology – paired up with possible target qubits...
virtual void add_finalyzing_layer()
Call to add further layer to the gate structure used in the subdecomposition.
A base class to determine the decomposition of an N-qubit unitary into a sequence of CNOT and U3 gate...
Class to store data of complex arrays and its properties.
A class responsible for grouping two-qubit (CNOT,CZ,CH) and one-qubit gates into layers.
virtual void start_decomposition()
Start the disentanglig process of the unitary.
std::map< std::string, Config_Element > config
config metadata utilized during the optimization
dictionary gate_structure
void set_unitary(Matrix &Umtx_new)
Set unitary matrix.
GrayCode tabu_search_over_gate_structures()
Perform tabu serach over gate structures.
Matrix_real optimized_parameters_mtx
The optimized parameters for the gates.
Gates_block * construct_gate_structure_from_Gray_code(const GrayCode &gcode)
Call to construct a gate structure corresponding to the configuration of the two-qubit gates describe...
virtual ~N_Qubit_Decomposition_Tree_Search()
Destructor of the class.
Class to store data of complex arrays and its properties.