跳到内容

图的直径是最长测地线的长度。

用法

diameter(graph, directed = TRUE, unconnected = TRUE, weights = NULL)

get_diameter(graph, directed = TRUE, unconnected = TRUE, weights = NULL)

farthest_vertices(graph, directed = TRUE, unconnected = TRUE, weights = NULL)

参数

graph

要分析的图。

directed

逻辑值,指示是否考虑有向或无向路径。对于无向图,此参数将被忽略。

unconnected

逻辑值,指示如果图是不连通的该如何处理。如果为 FALSE,函数将返回一个比最大可能直径大 1 的数字,该数字始终是顶点数。如果为 TRUE,则将计算连通分量的直径,并返回最大的直径。

weights

用于计算加权距离的可选正权重向量。如果图具有 weight 边属性,则默认使用此属性。

diameter() 的数值常量,get_diameter() 的数值向量。 farthest_vertices() 返回一个包含两个条目的列表

vertices

两个最远的顶点。

distance

它们的距离。

详细信息

直径是通过使用类似广度优先搜索的方法计算的。

get_diameter() 返回具有实际直径的路径。 如果存在多个直径长度的最短路径,则它返回找到的第一个。

farthest_vertices() 返回两个顶点 ID,即由直径路径连接的顶点。

作者

Gabor Csardi csardi.gabor@gmail.com

示例


g <- make_ring(10)
g2 <- delete_edges(g, c(1, 2, 1, 10))
diameter(g2, unconnected = TRUE)
#> [1] 7
diameter(g2, unconnected = FALSE)
#> [1] Inf

## Weighted diameter
set.seed(1)
g <- make_ring(10)
E(g)$weight <- sample(seq_len(ecount(g)))
diameter(g)
#> [1] 27
get_diameter(g)
#> + 5/10 vertices, from 11464ae:
#> [1]  1 10  9  8  7
diameter(g, weights = NA)
#> [1] 5
get_diameter(g, weights = NA)
#> + 6/10 vertices, from 11464ae:
#> [1] 1 2 3 4 5 6