跳到内容

如果一个顶点集中任意两个顶点之间没有边,则该顶点集被称为独立顶点集。这些函数用于在无向图中查找独立顶点集。

用法

ivs(graph, min = NULL, max = NULL)

largest_ivs(graph)

max_ivs(graph)

ivs_size(graph)

independence_number(graph)

is_ivs(graph, candidate)

参数

graph

输入图。

min

数值常量,用于限制要查找的独立顶点集的最小大小。NULL表示没有限制。

max

数值常量,用于限制要查找的独立顶点集的最大大小。NULL表示没有限制。

candidate

要测试是否为独立集的顶点集。

ivs()largest_ivs()max_ivs() 返回一个列表,其中包含数值顶点 ID,每个列表元素都是一个独立的顶点集。

ivs_size() 返回一个整数常量。

如果候选顶点集构成一个独立集,则 is_ivs() 返回 TRUE

详细信息

ivs() 在网络中查找所有独立顶点集,并遵守 minmax 参数中给出的尺寸限制。

largest_ivs() 查找图中最大的独立顶点集。如果不存在具有更多顶点的独立顶点集,则独立顶点集是最大的。

max_ivs() 查找图中最大的极大独立顶点集。如果无法将其扩展为更大的独立顶点集,则独立顶点集是极大的。最大的独立顶点集是极大的,但反之并不总是成立。

ivs_size() 计算最大独立顶点集的大小。

independence_number()ivs_size() 的别名。

这些函数使用 Tsukiyama 等人描述的算法,请参阅下面的参考资料。

is_ivs() 测试顶点集内的顶点对是否未连接。

参考文献

S. Tsukiyama, M. Ide, H. Ariyoshi and I. Shirawaka. A new algorithm for generating all the maximal independent sets. SIAM J Computing, 6:505–517, 1977.

参见

作者

Tamas Nepusz ntamas@gmail.com 从 Keith Briggs 的 Very Nauty Graph Library (http://keithbriggs.info/) 移植了它,Gabor Csardi csardi.gabor@gmail.com 编写了 R 接口和本手册页。

is_independent_vertex_set().

示例


# Do not run, takes a couple of seconds

# A quite dense graph
set.seed(42)
g <- sample_gnp(100, 0.9)
ivs_size(g)
#> [1] 4
ivs(g, min = ivs_size(g))
#> [[1]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  7 37 55 56
#> 
#> [[2]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  7 55 56 69
#> 
#> [[3]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  7 56 69 74
#> 
#> [[4]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  8 15 73 80
#> 
#> [[5]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  8 15 73 84
#> 
#> [[6]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 13 16 37 40
#> 
#> [[7]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 21 32 45 61
#> 
#> [[8]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 22 55 56 64
#> 
#> [[9]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 23 69 75 90
#> 
largest_ivs(g)
#> [[1]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 21 32 45 61
#> 
#> [[2]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  7 37 55 56
#> 
#> [[3]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  7 55 56 69
#> 
#> [[4]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  7 56 69 74
#> 
#> [[5]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  8 15 73 80
#> 
#> [[6]]
#> + 4/100 vertices, from 19dc68d:
#> [1]  8 15 73 84
#> 
#> [[7]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 22 55 56 64
#> 
#> [[8]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 23 69 75 90
#> 
#> [[9]]
#> + 4/100 vertices, from 19dc68d:
#> [1] 13 16 37 40
#> 
# Empty graph
induced_subgraph(g, largest_ivs(g)[[1]])
#> IGRAPH 9a08897 U--- 4 0 -- Erdos-Renyi (gnp) graph
#> + attr: name (g/c), type (g/c), loops (g/l), p (g/n)
#> + edges from 9a08897:

length(max_ivs(g))
#> [1] 326