or v not in member.get_neighbors()):
                            break
                    else:
                        clique.add(v)
                        q.append(v)
        self.cliques.add(frozenset(clique))

    def count(self):
        return len(self.cliques)

    def get_cliques(self):
        return self.cliques


if __name__ == "__main__":
    g = UnweightedGraph()
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)
    g.add_vertex(8)
    g.add_vertex(9)
    g.add_vertex(10)
    g.add_vertex(11)

    # 4 cliques in total, of size, 3, 2, 4, and 3
    g.add_edge(1, 2)
    g.add_edge(2, 1)
示例#2
0
                    v.marked = True
                    v.id = self.component
                    q.append(v)

    def count(self):
        return self.component

    def id(self, node):
        return self.G.get_vertex(node).id

    def connected(self, node_a, node_b):
        return self.id(node_a) == self.id(node_b)


if __name__ == "__main__":
    g = UnweightedGraph()
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)

    g.add_edge(1, 2, both=True)
    g.add_edge(2, 4, both=True)
    g.add_edge(2, 6, both=True)

    g.add_edge(3, 5, both=True)

    cc = CC(g)
示例#3
0
                    v.id = self.component
                    q.append(v)

    def count(self):
        return self.component

    def id(self, node):
        return self.G.get_vertex(node).id

    def connected(self, node_a, node_b):
        return self.id(node_a) == self.id(node_b)



if __name__ == '__main__':
    g = UnweightedGraph()
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)

    g.add_edge(1,2, both=True)
    g.add_edge(2,4, both=True)
    g.add_edge(2,6, both=True)

    g.add_edge(3,5, both=True)

示例#4
0
                            break
                    else:
                        clique.add(v)
                        q.append(v)
        self.cliques.add(frozenset(clique))

    def count(self):
        return len(self.cliques)

    def get_cliques(self):
        return self.cliques



if __name__ == '__main__':
    g = UnweightedGraph()
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)
    g.add_vertex(8)
    g.add_vertex(9)
    g.add_vertex(10)
    g.add_vertex(11)


    # 4 cliques in total, of size, 3, 2, 4, and 3
    g.add_edge(1,2)
示例#5
0
    def __init__(self, G):
        self.G = G
        self.post = []
        for v in G:
            v.marked = False
        for v in G:
            if not v.marked:
                self.dfs(G, v)

    def dfs(self, G, source):
        source.marked = True
        for v in source.get_neighbors():
            if not v.marked:
                self.dfs(G, v)
        self.post.append(source)

    def __iter__(self):
        return iter(reversed(self.post))



if __name__ == '__main__':
    g = UnweightedGraph()
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)
                    v.marked = True
                    v.id = self.component
                    q.append(v)

    def count(self):
        return self.component

    def id(self, node):
        return self.G.get_vertex(node).id

    def connected(self, node_a, node_b):
        return self.id(node_a) == self.id(node_b)


if __name__ == "__main__":
    g = UnweightedGraph()
    g.add_vertex(0)
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)
    g.add_vertex(8)
    g.add_vertex(9)
    g.add_vertex(10)
    g.add_vertex(11)
    g.add_vertex(12)

    # 5 strongly connected components
    def __init__(self, G):
        self.G = G
        self.post = []
        for v in G:
            v.marked = False
        for v in G:
            if not v.marked:
                self.dfs(G, v)

    def dfs(self, G, source):
        source.marked = True
        for v in source.get_neighbors():
            if not v.marked:
                self.dfs(G, v)
        self.post.append(source)

    def __iter__(self):
        return iter(reversed(self.post))


if __name__ == "__main__":
    g = UnweightedGraph()
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)
示例#8
0
                    v.id = self.component
                    q.append(v)

    def count(self):
        return self.component

    def id(self, node):
        return self.G.get_vertex(node).id

    def connected(self, node_a, node_b):
        return self.id(node_a) == self.id(node_b)



if __name__ == '__main__':
    g = UnweightedGraph()
    g.add_vertex(0)
    g.add_vertex(1)
    g.add_vertex(2)
    g.add_vertex(3)
    g.add_vertex(4)
    g.add_vertex(5)
    g.add_vertex(6)
    g.add_vertex(7)
    g.add_vertex(8)
    g.add_vertex(9)
    g.add_vertex(10)
    g.add_vertex(11)
    g.add_vertex(12)

    # 5 strongly connected components