在 ArangoDB 中,最短路徑可以通過(guò)使用 AQL(ArangoDB 查詢語(yǔ)言)中的 TRAVERSAL
函數(shù)來(lái)計(jì)算。TRAVERSAL
函數(shù)允許您沿著圖中的邊遍歷節(jié)點(diǎn),直到滿足某個(gè)條件為止。為了計(jì)算兩個(gè)節(jié)點(diǎn)之間的最短路徑,您可以使用 TRAVERSAL
函數(shù)并指定相應(yīng)的邊集合和遍歷選項(xiàng)。
以下是一個(gè)使用 TRAVERSAL
函數(shù)計(jì)算兩個(gè)節(jié)點(diǎn)之間最短路徑的示例查詢:
FOR v, e IN OUTBOUND 'collection_name' 'start_vertex_id' OPTIONS {bfs: true, uniqueVertices: 'path'} RETURN [v._key, e._key]
在這個(gè)示例中,collection_name
是您要查詢的邊的集合名稱,start_vertex_id
是起始頂點(diǎn)的 ID。OPTIONS
對(duì)象中的 bfs
參數(shù)設(shè)置為 true
以啟用廣度優(yōu)先搜索(BFS),這是計(jì)算最短路徑的常用算法。uniqueVertices
參數(shù)設(shè)置為 'path'
以確保返回的路徑中的頂點(diǎn)是不重復(fù)的。
查詢結(jié)果將包含一個(gè)頂點(diǎn)和邊鍵的數(shù)組,這些頂點(diǎn)和邊鍵表示了從起始頂點(diǎn)到目標(biāo)頂點(diǎn)的最短路徑。如果您需要計(jì)算兩個(gè)節(jié)點(diǎn)之間的最短路徑長(zhǎng)度,可以在查詢結(jié)果中添加一個(gè)額外的字段來(lái)存儲(chǔ)路徑長(zhǎng)度。