Cluster Scheduler

class ClusterScheduler

Public Functions

std::vector<int> ScheduleCluster()

Find the largest subset of gates than can be fused into one cluster. Use backtracking on qubits IDs. Print logs.

Return

Indices of gates (from list gate) from one cluster

ClusterScheduler(const std::vector<std::vector<id_num_t>> &gate, const std::vector<std::vector<id_num_t>> &gate_ctrl, std::vector<bool> gate_diag, const std::vector<id_num_t> &locals, const std::vector<id_num_t> &globals, int cluster_size)

Constructor.

Parameters
  • gate: For each gate (from the analyzed quantum circuit) a list of qubits on which it acts

  • gate_ctrl: For each gate a list of control qubits on which it acts

  • gate_diag: For each gate false (non-diagonal gate) or true (diagonal gate)

  • locals: IDs of local qubits

  • globals: IDs of global qubits

  • cluster_size: Maximum number of qubits in fused multi-qubit gate

~ClusterScheduler()

Destructor.