示例#1
0
def test_error_probability_from_array():
    H = csr_matrix(np.array([[1,1,0,0,0],[0,1,1,0,0],
                             [0,0,1,1,0],[0,0,0,1,1]]))
    m = Matching(H, error_probabilities=np.array([0.,0.,0.,0.,1.]))
    assert np.array_equal(m.add_noise()[0], np.array([0,0,0,0,1]))
    assert np.array_equal(m.add_noise()[1], np.array([0,0,0,1,1]))
    m = Matching(H, error_probabilities=np.array([0.,0.,0.,0.,0.]))
    assert np.array_equal(m.add_noise()[0], np.array([0,0,0,0,0]))
    assert np.array_equal(m.add_noise()[1], np.array([0,0,0,0,0]))
    m = Matching(H, error_probabilities=0.0)
    assert np.array_equal(m.add_noise()[0], np.array([0,0,0,0,0]))
    assert np.array_equal(m.add_noise()[1], np.array([0,0,0,0,0]))
    m = Matching(H, error_probabilities=1.0)
    assert np.array_equal(m.add_noise()[0], np.array([1,1,1,1,1]))
    assert np.array_equal(m.add_noise()[1], np.array([0,0,0,0,0]))
示例#2
0
def test_add_noise_with_boundary():
    g = nx.Graph()
    for i in range(11):
        g.add_edge(i, i + 1, qubit_id=i, error_probability=(i + 1) % 2)
    for i in range(5, 12):
        g.nodes()[i]['is_boundary'] = True
    m = Matching(g)
    noise, syndrome = m.add_noise()
    assert sum(syndrome) == 6
    assert np.array_equal(noise, (np.arange(11) + 1) % 2)
    assert m.boundary == list(range(5, 12))
    assert np.array_equal(syndrome,
                          np.array([1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0]))
示例#3
0
def test_add_noise():
    p = 0.1
    N = 1000
    std = (p * (1 - p) / N)**0.5
    g = nx.Graph()
    for i in range(N):
        g.add_edge(i,
                   i + 1,
                   qubit_id=i,
                   weight=-np.log(p),
                   error_probability=p)
    m = Matching(g)
    for i in range(5):
        noise, syndrome = m.add_noise()
        assert (sum(syndrome) % 2) == 0
        assert (p - 5 * std) * N < sum(noise) < (p + 5 * std) * N
        for i in range(1, N - 1):
            assert syndrome[i] == (noise[i - 1] + noise[i]) % 2
示例#4
0
def test_add_noise_to_unweighted_returns_none():
    m = Matching(csr_matrix(np.array([[1,1,0],[0,1,1]])))
    assert m.add_noise() == None
    m = Matching(csr_matrix(np.array([[1,1,0],[0,1,1]])), 
             error_probabilities=np.array([0.5,0.7,-0.1]))
    assert m.add_noise() == None
示例#5
0
def test_add_noise_without_error_probabilities_returns_none():
    m = Matching(csr_matrix(np.array([[1, 1, 0], [0, 1, 1]])))
    assert m.add_noise() is None
    m = Matching(csr_matrix(np.array([[1, 1, 0], [0, 1, 1]])),
                 error_probabilities=np.array([0.5, 0.7, -0.1]))
    assert m.add_noise() is None