Skip to content

bloqade.cirq_utils.noise.conflict_graph.OneZoneConflictGraph

← Module overview

classOneZoneConflictGraphsource

bloqade.cirq_utils.noise.conflict_graph.OneZoneConflictGraph

Representation of the AOD conflict graph for qubits to more to their entangling partners in a single zone setup.

class OneZoneConflictGraph(moment: cirq.Moment)

Assumes the qubits are specified as cirq.GridQubits with a chosen geometry.

Parameters

NameTypeDescription
momentcirq.Moment

Attributes

NameTypeDefaultDescription
moment—moment
gates_in_moment—[op for op in (moment.operations) if len(op.qubits) == 2]

methodget_move_schedulesource

bloqade.cirq_utils.noise.conflict_graph.OneZoneConflictGraph.get_move_schedule

def get_move_schedule(mover_limit: int = 10000)

Generates a move schedule by coloring the conflict graph greedily, first coloring nodes of highest degree.

Qubits that are the arguments of a single CZ gate are ‘partners’. Only one partner need be moved to arrange the atoms for the 2Q gate. Thus, in coloring the conflict graph, as soon as one partner is colored, the other can be disregarded for the purpose of coloring the rest of the graph.

This sets the self.move_schedule attribute, which is a dictionary where the keys are the indices of the move moments.

:param mover_limit: The maximum number of qubits that can be moved in a single moment. Added as a constraint when coloring the conflict graph. :returns a dictionary of idx:[cirq.Qid] where idx indexes the move moment where the list of qubits move.

Parameters

NameTypeDefaultDescription
mover_limitint10000
source