Exemple #1
0
            print(str(i)+"\t:",end="")
            for j in range(len(self.g[i])):
                print("\t"+str(self.g[i][j]),end="")
            print()
    class adjIterator:
        def __init__(self,graph,v):
            self.graph=graph
            self.v=v
            self.index=0

        def next(self):
            temp=self.graph.g[self.v][self.index]
            self.index+=1
            return temp
        def end(self):
            return self.index>=len(self.graph.g[self.v])
# sparseGraph=SparseGraph(100,False)
# edge=100
# for i in range(edge):
#     sparseGraph.addEdge(random.randint(0,99),random.randint(0,99))
# for i in range(sparseGraph.pointer()):
#     ite=SparseGraph.adjIterator(sparseGraph,i)
#     print("pointer\t" + str(i) + "\tedge:", end="")
#     while not ite.end():
#
#         print(str(ite.next())+"\t",end="")
#     print()
if __name__=="__main__":
    g1=ReadGraph().readSparseGraph('testG1.txt')
    g1.show()
    def hasEdge(self,v,w):
        assert v>=0 and v<self.n
        assert w>=0 and w<self.n
        return self.g[v][w]
    def show(self):
        for i in range(self.pointer()):
            print(str(i)+"\t:",end="")
            for j in range(len(self.g[i])):
                print("\t"+str(self.g[i][j]),end="")
            print()
    class adjIterator:
        def __init__(self,graph,v):
            self.graph=graph
            self.v=v
            self.index=0

        def next(self):
            for i in range(self.index,self.graph.pointer()):
                if  self.graph.g[self.v][i]:
                    temp=self.index
                    self.index+=1
                    return temp
                else:
                    self.index += 1

        def end(self):
            return self.index>=self.graph.pointer()
if __name__=="__main__":
    dense=ReadGraph().readDenseGraph("testG1.txt")
    dense.show()
        while len(stack):
            vec.append(stack.pop(len(stack) - 1))

    def showPath(self, w):
        vec = []
        self.shortestPath(w, vec)
        for i in range(len(vec)):
            if i == len(vec) - 1:
                print(str(vec[i].v()) + "--->" + str(vec[i].w()))
            else:
                print(str(vec[i].v()) + "--->", end="")


if __name__ == "__main__":
    # g1 = ReadGraph().readWidthSparseGraph('testG2_negative_circle.txt')
    g1 = ReadGraph().readWidthSparseGraph('testG2.txt')
    bellmanFord = BellmanFord(g1, 0)
    bellmanFord.bellManFord()
    if bellmanFord.hasNegativeCycle():
        print("has negative cycle")
    else:
        bellmanFord.showPath(2)
    bellmanFord = BellmanFord(g1, 0)
    bellmanFord.bellManFord()
    if bellmanFord.hasNegativeCycle():
        print("has negative cycle")
    else:
        bellmanFord.showPath(1)
    bellmanFord = BellmanFord(g1, 0)
    bellmanFord.bellManFord()
    if bellmanFord.hasNegativeCycle():
Exemple #4
0
        for i in range(self.graph.pointer()):
            if not self.visited[i]:
                self.dfs(i)
                self.count += 1

    def dfs(self, v):
        self.visited[v] = True
        self.id[v] = self.count
        iter = self.graph.adjIterator(self.graph, v)
        while not iter.end():
            node = iter.next()
            if not self.visited[node]:
                self.dfs(node)

    def size(self):
        return self.count

    def isConnect(self, v, w):
        assert v >= 0 and v < self.graph.pointer()
        assert w >= 0 and w < self.graph.pointer()
        return self.id[v] == self.id[w]


g1 = ReadGraph().readSparseGraph('testG1.txt')
c1 = Component(g1)
c1.component()
print(c1.size())
g2 = ReadGraph().readSparseGraph('testG2.txt')
c2 = Component(g2)
c2.component()
print(c2.size())