@@ -6799,13 +6799,26 @@ def cliques_number_of(self, vertices=None, cliques=None):
67996799 {(0, 0): 2, (0, 1): 3, (0, 2): 2, (1, 0): 2, (1, 1): 3, (1, 2): 2}
68006800 sage: F.cliques_number_of(vertices=[(0, 1), (1, 2)])
68016801 {(0, 1): 3, (1, 2): 2}
6802+ sage: F.cliques_number_of(vertices=(0, 1))
6803+ 3
68026804 sage: G = Graph({0:[1,2,3], 1:[2], 3:[0,1]})
68036805 sage: G.show(figsize=[2,2])
68046806 sage: G.cliques_number_of()
68056807 {0: 2, 1: 2, 2: 1, 3: 1}
68066808 """
6807- import networkx
6808- return networkx .number_of_cliques (self .networkx_graph (), vertices , cliques )
6809+ if cliques is None :
6810+ cliques = self .cliques_maximal ()
6811+
6812+ if vertices in self : # single vertex
6813+ return sum (1 for c in cliques if vertices in c )
6814+
6815+ from collections import Counter
6816+ count = Counter ()
6817+
6818+ for c in cliques :
6819+ count .update (c )
6820+
6821+ return {v : count [v ] for v in vertices or self }
68096822
68106823 @doc_index ("Clique-related methods" )
68116824 def cliques_get_max_clique_graph (self ):
@@ -7506,17 +7519,32 @@ def cliques_containing_vertex(self, vertices=None, cliques=None):
75067519
75077520 sage: C = Graph('DJ{')
75087521 sage: C.cliques_containing_vertex()
7509- {0: [[4, 0]], 1: [[4, 1, 2, 3]], 2: [[4, 1, 2, 3]], 3: [[4, 1, 2, 3]], 4: [[4, 0], [4, 1, 2, 3]]}
7522+ {0: [[0, 4]],
7523+ 1: [[1, 2, 3, 4]],
7524+ 2: [[1, 2, 3, 4]],
7525+ 3: [[1, 2, 3, 4]],
7526+ 4: [[0, 4], [1, 2, 3, 4]]}
7527+ sage: C.cliques_containing_vertex(4)
7528+ [[0, 4], [1, 2, 3, 4]]
7529+ sage: C.cliques_containing_vertex([0, 1])
7530+ {0: [[0, 4]], 1: [[1, 2, 3, 4]]}
75107531 sage: E = C.cliques_maximal()
75117532 sage: E
75127533 [[0, 4], [1, 2, 3, 4]]
75137534 sage: C.cliques_containing_vertex(cliques=E)
7514- {0: [[0, 4]], 1: [[1, 2, 3, 4]], 2: [[1, 2, 3, 4]], 3: [[1, 2, 3, 4]], 4: [[0, 4], [1, 2, 3, 4]]}
7535+ {0: [[0, 4]],
7536+ 1: [[1, 2, 3, 4]],
7537+ 2: [[1, 2, 3, 4]],
7538+ 3: [[1, 2, 3, 4]],
7539+ 4: [[0, 4], [1, 2, 3, 4]]}
75157540
75167541 sage: G = Graph({0:[1,2,3], 1:[2], 3:[0,1]})
75177542 sage: G.show(figsize=[2,2])
75187543 sage: G.cliques_containing_vertex()
7519- {0: [[0, 1, 2], [0, 1, 3]], 1: [[0, 1, 2], [0, 1, 3]], 2: [[0, 1, 2]], 3: [[0, 1, 3]]}
7544+ {0: [[0, 1, 2], [0, 1, 3]],
7545+ 1: [[0, 1, 2], [0, 1, 3]],
7546+ 2: [[0, 1, 2]],
7547+ 3: [[0, 1, 3]]}
75207548
75217549 Since each clique of a 2 dimensional grid corresponds to an edge, the
75227550 number of cliques in which a vertex is involved equals its degree::
@@ -7531,8 +7559,20 @@ def cliques_containing_vertex(self, vertices=None, cliques=None):
75317559 sage: sorted(sorted(x for x in L) for L in d[(0, 1)])
75327560 [[(0, 0), (0, 1)], [(0, 1), (0, 2)], [(0, 1), (1, 1)]]
75337561 """
7534- import networkx
7535- return networkx .cliques_containing_node (self .networkx_graph (), vertices , cliques )
7562+ if cliques is None :
7563+ cliques = self .cliques_maximal ()
7564+
7565+ if vertices in self : # single vertex
7566+ return [c for c in cliques if vertices in c ]
7567+
7568+ from collections import defaultdict
7569+ d = defaultdict (list )
7570+
7571+ for c in cliques :
7572+ for v in c :
7573+ d [v ].append (c )
7574+
7575+ return {v : d [v ] for v in vertices or self }
75367576
75377577 @doc_index ("Clique-related methods" )
75387578 def clique_complex (self ):
0 commit comments