关于 igraph 发布和其他事项
我们致力于使 igraph 的 R 接口更接近 C 核心的最新开发成果:我们发布了 R-igraph 1.3.0,它将 R 接口内的 igraph C 核心更新到 0.9.7 版本,现在仅比主线 C 核心落后一个补丁版本。与之前的版本相比,此次更新修复了许多错误,并添加了许多新功能。
由于 igraph C 核心在 0.8 系列和 0.9.7 之间存在底层更改,在某些情况下,我们需要在 R 接口中付出额外的努力来保持与以前版本的兼容性。例如,igraph 0.9.7 现在从字面上解释紧密度、介数和边介数中心性函数中的零截止值,而 igraph 0.8 将零解释为“无截止值”。R 接口在这些情况下保持旧的行为,但会打印弃用警告;旧的行为将在 igraph 1.4.0 或 2.0.0 中消失,以先到者为准。
R/igraph 的补丁版本将在未来几天内发布,希望(最终)赶上 C 核心的 0.9 分支。我们的目标是让 R/igraph 稳定几周,同时我们致力于进一步改进 C 核心。
即使我们尽了最大努力不给 igraph 的 R 用户带来重大更改,我们也可能犯了无意的错误,因此请继续在 Github issue tracker 中报告问题。
C 核心已更新到 0.9.7,修复了一系列错误并引入了许多新功能。
has_eulerian_path()
和 has_eulerian_cycle()
决定图中是否存在欧拉路径或循环。eulerian_path()
和 eulerian_cycle()
返回图中欧拉路径或循环中的边和顶点。any_loop()
检查图是否包含至少一个环边。is_tree()
检查图是否为树,并找到可能的根to_prufer()
将树图转换为其 Prufer 序列make_from_prufer()
从其 Prufer 序列创建树图sample_tree()
以均匀随机的方式对标记树进行采样sample_spanning_tree()
以均匀随机的方式对无向图的生成树进行采样automorphisms()
和 canonical_permutation()
现在支持顶点颜色random_edge_walk()
记录随机游走期间遍历的边harmonic_centrality()
计算顶点的调和中心性,可以选择对路径长度进行截止mean_distance()
现在支持边权重,并且当传递 details=TRUE
作为参数时,它还可以返回未连接的顶点对的数量greedy_vertex_coloring()
根据简单的贪婪算法找到顶点着色。bridges()
查找图的桥(割边)frame.width
顶点属性或 vertex.frame.width
关键字参数的绘图上调整圆形、矩形和正方形顶点形状的边框宽度,感谢 @simoncarrignon。有关更多详细信息,请参见 PR #500。automorphism_group()
返回图的自同构群的可能(不一定是最小的)生成集。global_efficiency()
计算图的全局效率。local_efficiency()
计算图中每个顶点的局部效率。average_local_efficiency()
计算图中顶点集的平均局部效率。rewire(each_edge(...))
现在支持仅重新连接每个边的端点。realize_degseq()
以确定性的方式从度序列生成图。它也可以作为 make_(degseq(..., deterministic=TRUE))
使用。clique_size_counts()
计算不同大小的团,而不存储所有团。feedback_arc_set()
在图中找到最小权重的反馈弧集,可以使用精确的整数规划算法或线性时间逼近。make_bipartite_graph()
现在处理带有名称的顶点。shortest_paths()
现在支持具有负边权重的图。min_cut()
现在支持 s-t 最小割,即使 value.only=FALSE
。as.matrix()
现在支持将 igraph 图转换为邻接矩阵或边列表矩阵表示形式。有关更多详细信息,请参见 as.matrix.igraph()
。此功能已从 intergraph
迁移;感谢 Michał Bojanowski。is_connected()
现在对于空图返回 FALSElength()
现在返回顶点的数量,使其与使用 [[
索引图一致。diameter()
现在在 unconnected=FALSE
时正确地为断开连接的图返回无穷大。以前的版本返回顶点的数量加一,这对于加权图显然无效。mean_distance()
现在在 unconnected=FALSE
时正确地将断开连接的顶点之间的路径长度视为无穷大。以前的版本使用顶点的数量加一,增加了对此数字的偏差,即使该图是加权的,并且顶点的数量加一也不是可以安全地被视为长于任何“有效”路径的路径长度。layout_with_sugiyama()
现在正确处理只有一个额外虚拟节点的情况;修复了 #85bfs()
和 dfs()
回调函数现在正确接收基于 1 的顶点索引和等级;在早期版本中它是基于零的bfs()
或 dfs()
回调返回非逻辑值不再导致 R 崩溃max.lines
值(小于打印属性列表和标题所需的行数)的图上调用 print()
不再引发错误;修复了 #179as_adjacency_matrix(edges=TRUE, sparse=TRUE)
现在一致地为矩阵中的每个单元格返回最后一个边 ID,而不是对它们求和。+
和 -
运算符与由两个顶点组成的 path()
对象一起使用现在可以正确处理;修复了 #355topo_sort()
现在,如果输入图不是非循环的,则会引发错误,而不是返回不正确的部分排序。transitivity(mode="barrat")
现在为多重图引发错误;该实现对于多重图无法正常工作,并且早期版本没有对此发出警告。bfs()
和 dfs()
的 neimode
参数已重命名为 mode
,以便与其他函数保持一致。旧的参数名称已被弃用,将在 1.4.0 中删除。bfs()
和 dfs()
回调函数现在正确接收基于 1 的顶点索引和等级;在早期版本中它是基于零的。(这实际上是一个错误修复,因此也在“已修复”部分中提到)。closeness()
、betweenness()
和 edge_betweenness()
现在都在它们自身上采用 cutoff
参数。estimate_closeness()
、estimate_betweenness()
和 estimate_edge_betweenness()
变成了别名,具有相同的签名。它们没有被弃用,但它们的实现可能会在未来的版本中发生变化,以提供适当的估计方案,而不是简单的基于截止的近似。如果您明确需要截止值,并且希望您的结果在未来的版本中具有可重现性,请在您的代码中使用带有 cutoff
参数的 closeness()
、betweenness()
和 edge_betweenness()
。closeness()
现在在计算期间仅考虑可到达的顶点;换句话说,紧密度中心性现在是为断开连接的图按每个组件计算的。早期版本考虑了所有顶点。closeness()
、betweenness()
和 edge_betweenness()
使用 cutoff=0
已被弃用;如果您需要精确的分数,请使用负截止值。 从 igraph 1.4.0 开始,cutoff=0
将从字面上解释。loops
参数的情况下调用 centr_degree_tmax()
时,它现在会打印警告。 从 igraph 1.4.0 开始,loops
将是强制性的。nexus_list()
、nexus_info()
、nexus_get()
和 nexus_search()
函数现在返回一个错误,通知用户 Nexus 图存储库已离线(实际上,是几年前)。 这些函数将在 1.4.0 中删除。as_adjacency_matrix()
的 edges
参数已被弃用;它将在 igraph 1.4.0 中删除。page_rank_old()
函数和已弃用的 page_rank()
的 power
方法。