廣度優先枚舉我試圖讓廣度優先枚舉與小鬼的工作,但是我無法找到一種方法來輸出枚舉過程中觀察到的所有步驟。我只能打印出最後一次迭代的結果。在小鬼
我的問題是,使用小鬼並打印出的一切,我發現沿途給定的起始節點是這樣,我怎麼能遵循所有路徑(不知道總深度)?
study=g.v('myId')
我試圖分散的方式,循環方式(雖然似乎都需要大約提前如果我理解正確的路徑的實際長度知識)
非常感謝!
廣度優先枚舉我試圖讓廣度優先枚舉與小鬼的工作,但是我無法找到一種方法來輸出枚舉過程中觀察到的所有步驟。我只能打印出最後一次迭代的結果。在小鬼
我的問題是,使用小鬼並打印出的一切,我發現沿途給定的起始節點是這樣,我怎麼能遵循所有路徑(不知道總深度)?
study=g.v('myId')
我試圖分散的方式,循環方式(雖然似乎都需要大約提前如果我理解正確的路徑的實際長度知識)
非常感謝!
你不提供,告訴您如何使用循環任何顯著的代碼,但我想用正確的參數就可以得到它做你想要什麼:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).as('x').out.gather.scatter.loop('x'){true}{true}
==>v[2]
==>v[4]
==>v[3]
==>v[5]
==>v[3]
我假設你通過收集/分散和循環的第一部分了解代碼,指向x
。所以,考慮到這個假設,我將重點關注傳遞給循環的兩個閉包。
傳遞給循環的第一個閉包告訴Gremlin何時跳出循環。通過簡單地返回真實,你就是在說要耗盡循環。根據圖表的結構,這可能不是可取的,因爲您可能需要等很長時間才能找到結果。至少你應該考慮把它設置成不可能的高度,這樣如果你在圖中打了一些循環,你的遍歷就會中斷。
第二個關閉被稱爲「排放關閉」。您可以閱讀更多關於它的信息here,但它基本上決定了是否應該返回管道中的中間對象(不僅僅是循環結尾的中間對象)。在這種情況下,您可以看到我簡單地將該值設置爲true
,以便它將在循環的所有步驟中發出所有對象。
謝謝斯蒂芬,這似乎工作! – Eamonn
我認爲在這個循環中使用聚集/分散是多餘的,因爲循環中的管道是先評估寬度:https://groups.google.com/forum/#!msg/gremlin-users/X8sOoijCPhY/67- hlKiKy5EJ –
如果我想在結果中包含起始頂點v(1),該怎麼辦? –