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_components
和strongly_connected_components
现在返回节点集合的生成器。之前生成器返回的是节点列表。此PR还重构了connected_components
和weakly_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_dataframe
和from_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_weighted
、is_negatively_weighted
和is_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。