示例#1
0
def test_largest_collect_unused_collects():
    q00 = GridQubit(0, 0)
    q01 = GridQubit(0, 1)
    q02 = GridQubit(0, 2)
    q12 = GridQubit(1, 2)
    qubits = [q00, q01, q02, q12]
    start = q01
    search = LargestAreaGreedySequenceSearch(_create_device(qubits), start)
    assert search._collect_unused(start, {q00, q01}) == {q01, q02, q12}
示例#2
0
def test_largest_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 = LargestAreaGreedySequenceSearch(_create_device(qubits), q10)
    # +-* X
    #
    #     +
    assert search._choose_next_qubit(q10, {q10, q20}) == q00
示例#3
0
def test_largest_collect_stops_on_used():
    q00 = GridQubit(0, 0)
    q01 = GridQubit(0, 1)
    q02 = GridQubit(0, 2)
    q03 = GridQubit(0, 3)
    q04 = GridQubit(0, 4)
    q05 = GridQubit(0, 5)
    q11 = GridQubit(1, 1)
    q14 = GridQubit(1, 4)
    q24 = GridQubit(2, 4)
    qubits = [q00, q01, q11, q02, q03, q04, q05, q14, q24]
    start = q02
    search = LargestAreaGreedySequenceSearch(_create_device(qubits), start)
    assert search._collect_unused(start, {start, q04}) == {q00, q01, q11, q02,
                                                           q03}
示例#4
0
def test_largest_collect_stops_on_used():
    q00 = XmonQubit(0, 0)
    q01 = XmonQubit(0, 1)
    q02 = XmonQubit(0, 2)
    q03 = XmonQubit(0, 3)
    q04 = XmonQubit(0, 4)
    q05 = XmonQubit(0, 5)
    q11 = XmonQubit(1, 1)
    q14 = XmonQubit(1, 4)
    q24 = XmonQubit(2, 4)
    qubits = [q00, q01, q11, q02, q03, q04, q05, q14, q24]
    start = q02
    search = LargestAreaGreedySequenceSearch(_create_device(qubits), start)
    assert search._collect_unused(start,
                                  {start, q04}) == {q00, q01, q11, q02, q03}
示例#5
0
def test_largest_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 = LargestAreaGreedySequenceSearch(_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
示例#6
0
def test_largest_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 = LargestAreaGreedySequenceSearch(_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