示例#1
0
def test_bipartite_connected_not_verified():
    """
    Verifica che che bipartite() riconosca correttamente un grafo connesso non bipartito
    :return:
    """
    B = Graph()
    v1 = B.insert_vertex(1)
    v2 = B.insert_vertex(2)
    v3 = B.insert_vertex(3)
    v4 = B.insert_vertex(4)
    v5 = B.insert_vertex(5)
    v6 = B.insert_vertex(6)
    v7 = B.insert_vertex(7)
    B.insert_edge(v1, v2, 3)
    B.insert_edge(v1, v4, 3)
    B.insert_edge(v2, v3, 5)
    B.insert_edge(v3, v4, 2)
    B.insert_edge(v4, v5, 5)
    B.insert_edge(v5, v6, 1)
    B.insert_edge(v5, v7, 1)

    # arco rotto
    B.insert_edge(v2, v4, 5)

    if bipartite(B) is None:
        print('Test test_bipartite_connected_not_verified passed')
    else:
        print('Test test_bipartite_connected_not_verified failed')
示例#2
0
def test_bipartite_connected():
    """
    Verifica che che bipartite() riconosca correttamente un grafo connesso bipartito
    :return:
    """
    B = Graph()
    v1 = B.insert_vertex(1)
    v2 = B.insert_vertex(2)
    v3 = B.insert_vertex(3)
    v4 = B.insert_vertex(4)
    v5 = B.insert_vertex(5)
    v6 = B.insert_vertex(6)
    v7 = B.insert_vertex(7)
    B.insert_edge(v1, v2, 3)
    B.insert_edge(v1, v4, 3)
    B.insert_edge(v2, v3, 5)
    B.insert_edge(v3, v4, 2)
    B.insert_edge(v4, v5, 5)
    B.insert_edge(v5, v6, 1)
    B.insert_edge(v5, v7, 1)
    e = B.edges()

    if bipartite(B) is None:
        print('Test test_bipartite_connected failed')
    else:
        A, B = bipartite(B)
        C = set()
        D = set()
        for x in A:
            C.add(x.element())
        for y in B:
            D.add(y.element())
        graphic_from_partition(C, D, e, 'test_bipartite_connected')
示例#3
0
def graph_randomize(n: int):
    graph = Graph()
    random = Random()

    for i in range(0, n):
        graph.insert_vertex(i)

    for v in graph.vertices():
        for u in graph.vertices():
            if bool(random.getrandbits(1)) and u != v and graph.get_edge(
                    u, v) is None:
                graph.insert_edge(u, v)

    print("number of vertices " + str(graph.vertex_count()) +
          "\nnumber of edges " + str(graph.edge_count()))

    return graph
示例#4
0
def test_bipartite_unconnected():
    B = Graph()
    v1 = B.insert_vertex(1)
    v2 = B.insert_vertex(2)
    v3 = B.insert_vertex(3)
    v4 = B.insert_vertex(4)
    v5 = B.insert_vertex(5)
    v6 = B.insert_vertex(6)
    v7 = B.insert_vertex(7)
    B.insert_edge(v1, v2, 3)
    B.insert_edge(v1, v4, 3)
    B.insert_edge(v3, v2, 5)
    B.insert_edge(v3, v4, 2)

    B.insert_edge(v5, v6, 1)
    B.insert_edge(v5, v7, 1)
    e = B.edges()

    if bipartite(B) is None:
        print('Test test_bipartite_unconnected failed')
    else:
        A, B = bipartite(B)
        C = set()
        D = set()
        for x in A:
            C.add(x.element())
        for y in B:
            D.add(y.element())
        graphic_from_partition(C, D, e, 'test_bipartite_unconnected')
示例#5
0
def test_bipartite_unconnected_not_verified():
    B = Graph()
    v1 = B.insert_vertex(1)
    v2 = B.insert_vertex(2)
    v3 = B.insert_vertex(3)
    v4 = B.insert_vertex(4)
    v5 = B.insert_vertex(5)
    v6 = B.insert_vertex(6)
    v7 = B.insert_vertex(7)
    B.insert_edge(v1, v2, 3)
    B.insert_edge(v1, v4, 3)
    B.insert_edge(v3, v2, 5)
    B.insert_edge(v3, v4, 2)

    B.insert_edge(v5, v6, 1)
    B.insert_edge(v5, v7, 1)

    # arco rotto
    B.insert_edge(v2, v4, 2)

    if bipartite(B) is None:
        print('Test test_bipartite_unconnected_not_verified passed')
    else:
        print('Test test_bipartite_unconnected_not_verified failed')
示例#6
0
from TdP_collections.graphs.graph import Graph
from Gruppo6_4_TdP.pkg_3.emergency_call import emergency_call
import string
from Gruppo6_4_TdP.util import randList

grafo1 = Graph(True)

v0 = grafo1.insert_vertex(0)
v1 = grafo1.insert_vertex(1)
v2 = grafo1.insert_vertex(2)
v3 = grafo1.insert_vertex(3)
v4 = grafo1.insert_vertex(4)
v5 = grafo1.insert_vertex(5)
v6 = grafo1.insert_vertex(6)

grafo1.insert_edge(v1, v0, 1)
grafo1.insert_edge(v0, v4, 4)
grafo1.insert_edge(v3, v4, 3)
grafo1.insert_edge(v1, v3, 10)
grafo1.insert_edge(v1, v2, 1)
grafo1.insert_edge(v4, v5, 2)
grafo1.insert_edge(v5, v6, 1)
grafo1.insert_edge(v2, v6, 1)
grafo1.insert_edge(v6, v4, 1)

# polizia = {v4: 1, v5: 2, v6: 3}

polizia = {1: v4, 2: v5, 3: v6}

volanti = emergency_call(grafo1, polizia, v5, 2)
示例#7
0
from TdP_collections.graphs.graph import Graph
from pkg_4.esercizio4 import complete_bipartite

graph1 = Graph()
graph2 = Graph()
graph3 = Graph()
graph4 = Graph()
vertex = []

print("TEST GRAFO BIPARTIBILE")
for i in range(4):
    vertex.append(graph1.insert_vertex(i))

graph1.insert_edge(vertex[0], vertex[1])
graph1.insert_edge(vertex[0], vertex[2])
graph1.insert_edge(vertex[1], vertex[3])
graph1.insert_edge(vertex[2], vertex[3])

bipartibile, x, y = complete_bipartite(graph1)

if bipartibile:
    print("E' bipartibile ")
    print("Insieme di bipartizione X")
    for k in x:
        print(k)
    print("Insieme di bipartizione Y")
    for k in y:
        print(k)
else:
    print("Non e' bipartibile ")
示例#8
0
        level = next_level  # vado a controllare il livello successivo
    return nb, red, blue  # ritorno il valore di nb e le due partizioni


if __name__ == '__main__':

    gbi = Graph()  #GRAFO UNO

    a = gbi.insert_vertex("A")
    b = gbi.insert_vertex("B")
    c = gbi.insert_vertex("C")
    d = gbi.insert_vertex("D")
    e = gbi.insert_vertex("E")

    gbi.insert_edge(a, b)
    gbi.insert_edge(a, c)
    gbi.insert_edge(b, d)
    gbi.insert_edge(d, e)
    gbi.insert_edge(e, a)

    gbi2 = Graph()  #GRAFO DUE

    a = gbi2.insert_vertex("A")
    b = gbi2.insert_vertex("B")
    c = gbi2.insert_vertex("C")
    d = gbi2.insert_vertex("D")
    e = gbi2.insert_vertex("E")

    gbi2.insert_edge(a, b, None)
    gbi2.insert_edge(a, e, None)
示例#9
0
from TdP_collections.graphs.graph import Graph
from Ex4 import FakeNewsDetector

graph = Graph()

vertices = []
for i in range(0, 9):
    vertices.append(graph.insert_vertex(i))

graph.insert_edge(vertices[0], vertices[1])
graph.insert_edge(vertices[0], vertices[2])
graph.insert_edge(vertices[0], vertices[3])
graph.insert_edge(vertices[1], vertices[4])
graph.insert_edge(vertices[1], vertices[5])
graph.insert_edge(vertices[2], vertices[6])
graph.insert_edge(vertices[3], vertices[7])
graph.insert_edge(vertices[5], vertices[8])

n, l = FakeNewsDetector.installer(graph, vertices[0])
print(n)
print(*l, sep="-")
示例#10
0
    print("seconda partizione composta da : ", sol)


print(
    "---------------------------------------- TEST_BIPARTITE ----------------------------------------"
)
print("******* CASO 1 *******")
print(
    "Grafo composto da due componenti non connesse tra di loro ma entrambe bipartibili\n**********************"
)
g = Graph()
v = []
for i in range(1, 9):
    v.append(g.insert_vertex(i))
print("Prima componente connessa composta da 1, 2, 3, 4, 5, 6, 7, 8")
g.insert_edge(v[0], v[1])
g.insert_edge(v[0], v[3])
g.insert_edge(v[2], v[1])
g.insert_edge(v[2], v[3])
g.insert_edge(v[2], v[5])
g.insert_edge(v[4], v[3])
g.insert_edge(v[4], v[5])
g.insert_edge(v[4], v[7])
g.insert_edge(v[6], v[5])
g.insert_edge(v[6], v[7])

print("Seconda componente connessa composta da 9,10")
v1 = g.insert_vertex(9)
v2 = g.insert_vertex(10)
g.insert_edge(v1, v2)