Exemplo n.º 1
0
def test_minimal_sequence_search_returns_none_when_blocked():
    q00 = GridQubit(0, 0)
    q10 = GridQubit(1, 0)
    qubits = [q00, q10]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q10)
    assert search._choose_next_qubit(q10, {q00, q10}) is None
Exemplo n.º 2
0
def test_minimal_sequence_search_returns_none_when_blocked():
    q00 = GridQubit(0, 0)
    q10 = GridQubit(1, 0)
    qubits = [q00, q10]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q10)
    assert search._choose_next_qubit(q10, {q00, q10}) is None
Exemplo n.º 3
0
def test_minimal_sequence_search_does_not_use_used():
    q00 = GridQubit(0, 0)
    q10 = GridQubit(1, 0)
    q20 = GridQubit(2, 0)
    q21 = GridQubit(2, 1)
    qubits = [q00, q10, q20, q21]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q10)
    # + *-+
    #
    #     +
    assert search._choose_next_qubit(q10, {q00, q10}) == q20
Exemplo n.º 4
0
def test_minimal_sequence_search_does_not_use_used():
    q00 = GridQubit(0, 0)
    q10 = GridQubit(1, 0)
    q20 = GridQubit(2, 0)
    q21 = GridQubit(2, 1)
    qubits = [q00, q10, q20, q21]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q10)
    # + *-+
    #
    #     +
    assert search._choose_next_qubit(q10, {q00, q10}) == q20
Exemplo n.º 5
0
def test_minimal_sequence_search_chooses_minimal():
    q00 = XmonQubit(0, 0)
    q10 = XmonQubit(1, 0)
    q20 = XmonQubit(2, 0)
    q21 = XmonQubit(2, 1)
    qubits = [q00, q10, q20, q21]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q10)
    # +-* +
    #
    #     +
    assert search._choose_next_qubit(q10, {q10}) == q00
Exemplo n.º 6
0
def test_minimal_sequence_search_traverses_grid():
    q00 = XmonQubit(0, 0)
    q10 = XmonQubit(1, 0)
    q11 = XmonQubit(1, 1)
    q20 = XmonQubit(2, 0)
    q30 = XmonQubit(3, 0)
    q40 = XmonQubit(4, 0)
    q41 = XmonQubit(4, 1)
    q42 = XmonQubit(4, 2)
    q50 = XmonQubit(5, 0)
    qubits = [q00, q10, q11, q20, q30, q40, q50, q41, q42]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q20)
    # + + *-+-+-+
    #
    #   +     +
    #
    #         +
    assert search._choose_next_qubit(q20, {q20}) == q30
    assert search._choose_next_qubit(q30, {q20, q30}) == q40
    assert search._choose_next_qubit(q40, {q20, q30, q40}) == q50
    assert search._choose_next_qubit(q50, {q20, q30, q40, q50}) is None
Exemplo n.º 7
0
def test_minimal_sequence_search_returns_none_for_single_node():
    q00 = GridQubit(0, 0)
    qubits = [q00]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q00)
    assert search._choose_next_qubit(q00, {q00}) is None
Exemplo n.º 8
0
def test_minimal_sequence_search_traverses_grid():
    q00 = GridQubit(0, 0)
    q10 = GridQubit(1, 0)
    q11 = GridQubit(1, 1)
    q20 = GridQubit(2, 0)
    q30 = GridQubit(3, 0)
    q40 = GridQubit(4, 0)
    q41 = GridQubit(4, 1)
    q42 = GridQubit(4, 2)
    q50 = GridQubit(5, 0)
    qubits = [q00, q10, q11, q20, q30, q40, q50, q41, q42]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q20)
    # + + *-+-+-+
    #         |
    #   +     +
    #         |
    #         +
    assert search._choose_next_qubit(q20, {q20}) == q30
    assert search._choose_next_qubit(q30, {q20, q30}) == q40
    assert search._choose_next_qubit(q40, {q20, q30, q40}) == q41
    assert search._choose_next_qubit(q41, {q20, q30, q40, q41}) == q42
    assert search._choose_next_qubit(q42, {q20, q30, q40, q41, q42}) is None

    # +-+-+-+-+ +
    #         |
    #   +     +
    #         |
    #         *
    assert search._choose_next_qubit(q42, {q42}) == q41
    assert search._choose_next_qubit(q41, {q42, q41}) == q40
    assert search._choose_next_qubit(q40, {q42, q41, q40}) == q30
    assert search._choose_next_qubit(q30, {q42, q41, q40, q30}) == q20
    assert search._choose_next_qubit(q20, {q42, q41, q40, q30, q20}) == q10
    assert search._choose_next_qubit(q10,
                                     {q42, q41, q40, q30, q20, q10}) == q11
    assert search._choose_next_qubit(q11, {q42, q41, q40, q30, q20, q10,
                                           q11}) is None
Exemplo n.º 9
0
def test_minimal_sequence_search_returns_none_for_single_node():
    q00 = GridQubit(0, 0)
    qubits = [q00]
    search = MinimalConnectivityGreedySequenceSearch(_create_device(qubits),
                                                     q00)
    assert search._choose_next_qubit(q00, {q00}) is None