mqt.sqr.routing.rotation_routing

Module Contents

MAX_WAIT_TIME = 100
class RotationRoutingPlanner[source]

Bases: mqt.sqr.routing.routing_strategy.RoutingStrategy

Helper class that provides a standard way to create an ABC using inheritance.

route(graph: networkx.Graph, qubits: list[Qubit], pairs: list[tuple[Qubit, Qubit]], p_success: float, p_repair: float) → RoutingResult[source]
chebyshev(p: Coord, q: Coord) → int[source]
edgeset(u: Coord, v: Coord) → frozenset[source]
is_sn(graph: networkx.Graph, n: Coord) → bool[source]
is_in(graph: networkx.Graph, n: Coord) → bool[source]
is_diag(u: Coord, v: Coord) → bool[source]
canonical_diamond_tuple(diamond: list[Coord]) → tuple[Coord, Coord, Coord, Coord][source]
diag_sn_neighbors(graph: networkx.Graph, n: Coord) → list[Coord][source]
diamond_for_edge(graph: networkx.Graph, u: Coord, v: Coord) → list[Coord] | None[source]
rot_dir(diamond: list[Coord], u: Coord, v: Coord) → int[source]
sn_neighbors_of_meet(graph: networkx.Graph, meeting: Coord) → list[Coord][source]
shortest_path_sn(sn: networkx.Graph, src: Coord, dst: Coord) → list[Coord] | None[source]
compute_pair_rotation_updates_for_diamond(diamond: list[Coord], direction: int, a_id: int, b_id: int, la: Coord, lb: Coord) → dict[int, Coord][source]
plans_compatible_distance(p1: SoloPlan, ab1: tuple[int, int], p2: SoloPlan, ab2: tuple[int, int]) → bool[source]
plans_compatible_diamonds(p1: SoloPlan, p2: SoloPlan) → bool[source]
group_parallel(plans: dict[tuple[int, int], SoloPlan]) → list[list[tuple[int, int]]][source]
expand_runtime_rotations(current_pos: dict[int, Coord], base_updates: dict[int, Coord], diamonds: list[tuple[list[Coord], int]], exclude_qids: set[int] | None = None) → dict[int, Coord][source]
foreign_qubits_on_any_diamond(current_pos: dict[int, Coord], diamonds: list[tuple[list[Coord], int]], allowed: set[int]) → bool[source]
is_ready_pair(pid: tuple[int, int], remaining: set[tuple[int, int]], pair_order: dict[tuple[int, int], int]) → bool[source]
class SoloStep[source]
updates_pair_only: dict[int, Coord]
diamonds: list[tuple[list[Coord], int]]
sample: bool
class SoloPlan(ticks: list[SoloStep], pos_trace: dict[int, list[Coord]], used_diamonds: set[tuple[Coord, Coord, Coord, Coord]], in_idx: int | None, out_idx: int | None)[source]
ticks
pos_trace
used_diamonds
in_idx
out_idx
property length: int
class RouteRuntime(graph: networkx.Graph, qubits: list[Qubit], p_success: float, p_repair: float)[source]
graph
p_success
p_repair
current_pos: dict[int, Coord]
all_qids: set[int]
timelines: dict[int, list[TimedNode]]
t = 0
wait_streak = 0
defective_edges: set[frozenset]
edge_timebands: list[tuple[int, int, set[frozenset]]] = []
SN
sample_edge_failures() → None[source]
would_use_defect(pending: dict[int, Coord]) → bool[source]
commit_tick(pending: dict[int, Coord], *, sample: bool) → bool[source]