networkx.algorithms.approximation.traveling_salesman.traveling_salesman_problem
的用法。用法:
traveling_salesman_problem(G, weight='weight', nodes=None, cycle=True, method=None)
在
G
中找到连接指定节点的最短路径此函数允许在不是完整图和/或推销员不需要访问所有节点的网络上近似解决旅行推销员问题。
此函数分两步进行。首先,它使用
nodes
中的节点之间的 all-pairs shortest_paths 创建一个完整的图。新图中的边权重是原始图中每对节点之间的路径长度。其次,使用一种算法(默认:christofides
表示无向,asadpour_atsp
表示有向)用于逼近这个新图上的最小哈密顿循环。可用的算法有:christofides
greedy_tsp
simulated_annealing_tsp
threshold_accepting_tsp
asadpour_atsp
一旦找到哈密顿循环,这个函数post-processes 来适应原始图的结构。如果
cycle
是False
,则删除最大的权重边以形成哈密顿路径。然后,用于该分析的新完整图上的每条边都将替换为原始图上这些节点之间的shortest_path。- G:NetworkX 图
一个可能的加权图
- nodes:节点集合(默认=G.nodes)
要访问的节点的集合(列表、集合等)
- weight:字符串,可选(默认=”weight”)
边权重对应的边数据键。如果任何边不具有此属性,则权重设置为 1。
- cycle:布尔(默认值:真)
指示是否应返回循环或路径。注意:周期是近似的最小周期。该路径只是删除了该循环中最大的边。
- method:函数(默认:无)
一个函数,它在所有节点上返回一个循环,并在完整图上逼近旅行商问题的解决方案。然后使用返回的循环在
G
上找到相应的解决方案。method
应该是可调用的;接受输入G
和weight
;并返回循环中的节点列表。提供的选项包括
christofides()
、greedy_tsp()
、simulated_annealing_tsp()
和threshold_accepting_tsp()
。如果
method is None
:将christofides()
用于无向G
和threshold_accepting_tsp()
用于有向G
。要为这些提供的函数指定参数,请构造声明特定值的 lambda 函数。
method
必须有 2 个输入。 (见例子)。
- 列表
G
中沿路径的节点列表,该路径具有通过nodes
的最小路径的近似值。
- NetworkXError
如果
G
是有向图,则它必须是强连接的,否则无法生成完整的版本。
参数:
返回:
抛出:
例子:
>>> tsp = nx.approximation.traveling_salesman_problem >>> G = nx.cycle_graph(9) >>> G[4][5]["weight"] = 5 # all other weights are 1 >>> tsp(G, nodes=[3, 6]) [3, 2, 1, 0, 8, 7, 6, 7, 8, 0, 1, 2, 3] >>> path = tsp(G, cycle=False) >>> path in ([4, 3, 2, 1, 0, 8, 7, 6, 5], [5, 6, 7, 8, 0, 1, 2, 3, 4]) True
构建(curry)你自己的函数来为方法提供参数值。
>>> SA_tsp = nx.approximation.simulated_annealing_tsp >>> method = lambda G, wt: SA_tsp(G, "greedy", weight=wt, temp=500) >>> path = tsp(G, cycle=False, method=method) >>> path in ([4, 3, 2, 1, 0, 8, 7, 6, 5], [5, 6, 7, 8, 0, 1, 2, 3, 4]) True
相关用法
- Python NetworkX transitive_closure_dag用法及代码示例
- Python NetworkX transitivity用法及代码示例
- Python NetworkX transitive_closure用法及代码示例
- Python NetworkX transitive_reduction用法及代码示例
- Python NetworkX tree_graph用法及代码示例
- Python NetworkX triangles用法及代码示例
- Python NetworkX triad_graph用法及代码示例
- Python NetworkX tree_data用法及代码示例
- Python NetworkX to_prufer_sequence用法及代码示例
- Python NetworkX to_numpy_recarray用法及代码示例
- Python NetworkX to_dict_of_dicts用法及代码示例
- Python NetworkX to_scipy_sparse_array用法及代码示例
- Python NetworkX to_pydot用法及代码示例
- Python NetworkX threshold_accepting_tsp用法及代码示例
- Python NetworkX to_vertex_cover用法及代码示例
- Python NetworkX to_sparse6_bytes用法及代码示例
- Python NetworkX to_numpy_matrix用法及代码示例
- Python NetworkX topological_generations用法及代码示例
- Python NetworkX to_graph6_bytes用法及代码示例
- Python NetworkX tensor_product用法及代码示例
- Python NetworkX to_pandas_adjacency用法及代码示例
- Python NetworkX to_nested_tuple用法及代码示例
- Python NetworkX to_networkx_graph用法及代码示例
- Python NetworkX to_numpy_array用法及代码示例
- Python NetworkX to_agraph用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.approximation.traveling_salesman.traveling_salesman_problem。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。