簡體   English   中英

基於路徑權重和節點屬性進行遍歷

[英]traversing based on path weights and node properties dijkstra

是否可以通過檢查節點上的某些屬性來找到節點A和B之間的成本最低的路徑?

例如,我想找到從A到B的最短巴士路線,而鏈接的權重就是距離。 因此,該路徑不僅應具有最低成本,而且路徑上的節點還應具有公交車站/車站。

因此,返回的路徑是所有節點都為公共汽車站的成本最低的路徑(例如,屬性bus_stop = yes)。

TraversalDescription提供評估程序,可以在其中檢查節點屬性。 Dijkstra有可能類似嗎?

使用Neo4j的graphalgo軟件包時,您需要為Dijkstra算法提供自定義CostEvaluator 而不是僅使用旅行時間(又稱“關系”屬性),您應該返回旅行時間的總和(“關系”屬性)加上在公交車站的等待時間(“節點”屬性):

 class BusCostEvaluator implements CostEvaluator<Float> {

     public Float getCost(Relationship r, Direction d) {
         return (Float)r.getStartNode().getProperty("waitTime", 0f) +
             (Float)r.getProperty("travelTime", 0f)
     }

 }

請嘗試以下查詢。 假定所有鏈接都具有屬性權重,並對路徑權重和長度組合求和以對結果進行排序。 首先,它僅過濾所有節點都具有bus_stop的路徑,是

MATCH p=a-[r*]->b
WHERE all(x1 in nodes(p) where x1.bus_stop = 'yes')
WITH extract(link IN r| link.weight) AS wts, length(p) AS len
RETURN wts, reduce(sum=0, x IN wts| sum+x) AS totalwt, len
order by totalwt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM