def test_update_mapping(): gate = cca.SwapPermutationGate() a, b, c = (cirq.NamedQubit(s) for s in 'abc') mapping = {s: i for i, s in enumerate((a, b, c))} ops = [gate(a, b), gate(b, c)] cca.update_mapping(mapping, ops) assert mapping == {a: 1, b: 2, c: 0}
def test_decomposition_permutation_consistency(part_size, subgraph): gate = cca.BipartiteSwapNetworkGate(subgraph, part_size) qubits = cirq.LineQubit.range(2 * part_size) mapping = {q: i for i, q in enumerate(qubits)} cca.update_mapping(mapping, gate._decompose_(qubits)) permutation = gate.permutation() assert {qubits[i]: j for i, j in permutation.items()} == mapping
def test_return_to_initial_mapping(circuit): qubits = sorted(circuit.all_qubits()) cca.return_to_initial_mapping(circuit) initial_mapping = {q: i for i, q in enumerate(qubits)} mapping = dict(initial_mapping) cca.update_mapping(mapping, circuit.all_operations()) assert mapping == initial_mapping
def test_swap_network_gate_permutation(part_lens, acquaintance_size): n_qubits = sum(part_lens) qubits = cirq.LineQubit.range(n_qubits) swap_network_gate = cca.SwapNetworkGate(part_lens, acquaintance_size) operations = cirq.decompose_once_with_qubits(swap_network_gate, qubits) operations = list(cirq.flatten_op_tree(operations)) mapping = {q: i for i, q in enumerate(qubits)} cca.update_mapping(mapping, operations) assert mapping == {q: i for i, q in enumerate(reversed(qubits))}
def final_mapping(self) -> Dict['cirq.Qid', 'cirq.Qid']: mapping = dict(self.initial_mapping) cca.update_mapping(mapping, self.circuit.all_operations()) return mapping
def final_mapping(self): mapping = dict(self.initial_mapping) cca.update_mapping(mapping, self.circuit.all_operations()) return mapping