Esempio n. 1
0
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}
Esempio n. 2
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
Esempio n. 3
0
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
Esempio n. 4
0
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))}
Esempio n. 5
0
 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