简单图是不包含环和重边的图。
用法
simplify(
graph,
remove.multiple = TRUE,
remove.loops = TRUE,
edge.attr.comb = igraph_opt("edge.attr.comb")
)
is_simple(graph)
simplify_and_colorize(graph)
参数
- graph
要操作的图。
- remove.multiple
逻辑值,是否要删除重边。
- remove.loops
逻辑值,是否要删除环。
- edge.attr.comb
指定如果
remove.multiple=TRUE
时如何处理边属性。在这种情况下,许多边可能会映射到新图中的一条边,并且它们的属性会被组合。请参阅attribute.combination()
获取更多详细信息。
详细信息
环边是两个端点是同一顶点的边。如果两个边具有完全相同的两个端点(对于有向图,顺序很重要),则它们是重边。如果一个图不包含环边和重边,则它是简单图。
is_simple()
检查一个图是否是简单图。
simplify()
从图中删除环和/或重边。如果 remove.loops
和 remove.multiple
都为 TRUE
,则该函数返回一个简单图。
simplify_and_colorize()
从一个图构造一个新的简单图,并在顶点和边上设置 color
属性。顶点的颜色表示最初发生在其上的自环的数量,而边的颜色表示原始图中相同边的重数。这允许人们在 VF2 同构算法中考虑边的重数和环边的数量。来自原始图的其他图、顶点和边属性将被丢弃,因为此函数的主要目的是方便多重图与 VF2 算法的使用。
参见
which_loop()
, which_multiple()
和 count_multiple()
, delete_edges()
, delete_vertices()
其他用于操作图结构的函数:+.igraph()
, add_edges()
, add_vertices()
, complementer()
, compose()
, connect()
, contract()
, delete_edges()
, delete_vertices()
, difference()
, difference.igraph()
, disjoint_union()
, edge()
, igraph-minus
, intersection()
, intersection.igraph()
, path()
, permute()
, rep.igraph()
, reverse_edges()
, union()
, union.igraph()
, vertex()
作者
Gabor Csardi csardi.gabor@gmail.com
示例
g <- make_graph(c(1, 2, 1, 2, 3, 3))
is_simple(g)
#> [1] FALSE
is_simple(simplify(g, remove.loops = FALSE))
#> [1] FALSE
is_simple(simplify(g, remove.multiple = FALSE))
#> [1] FALSE
is_simple(simplify(g))
#> [1] TRUE