本文简要介绍
networkx.algorithms.approximation.traveling_salesman.greedy_tsp
的用法。用法:
greedy_tsp(G, weight='weight', source=None)
返回从
source
及其成本开始的低成本周期。这近似于旅行商问题的解决方案。它找到一个推销员可以访问的所有节点的循环,以便访问许多节点,同时最小化总距离。它使用一个简单的贪心算法。本质上,这个函数返回一个给定源点的大循环,其中循环的总成本最小化。
- G:图形
该图应该是一个完整的加权无向图。应包括所有节点对之间的距离。
- weight:字符串,可选(默认=”weight”)
边权重对应的边数据键。如果任何边不具有此属性,则权重设置为 1。
- source:节点,可选(默认:列表(G)中的第一个节点)
起始节点。如果没有,默认为
next(iter(G))
- cycle:节点列表
返回推销员可以遵循的循环(节点列表)以最小化行程的总重量。
- NetworkXError
如果
G
不完整,算法会引发异常。
参数:
返回:
抛出:
注意:
贪心算法的这种实现基于以下内容:
- 该算法在每次迭代时向解决方案添加一个节点。
- 该算法选择一个不在循环中的节点,其与前一个节点的连接为循环增加了最少的成本。
贪心算法并不总是给出最佳解决方案。但是,它可以构造第一个可行的解决方案,该解决方案可以作为参数传递给迭代改进算法,例如模拟退火或阈值接受。
时间复杂度:它有一个运行时间
例子:
>>> from networkx.algorithms import approximation as approx >>> G = nx.DiGraph() >>> G.add_weighted_edges_from({ ... ("A", "B", 3), ("A", "C", 17), ("A", "D", 14), ("B", "A", 3), ... ("B", "C", 12), ("B", "D", 16), ("C", "A", 13),("C", "B", 12), ... ("C", "D", 4), ("D", "A", 14), ("D", "B", 15), ("D", "C", 2) ... }) >>> cycle = approx.greedy_tsp(G, source="D") >>> cost = sum(G[n][nbr]["weight"] for n, nbr in nx.utils.pairwise(cycle)) >>> cycle ['D', 'C', 'B', 'A', 'D'] >>> cost 31
相关用法
- Python NetworkX greedy_color用法及代码示例
- Python NetworkX greedy_modularity_communities用法及代码示例
- Python NetworkX graphviz_layout用法及代码示例
- Python NetworkX groups用法及代码示例
- Python NetworkX graph_edit_distance用法及代码示例
- Python NetworkX grid_graph用法及代码示例
- Python NetworkX get_edge_attributes用法及代码示例
- Python NetworkX generate_multiline_adjlist用法及代码示例
- Python NetworkX generic_node_match用法及代码示例
- Python NetworkX gomory_hu_tree用法及代码示例
- Python NetworkX generate_gml用法及代码示例
- Python NetworkX generate_adjlist用法及代码示例
- Python NetworkX gn_graph用法及代码示例
- Python NetworkX generic_multiedge_match用法及代码示例
- Python NetworkX generate_graphml用法及代码示例
- Python NetworkX generic_edge_match用法及代码示例
- Python NetworkX gnp_random_graph用法及代码示例
- Python NetworkX generate_edgelist用法及代码示例
- Python NetworkX generic_weighted_projected_graph用法及代码示例
- Python NetworkX global_reaching_centrality用法及代码示例
- Python NetworkX global_parameters用法及代码示例
- Python NetworkX girvan_newman用法及代码示例
- Python NetworkX generate_gexf用法及代码示例
- Python NetworkX gnr_graph用法及代码示例
- Python NetworkX generalized_degree用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.approximation.traveling_salesman.greedy_tsp。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。