當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX astar_path用法及代碼示例


本文簡要介紹 networkx.algorithms.shortest_paths.astar.astar_path 的用法。

用法:

astar_path(G, source, target, heuristic=None, weight='weight')

使用 A* (“A-star”) 算法返回源和目標之間最短路徑中的節點列表。

可能存在不止一條最短路徑。這隻返回一個。

參數

GNetworkX 圖
source節點

路徑的起始節點

target節點

路徑的結束節點

heuristic函數

用於評估從節點到目標的距離估計值的函數。該函數接受兩個節點參數並且必須返回一個數字。

weight字符串或函數

如果這是一個字符串,則將通過帶有此鍵的邊屬性訪問邊權重(即,連接 uv 的邊的權重將為 G.edges[u, v][weight] )。如果不存在這樣的邊屬性,則假設邊的權重為 1。如果這是一個函數,則邊的權重是函數返回的值。該函數必須準確地接受三個位置參數:一條邊的兩個端點和該邊的邊屬性字典。該函數必須返回一個數字。

拋出

NetworkXNoPath

如果源和目標之間不存在路徑。

例子

>>> G = nx.path_graph(5)
>>> print(nx.astar_path(G, 0, 4))
[0, 1, 2, 3, 4]
>>> G = nx.grid_graph(dim=[3, 3])  # nodes are two-tuples (x,y)
>>> nx.set_edge_attributes(G, {e: e[1][0] * 2 for e in G.edges()}, "cost")
>>> def dist(a, b):
...     (x1, y1) = a
...     (x2, y2) = b
...     return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
>>> print(nx.astar_path(G, (0, 0), (2, 2), heuristic=dist, weight="cost"))
[(0, 0), (0, 1), (0, 2), (1, 2), (2, 2)]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.algorithms.shortest_paths.astar.astar_path。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。