circuit_knitting.cutting.cutqc.generate_summation_terms¶
- generate_summation_terms(subcircuits, complete_path_map, num_cuts)[source]¶
Generate all summation terms for the final reconstructions.
Final CutQC reconstruction result = Sum(summation_terms).
summation_terms (list): [summation_term_0, summation_term_1, …] –> 4^#cuts elements.
summation_term[subcircuit_idx] = subcircuit_entry_idx.E.g. summation_term = {0:0,1:13,2:7} = Kron(subcircuit_0_entry_0, subcircuit_1_entry_13, subcircuit_2_entry_7).subcircuit_entries[subcircuit_idx][init_label,meas_label] = subcircuit_entry_idx, kronecker_term.kronecker_term (list): (coefficient, subcircuit_instance_idx).Add coefficient*subcircuit_instance to subcircuit_entry.subcircuit_instances[subcircuit_idx][init,meas] = subcircuit_instance_idx.
Deprecated since version 0.7.0: The function
circuit_knitting.cutting.cutqc.wire_cutting_post_processing.generate_summation_terms()
is deprecated as of circuit-knitting-toolbox 0.7.0. It will be removed no sooner than CKT v0.8.0. Use the wire cutting or automated cut-finding functionality in thecircuit_knitting.cutting
package.- Parameters:
subcircuits (Sequence[QuantumCircuit]) – The list of subcircuits
complete_path_map (dict[Qubit, Sequence[dict[str, int | Qubit]]]) – The paths of all the qubits through the circuit DAGs
num_cuts (int) – The number of cuts
- Return type:
tuple[list[dict[int, int]], dict[int, dict[tuple[str, str], tuple[int, Sequence[tuple[int, int]]]]], dict[int, dict[tuple[tuple[str, …], tuple[Any, …]], int]]]
- Returns:
A tuple containing a summation term dict, a subcircuit entry dict, and a subcircuit instances dict