当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX asadpour_atsp用法及代码示例


本文简要介绍 networkx.algorithms.approximation.traveling_salesman.asadpour_atsp 的用法。

用法:

asadpour_atsp(G, weight='weight', seed=None, source=None)

返回旅行商问题的近似解。

该近似解是 Asadpour 等人 [1] 开发的非对称旅行商问题最著名的近似解之一。该算法首先解决 Held-Karp 松弛问题,以找到循环权重的下界。接下来,它使用最大熵舍入方案构造无向生成树的指数分布,其中树中边的概率对应于该边的权重。接下来,我们对该分布进行 次采样,并在将弧的方向添加回边后保存最小采样树。最后,我们对该图进行扩充和短路,以找到推销员的大致行程。

参数

Gnx.DiGraph

该图应该是一个完整的加权有向图。应该包括所有节点之间的距离,并且三角不等式应该成立。也就是说,任何两个节点之间的直接边应该是成本最低的路径。

weight字符串,可选(默认=”weight”)

边权重对应的边数据键。如果任何边不具有此属性,则权重设置为 1。

seed整数、random_state 或无(默认)

随机数生成状态的指示符。请参阅随机性。

source节点标签(默认=`None`)

如果给定,则返回在给定节点处开始和结束的循环。

返回

cycle节点列表

返回推销员可以遵循的循环(节点列表)以最小化行程的总重量。

抛出

NetworkXError

如果G 不完整或节点少于两个,算法会引发异常。

NetworkXError

如果“源”不是 None 并且不是 G 中的节点,则算法会引发异常。

NetworkXNotImplemented

如果G 是无向图。

参考

1

A. Asadpour, M. X. Goemans, A. Madry, S. O. Gharan, and A. Saberi, An o(log n/log log n)-approximation algorithm for the asymmetric traveling salesman problem, Operations research, 65 (2017), pp. 1043-1061

例子

>>> import networkx as nx
>>> import networkx.algorithms.approximation as approx
>>> G = nx.complete_graph(3, create_using=nx.DiGraph)
>>> nx.set_edge_attributes(G, {(0, 1): 2, (1, 2): 2, (2, 0): 2, (0, 2): 1, (2, 1): 1, (1, 0): 1}, "weight")
>>> tour = approx.asadpour_atsp(G,source=0)
>>> tour
[0, 2, 1, 0]

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.approximation.traveling_salesman.asadpour_atsp。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。