NetworkX 1.10#

发布日期:2015年8月2日

在此版本中放弃对Python 2.6的支持。

亮点#

  • 连通分量现在返回生成器

  • 新功能包括

    • enumerate_all_cliques, greedy_coloring, edge_dfs, find_cycle immediate_dominators, harmonic_centrality

    • 用于最大匹配的Hopcraft–Karp算法

    • 最佳分支和树

    • all_simple_paths

  • 从GML读取器/解析器中移除了对pyparsing的依赖

  • 改进了流算法

  • 与扩展器图相关的新生成器。

  • 用于多部图、非同构树、循环图的新生成器

  • 允许图子类使用类似字典的对象代替字典

  • 添加了有序图子类

  • 添加了pandas dataframe读取/写入功能。

  • G.edges()中的data关键字允许直接请求边属性

  • 扩展了节点子集的布局灵活性

  • Kanesky的切割集和k组件算法

  • 图的幂函数

  • 节点连通性的近似

  • 传递闭包、三元统计和反链

  • 商图和子图

  • 有向无环图的最长路径

  • 模块化矩阵例程

API更改#

  • [ #1501 ] connected_components , weakly_connected_componentsstrongly_connected_components 现在返回节点集合的生成器。之前生成器返回的是节点列表。此PR还重构了 connected_componentsweakly_connected_components 的实现,使其更快,特别是对于大图。

  • [ #1547 ] Di/Multi/Graphs类中的 func_iter 函数计划在NetworkX 2.0版本中移除。 func 将像 func_iter 一样运行,并返回一个迭代器而不是列表。这些函数在NetworkX 1.10版本中已被弃用。

新功能#

  • [ #823 ] 在团包( networkx.algorithms.clique )中添加了一个 enumerate_all_cliques 函数,用于枚举无向图的所有团(包括非极大团)。

  • [ #1105 ] 创建了一个着色包( networkx.algorithms.coloring ),用于图着色算法。最初提供了一个 greedy_color 函数,用于使用各种贪婪启发式算法对图进行着色。

  • [ #1193 ] 新生成器 edge_dfs 添加到 networkx.algorithms.traversal ,实现了对图中边的深度优先遍历。这补充了对图中节点的深度优先遍历的功能。对于多重图,它允许用户准确了解在遍历中跟随的具体边。支持所有NetworkX图类型。遍历还可以反转边的方向或忽略它们。

  • [ #1194 ] 在 networkx.algorithms.cycles 包中添加了一个 find_cycle 函数,用于在图中找到一个循环。可以选择性地反转或忽略边的方向。

  • [ #1210 ] 为复制-分歧模型添加了一个随机生成器。

  • [ #1241 ] 添加了一个新的 networkx.algorithms.dominance 包,用于有向图上的支配/支配者算法。其中包含一个用于计算直接支配者/支配者树的 immediate_dominators 函数,以及一个用于计算支配前沿的 dominance_frontiers 函数。

  • [ #1269 ] 重写了GML读取器/解析器和写入器/生成器,以消除对pyparsing的依赖,并实现对任意图数据的处理。

  • [ #1280 ] 重写了 networkx.algorithms.flow 包中的网络单纯形方法,以提高性能并支持多个和断开的网络。对于某些情况,新的实现比旧实现快两到三个数量级。

  • [ #1286 ] 将Margulis–Gabber–Galil图添加到 networkx.generators 中。

  • [ #1306 ] 添加了弦图p-循环图,这是一个轻微显式的代数构造,用于生成一类3-正则扩展图。还将现有的扩展图生成函数(用于Margulis-Gabber-Galil扩展图)和新的弦图循环图函数移动到一个新模块 networkx.generators.expanders 中。

  • [ #1314 ] 允许用类似字典的对象覆盖基类字典:OrderedGraph、ThinGraph、PrintGraph等。

  • [ #1321 ] 添加了 to_pandas_dataframefrom_pandas_dataframe

  • [ #1322 ] 添加了Hopcroft–Karp算法,用于在二部图中找到最大基数匹配。

  • [ #1336 ] 扩展了G.edges中的数据关键字,并添加了默认关键字。

  • [ #1338 ] 添加了支持查找最优分支和树的功能。

  • [ #1340 ] 添加了一个 from_pandas_dataframe 函数,接受Pandas DataFrames并返回一个新的图对象。至少,DataFrame必须有两列,定义构成边的节点。但是,该函数还可以处理任意数量的额外列作为边属性,如’weight’。

  • [ #1354 ]

扩展布局功能以增加绘制节点子集的灵活性,具有不同的布局,并使每个布局围绕给定坐标居中。

  • [ #1356 ] 添加了默认图类的有序变体。

  • [ #1360 ] 在 network.algorithms.centrality 中添加了谐波中心性。

  • [ #1390 ] 将 generators.bipartite 移动到 algorithms.bipartite.generators 。这些函数未在主命名空间中导入,因此要使用它,必须导入二部图包。

  • [ #1391 ] 添加了Kanevsky的算法,用于在无向图中查找所有最小大小的分离节点集。它被实现为节点割集的生成器。

  • [ #1399 ] 为简单图添加了幂函数。

  • [ #1405 ] 基于White和Newman的近似算法,添加了基于节点独立路径查找的节点连通性的快速近似算法。

  • [ #1413 ] 在 algorithms.dag 中为有向无环图添加了传递闭包和反链函数。反链函数由Peter Jipsen和Franco Saliola贡献,最初为SAGE项目开发。

  • [ #1425 ] 为完全多部图添加了生成器函数。

  • [ #1427 ] 添加了非同构树生成器。

  • [ #1436 ] 为 networkx.generators.classic 模块添加了循环图的生成器函数。

  • [ #1437 ] 添加了计算商图的函数;还创建了一个新模块, networkx.algorithms.minors

  • [ #1438 ] 为DAG添加了最长路径和最长路径长度。

  • [ #1439 ] 在 networkx.algorithms.minors 中添加了节点和边缩并函数。

  • [ #1445 ] 在 networkx.linalg 中添加了新的模块化矩阵模块,并将相关的频谱函数添加到 networkx.linalg.spectrum 模块中。

  • [ #1447 ] 添加了根据Yen算法生成所有简单路径的函数,从最短路径开始,用于在 algorithms.simple_paths 中找到k条最短路径。

  • [ #1455 ] 在 networkx.linalg.modularity_matrix 模块中添加了有向模块化矩阵。

  • [ #1474 ]

添加 triadic_census 函数;同时创建一个新模块, networkx.algorithms.triads

  • [ #1476 ] 添加了用于测试图是否具有加权或负权边的函数。还添加了一个用于测试图是否为空的函数。它们分别是 is_weightedis_negatively_weightedis_empty

  • [ #1481 ] 添加了Johnson算法;另一个用于最短路径的算法。它解决了所有对最短路径问题。这是位于 algorithms.shortest_paths 中的 johnson

  • [ #1414 ] 添加了Moody和White算法,用于识别图中的 k_components ,该算法基于Kanevsky的算法,用于找到所有最小大小的节点割集(在 all_node_cuts #1391中实现)。

  • [ #1415 ] 在 networkx.approximation 包中添加了 k_components 的快速近似算法。这是基于White和Newman的近似算法,用于找到两个节点之间的节点独立路径(参见#1405)。

移除的功能#

  • [ #1236 ] 移除了传统的 ford_fulkerson 最大流函数。请改用 edmonds_karp

其他变更#

  • [ #1192 ] 不再支持Python 2.6。