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
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
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
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
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
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