新闻

关于 igraph 发布和其他事项

C/igraph 0.5

发行说明

此版本中有很多改进和更正。我们要感谢所有发送评论、错误报告、补丁或仅仅是问题的人。没有他们的贡献,igraph 肯定会比现在少很多,也差很多。请继续发送您的评论和想法!

以下是主要更改列表,包含指向文档相关部分的链接。完整的更改列表请参见下文。

igraph 作为一个平台

我们朝着将 igraph 转变为一个高效的图算法实现平台迈出了一些步伐。 特别是,我们有一组实用程序类型,它们支持通用科学计算和图处理:向量、矩阵、堆栈、队列、堆、邻接表等。

图同构

igraph 现在包含了 BLISS 图同构算法和实现。这和改进的 VF2 实现(现在可以计算子图同构)使得 igraph 支持最前沿的图同构算法。非常感谢 BLISS 的作者。请在 参考手册 中查看详细信息。

ARPACK 用于特征值问题

ARPACK 是一个用于解决大规模稀疏特征值问题的库。在 igraph 中它非常方便,因为许多中心性问题实际上是特征值问题:Kleinberg 的 hub 和 authority 分数、PageRank、leading eigenvector 社区检测算法都是一些例子。非常感谢 ARPACK 的作者以及建议将其包含在 igraph 中的 James Fowler。

请在 参考手册 中查看详细信息。

其他部分

轻松创建著名图

一些经典图可以通过给出它们的名称来创建。如果需要快速生成测试图,这非常方便。请参阅 igraph_famous。(这个想法基于 Combinatorica,一个 Mathematica 扩展。)

加权图的改进

许多函数已更新以处理加权图:快速贪婪社区检测Page Rank模块化计算Fruchterman-Reingold 布局算法

非简单图

添加和改进了一些函数以更好地处理非简单图(即具有环和/或多重边的图):测试图是否是简单图 ( igraph_is_simple)、测试多重边 ( igraph_is_multiple) 以及计算边的多重性 ( igraph_count_multiple)。

graphopt 布局算法

这是一个不错的基于力的布局算法。请参阅文档了解详细信息 ( igraph_layout_graphopt)。

支持 DOT 文件格式

igraph 现在可以将图写入 GraphViz 使用的 DOT 格式的文件。请参阅文档: igraph_write_graph_dot

Dyad 和 Triad 普查

用于对网络的 dyads ( igraph_dyad_census) 和 triads ( igraph_triad_census) 进行分类的经典社交网络分析工具。

双连通分量和铰接点

igraph 现在能够计算双连通分量 ( igraph_biconnected_components) 和割点 ( igraph_articulation_points)。

估计接近度和介数

通过指定要考虑的路径长度的上限,可以快速估计这些度量。 这对于较大的图很有用,因为计算需要很长时间。 有关接近度 ( igraph_closeness_estimate)、介数 ( igraph_betweenness_estimate) 和边介数 ( igraph_edge_betweenness_estimate) 的文档,请参见文档。

顶点相似性度量的函数

引入了两种基于共同邻居数量的顶点相似性度量,分别是 Jaccard ( igraph_similarity_jaccard) 和 Dice ( igraph_similarity_dice)。

处理来自 C 的属性

添加了一个实验性的 C 属性接口。这允许从 C 编程时使用图/顶点/边属性。 请在此处了解更多信息。

C 库中的新功能

  • 许多类型(stack、matrix、dqueue 等)现在是模板。它们也被重写以提供更好的组织接口
  • VF2 图同构例程现在可以检查子图同构,并且能够返回匹配
  • BLISS 图同构算法现在包含在 igraph 中。请参阅 igraph_canonical_permutationigraph_isomorphic_bliss
  • 我们使用 ARPACK 进行特征值/特征向量计算。这意味着以下函数已被重写:igraph_pagerankigraph_community_leading_eigenvector_*。基于 ARPACK 的新函数:igraph_eigenvector_centralityigraph_hub_scoreigraph_authority_scoreigraph_arpack_rssolveigraph_arpack_rnsolve
  • 添加了实验性的 C 属性接口。也就是说,现在可以从 C 代码中使用图/顶点/边属性。

  • Fruchterman-Reingold 布局的边权重。
  • 线图计算。
  • Kautz 和 de Bruijn 图生成器
  • 支持以 DOT 格式写入图
  • 添加了 Jaccard 和 Dice 相似系数
  • 添加了 igraph_count_multiple
  • igraph_is_loopigraph_is_multiple“返回”布尔向量
  • 添加了 graphopt 布局算法,igraph_layout_graphopt
  • “著名”图的生成,igraph_famous
  • 从 LCF 符号创建图,igraph_lcfigraph_lcf_vector
  • igraph_add_edge 将单个边添加到图中
  • 添加了 Dyad census 和 triad cencus 函数
  • 添加了 igraph_is_simple
  • 进度处理程序允许停止计算
  • igraph_full_citation 创建完整的引用网络
  • igraph_path_length_hist,创建路径长度的直方图
  • 添加了森林火灾模型
  • DIMACS 阅读器现在可以处理不同的文件类型
  • 邻接表类型现在公开 (igraph_adjlist_t, igraph_adjedgelist_t)
  • 可以计算双连通分量和割点
  • 特征向量中心性计算
  • Kleinberg 的 hub 和 authority 分数
  • igraph_to_undirected 现在处理属性
  • 几何随机图生成器可以返回顶点的坐标
  • 添加了将 leading eigenvector 社区结构结果转换为成员向量的函数 (igraph_le_community_to_membership)
  • 加权快速贪婪社区检测
  • 加权 page rank 计算
  • 通过引入路径长度的截止值来估计接近度、介数、边介数的函数
  • 加权模块化计算
  • 添加了 igraph_permute_vertices
  • 加速了介数和接近度的计算
  • 启动位置可以提供给 Kamada-Kawai 布局算法
  • igraph_read_graph_* 函数现在可以处理所有可能的行终止符 (\r, \n, \r\n, \n\r)
  • 为 walktrap 社区检测重写了错误处理,现在可以中断计算
  • maxflow/mincut 函数允许为边容量提供空指针,这意味着所有边的单位容量

C 库中已更正的错误

  • 修复了邻接表处理中的内存泄漏
  • 修复了最大独立顶点集计算中的内存泄漏
  • 修复了使用 igraph_rewire 重新连接无向图时的错误
  • 修复了未连接图的边介数社区结构检测
  • 使 igraph 与 Sun Studio 编译
  • 修复了不计算所有顶点时的介数错误
  • 减少了 clique 查找的内存使用
  • 更正了并非所有 motif 都被计数,而是使用了 cut 向量时 motif 计数的错误
  • 修复了特征博弈和引用类型博弈中的错误
  • 在 GML 文件中接受下划线作为字母
  • GML 文件有向性符号反转,这种方式更符合逻辑