igraph的maximal.cliques函数的subset参数怎么用?
How to use the subset parameter of igraph's maximal.cliques function?
我有一个大图,我想找到包含一对顶点的最大团。我认为 igraph 的 maximal.clique 函数的子集参数可以做到这一点,但要么我用错了它,要么它做了完全不同的事情。我花了相当多的时间在网上搜索,但运气不佳。
这是一个显示问题的最小示例:
> library(igraph)
> packageVersion('igraph')
[1] ‘1.0.1’
> g = graph.empty(n=10, directed=FALSE)
> g = add.edges(g, c(1, 2))
> str(g)
IGRAPH U--- 10 1 --
+ edge:
[1] 1--2
> # This correctly results a clique.
> maximal.cliques(g, min=2)
[[1]]
+ 2/10 vertices:
[1] 2 1
> # These don't return anything!
> maximal.cliques(g, min=2, subset=1)
list()
> maximal.cliques(g, min=2, subset=c(1, 2))
list()
subset
参数不是用于计算图子集上的最大派系;它只是限制了在 Bron-Kerbosch algorithm 的过程中用作 起点 的顶点集。 Bron-Kerbosch 算法本身仍然会搜索整个图,并允许根据需要从当前集合中添加或删除顶点。
仅 subset
参数的作用是它允许您通过将图的顶点集划分为子集的数量,然后 运行 maximal.cliques
在具有不同子集的多个 CPU 或 CPU 核心上。如果起始子集包含其任何或所有顶点,则不能保证找到最大团;例如,在我的机器上,如果我使用仅由顶点 9 组成的起始子集,则会找到最大团 1--2:
> maximal.cliques(g, subset=c(9))
[[1]]
+ 2/10 vertices:
[1] 2 1
如果要在原始图的子图中搜索最大团,请先使用 induced_subgraph
,然后使用 max_cliques
。
我有一个大图,我想找到包含一对顶点的最大团。我认为 igraph 的 maximal.clique 函数的子集参数可以做到这一点,但要么我用错了它,要么它做了完全不同的事情。我花了相当多的时间在网上搜索,但运气不佳。
这是一个显示问题的最小示例:
> library(igraph)
> packageVersion('igraph')
[1] ‘1.0.1’
> g = graph.empty(n=10, directed=FALSE)
> g = add.edges(g, c(1, 2))
> str(g)
IGRAPH U--- 10 1 --
+ edge:
[1] 1--2
> # This correctly results a clique.
> maximal.cliques(g, min=2)
[[1]]
+ 2/10 vertices:
[1] 2 1
> # These don't return anything!
> maximal.cliques(g, min=2, subset=1)
list()
> maximal.cliques(g, min=2, subset=c(1, 2))
list()
subset
参数不是用于计算图子集上的最大派系;它只是限制了在 Bron-Kerbosch algorithm 的过程中用作 起点 的顶点集。 Bron-Kerbosch 算法本身仍然会搜索整个图,并允许根据需要从当前集合中添加或删除顶点。
仅 subset
参数的作用是它允许您通过将图的顶点集划分为子集的数量,然后 运行 maximal.cliques
在具有不同子集的多个 CPU 或 CPU 核心上。如果起始子集包含其任何或所有顶点,则不能保证找到最大团;例如,在我的机器上,如果我使用仅由顶点 9 组成的起始子集,则会找到最大团 1--2:
> maximal.cliques(g, subset=c(9))
[[1]]
+ 2/10 vertices:
[1] 2 1
如果要在原始图的子图中搜索最大团,请先使用 induced_subgraph
,然后使用 max_cliques
。