本文簡要介紹
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。