예제 #1
0
def test(matrix):
    V = [Graph.Node(i) for i in range(0, len(matrix))]
    E = [[] for i in range(0, len(matrix))]
    G = Graph.Graph(V, E)
    Et = [[] for i in range(0, len(matrix))]
    Vt = [Graph.Node(i) for i in range(0, len(matrix))]
    Gt = Graph.Graph(Vt, Et)
    for i in range(0, len(matrix)):
        for j in range(0, len(matrix)):
            if matrix[i][j] is 1:
                E[i].append(Graph.Arch(i, j))
                V[i].addAdj(V[j])
                Et[j].append(Graph.Arch(j, i))
                Vt[j].addAdj(Vt[i])
    DFS.DFS(G)
    sccList = [[] for i in range(0, len(Gt.V))]
    DFS.SCC(Gt, sccList)
    count = 0
    length = []
    for i in range(0, len(sccList)):
        if (len(sccList[i]) is not 0):
            count += 1
            length.append(len(sccList[i]))
            #print "SCC["+str(i)+"] : " + str(sccList[i])
    print "Ci sono in totale " + str(count) + " componenti fortemente connesse"
    print "Con il seguente numero di vertici al loro interno: ", length