关于 igraph 发布和其他事项
igraph 0.6 是 igraph 的一个主要新版本。它包含许多新特性和重大更改,大量的错误修复和改进。与往常一样,我们感谢那些发送评论、错误报告、问题的人,特别是那些贡献代码的人。
请参阅下面的主要更改列表,其中包含指向文档相关部分的链接。 R 中的所有新特性都列在此处。
请参阅最后以获取(更)完整的更改列表。
igraph 支持来自 R 和 Python 的 Nexus 网络存储库。 Nexus 是一个在线网络数据集数据库。您可以搜索 Nexus 并直接从 R 和 Python 下载网络。 详细信息请参阅手册。
R 接口中最大的变化是,从该版本开始,顶点和边的编号从 1 开始。此更改可能会让很多人感到痛苦,因为它会使现有的代码与 igraph 0.6 不兼容。为了使切换更容易,现在 CRAN 上有一个 igraph0 包; igraph0 使用基于 0 的顶点和边 ID,可用于运行旧代码。但请注意,igraph0 将来不会再被开发。 对于当前和未来的工作,请使用 igraph 包。
(另请注意,在 Python 和 C 中,顶点和边的编号仍然从零开始,因为这些语言传统上使用基于零的索引。)
通过精确的模块化优化进行社区结构检测。 由于模块化优化是 NP 完全问题,因此这仅适用于小图。 参见手册。
添加了 Blondel 等人的多级模块化优化算法。 参见文档。
基于 Aaron Clauset 代码的分层随机图和社区发现。 参见手册。
感谢 Emmanuel Navarro 的代码,我们现在支持 InfoMAP 社区发现方法。 参见手册。
Newman 和 Girvan 的边介数社区检测方法现在也适用于加权图。 参见文档。
我们添加了一些函数来比较各种社区结构。 参见文档。
Igraph 现在实现了 Spectral Coarse Graining 方法,由 David Morton 提供,我们的实现基于他的代码。 参见文档。
内聚块查找函数已在 C 中从头重写。它们现在速度更快,并且具有更好的 API。 参见文档。
所有社区检测函数现在都返回一个 communities
对象。 我们为这些对象定义了各种操作,更多信息请参阅 R 手册。
度数、紧密度、介数和特征向量中心性的中心化得分。 参见文档。
个性化 PageRank 得分。 参见文档。
权威和中心性得分、介数和紧密度计算现在都支持边权重。 参见文档。
Igraph 现在实现了用于分层有向无环图的 Sugiyama 布局算法。 参见文档。
Igraph 现在实现了 push-relabel 算法和 Kuhn-Munkres 算法(也称为匈牙利方法),以查找非加权和加权二分图中的最大匹配。 参见文档。
如果您键入 igraph 对象的名称,则图形的边不再转储到屏幕上,只会打印图形的简短摘要
> karate
IGRAPH UNW- 34 78 -- Zachary's karate club network
+ attr: name (g/c), Citation (g/c), Author (g/c), Faction (v/n), name (v/c), weight (e/n)
要查看图形结构,可以使用 str()
函数。 更多信息请参阅 R 文档。
现在有更新更轻松的方法可以向图形添加新的顶点/边,或删除现有的顶点/边。 有关详细信息,请参阅 R 文档。 在 Python 中,您可以将图形视为虚拟邻接矩阵。 有关详细信息,请参阅 Python 文档。
igraphdata
包新的 R 包 igraphdata 包含一些示例图形数据集。
您可以使用阴影区域在图形图中标记顶点组。 默认情况下,社区和内聚块使用此技术绘制。 参见 plot.igraph()
函数的 mark.groups
参数。
我们在 igraph R 包中包含了一些演示,要获取演示列表,请在 R 提示符下键入此内容
> demo(package="igraph")
Demos in package ‘igraph’:
centrality Classic and other vertex centrality indices
cohesive Cohesive blocking, the Moody & White method
community Community structure detection
crashR A crash-course into R
smallworld Small-world networks
现在,当操作图形时,许多 igraph 函数会保留顶点、边和图形属性。 也可以使用灵活的 API 组合属性。 参见手册。
igraph0
包。[
和 [[
运算符现在可以在 igraph 图形上使用,对于 [
,图形的行为类似于邻接矩阵,对于 [[
,它被视为邻接表。 使用一些新的运算符,操作图形结构(即添加/删除边和顶点)也简单得多。 更多信息请参阅 ?graph.structure
。igraphdata
包含许多可以直接在 igraph 中使用的数据集。nexus.get()
、nexus.info()
、nexus.list()
和 nexus.search()
。communities
对象,该对象具有许多有用的操作,详细信息请参阅 ?communities
。?attribute.combination
。summary()
的输出也进行了相应更新。demo(package="igraph")
查看列表。igraph.console()
。igraph.options()
和 getIgraphOpt()
。multilevel.community()
。compare.communities()
。optimal.community()
。hrg.game()
、hrg.fit()
等。infomap.community()
。eccentricity()
) 和半径 (radius()
) 计算。get.shortest.paths()
进行的最短路径计算现在可以返回沿最短路径的边。get.all.shortest.paths()
现在支持边权重。centralization.scores()
。page.rank()
。subgraph.centrality()
。authority.score()
) 和中心性 (hub.score()
) 得分现在支持边权重。bonpow()
、Bonacich 的幂中心性和 alpha.centrality()
、Alpha 中心性计算现在默认使用稀疏矩阵。evcent()
现在适用于有向图。graph.read()
中支持 DL 文件格式。 参见 http://www.analytictech.com/networks/dataentry.htm。write.graph()
中写入 LEDA 文件格式。layout.star()
。layout.mds()
。layout.grid()
和 layout.grid.3d()
。layout.sugiyama()
。static.fitness.game()
、static.power.law.game()
。barabasi.game()
已重写,现在支持三种算法,默认算法不会生成多个边或循环边。 图形生成过程现在可以从提供的图形开始。igraph_watts_strogatz()
现在可以创建没有循环边的图形。scg()
。cohesive.blocks()
函数已在 C 中重写,现在速度更快。 它也具有更好的 API。 参见 demo("cohesive")
。graph.bfs()
和 graph_dfs()
。graph.isomorphic.vf2()
、graph.count.isomorphisms.vf2()
、graph.get.isomorphisms.vf2()
、graph.subisomorphic.vf2()
、graph.count.subisomorphisms.vf2()
、graph.get.subisomorphisms.vf2()
)。assortativity()
、assortativity.nominal()
和 assortativity.degree()
。graph.intersection.by.name()
、graph.union.by.name()
、graph.difference.by.name()
。 感谢 Magnus Torfason 贡献了他的代码!subgraph.edges()
。graph.maxflow()
、graph.mincut()
、stCuts()
、stMincuts()
。is.dag()
。has.multiple()
用于判断图形是否具有多个边。graph.diversity()
。graph.laplacian()
) 现在支持边权重。biconnected.components()
现在返回组件本身。bipartite.projection()
计算边的多重性。maximum.cardinality.search()
和 chordality 测试:is.chordal()
convex.hull()
。contract.vertices()
。我们还修复了许多错误,抱歉,此处无法全部列出。 您可以查看我们的 bug 跟踪器 https://bugs.launchpad.net/igraph 以检查 bug 是否已修复。 感谢所有报告错误的人。 特别感谢 Minh Van Nguyen 提供了大量错误报告、文档修复和贡献的代码!