support for directed device graphs #7810
Open
+340 −17
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
Add Directed Graph Support to
RouteCQCFixes #5863
This PR adds support for directed device graphs to Cirq’s
RouteCQCrouter.The router now handles unidirectional couplings using a Hadamard-based decomposition when required.
Summary of Changes
1️⃣ Removed Directed Graph Restriction
File:
route_circuit_cqc.py__init__to accept both directed and undirected graphsValueErrorpreviously raised for directed graphs2️⃣ Implemented
_emit_swap(Direction-Aware SWAP Emission)File:
route_circuit_cqc.pyAdded a new classmethod
_emit_swapthat emits SWAP operations based on edge directionality:Case A: Bidirectional edge
SWAPCase B: Unidirectional edge (
q1 → q2)Case C: Unidirectional edge (
q2 → q1)Case D: No edge
ValueError(should not occur for valid routing)3️⃣ Updated Routing Logic
File:
route_circuit_cqc.pydevice_graphparameter to_routeroute_circuitto passself.device_graphSWAPinsertion with_emit_swap4️⃣ Updated Tests
File:
route_circuit_cqc_test.pytest_directed_devicetest_directed_device_swap_decomposition(NEW)