コード例 #1
0
def test_kruskal_raises():
    g = Graph(range(10))

    for v in g.vertices:
        g.link(0, v, 5)

    for v1 in g.vertices:
        for v2 in g.vertices:
            if v1 != v2 and not g.has_edge(v1, v2):
                g.link(v1, v2, 10)

    with pytest.raises(ValueError):
        kruskal(g)
コード例 #2
0
def test_hamiltonian_cycle():
    g = Graph(
        range(11),
        zip(range(10), range(1, 10)),
    )

    for v in range(10):

        g.link(v, 10, 2)

    hc = hamiltonian_cycle(g, 0)

    assert hc == list(range(11))
コード例 #3
0
def test_str(g):
    g = Graph()

    assert str(g) == 'Graph(set(), set())'

    g.insert(0)
    g.insert(1)

    assert str(g) == 'Graph({0, 1}, set())'

    g.link(0, 1, 5)

    assert str(g) == 'Graph({0, 1}, {(0, 1, 5)})'
コード例 #4
0
def test_prim():
    g = Graph(range(10))

    for v in g.vertices:
        if v != 0:
            g.link(0, v, 5)

    for v1 in g.vertices:
        for v2 in g.vertices:
            if v1 != v2 and not g.has_edge(v1, v2):
                g.link(v1, v2, 10)

    tree = prim(g)

    assert tree.vertices == set(range(10))

    assert tree.edges == {(0, i, 5) for i in range(1, 10)}
コード例 #5
0
def test_fringe():
    g = Graph(range(10))

    g.link(0, 1)
    g.link(0, 2)
    g.link(0, 3)
    g.link(0, 4)

    g.link(1, 5)
    g.link(1, 6)
    g.link(1, 7)
    g.link(1, 8)

    g.link(2, 9)

    assert fringe(g, [0]) == set(range(1, 5))

    assert fringe(g, [1]) == {0} | set(range(5, 9))

    assert fringe(g, [2]) == {0, 9}

    assert fringe(g, [0, 1]) == set(range(2, 9))

    assert fringe(g, [0, 1, 2]) == g.vertices - {0, 1, 2}