circuit_knitting_toolbox.circuit_cutting.wire_cutting.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.

Parameters:
  • subcircuits (-) – the list of subcircuits

  • complete_path_map (-) – the paths of all the qubits through the circuit DAGs

  • num_cuts (-) – 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:

  • (dict): dictionary containing information on the summation terms

  • (dict): dictionary containing the subcircuits entry information

  • (dict): dictionary containing subcircuit instances