def test_swap_network_gate_permutation(part_lens, acquaintance_size): n_qubits = sum(part_lens) qubits = cirq.LineQubit.range(n_qubits) swap_network_gate = SwapNetworkGate(part_lens, acquaintance_size) operations = swap_network_gate.default_decompose(qubits) operations = list(cirq.flatten_op_tree(operations)) mapping = {q: i for i, q in enumerate(qubits)} update_mapping(mapping, operations) assert mapping == {q: i for i, q in enumerate(reversed(qubits))}
def test_swap_network_decomposition(): qubits = cirq.LineQubit.range(8) swap_network_gate = SwapNetworkGate((4, 4), 5) operations = swap_network_gate.default_decompose(qubits) circuit = cirq.Circuit.from_ops(operations) actual_text_diagram = circuit.to_text_diagram() expected_text_diagram = """ 0: ───█─────────────█─────────────╲0╱─────────────█─────────█───────0↦2─── │ │ │ │ │ │ 1: ───█─────────────█─────────────╲1╱─────────────█─────────█───────1↦3─── │ │ │ │ │ │ 2: ───█─────────────█───1↦0───────╲2╱───────1↦0───█─────────█───────2↦0─── │ │ │ │ │ │ │ │ 3: ───█───█─────────█───0↦1───█───╲3╱───█───0↦1───█─────────█───█───3↦1─── │ │ │ │ │ │ │ │ │ 4: ───█───█───0↦1───█─────────█───╱4╲───█─────────█───0↦1───█───█───0↦2─── │ │ │ │ │ │ │ │ 5: ───────█───1↦0─────────────█───╱5╲───█─────────────1↦0───────█───1↦3─── │ │ │ │ │ │ 6: ───────█───────────────────█───╱6╲───█───────────────────────█───2↦0─── │ │ │ │ │ │ 7: ───────█───────────────────█───╱7╲───█───────────────────────█───3↦1─── """.strip() assert actual_text_diagram == expected_text_diagram