2013-12-23 19 views

回答

0

假設您不知道圖中的所有元素,可以使用getVertices()getEdges()從圖形中檢索所有頂點/邊。

但是既然你從這些方法得到一個迭代器,實際的問題是,如何從迭代器中選擇一個隨機元素。

有兩種方法可以解決這個問題。

  1. 迭代所有元素,並用集合的大小將它們存儲在一個數組或列表,然後選擇一個隨機元素,或者
  2. 使用Reservoir sampling同時遍歷你的元素。

還有另一種方法,如果你使用Gremlin Pipeline來解決這個問題,執行根據您的標籤查詢,使用random filter from gremlin並選擇第一個頂點。

+0

我目前正在將我所有的頂點變成一個數組列表,然後生成一個介於0和數組列表大小之間的隨機數。 Arraylist.get(randomNumber)方法目前正在運行,但速度很慢。我想知道是否有其他方法來選擇隨機頂點。我的要求是在具有特定邊的那些(標籤屬性)之間獲得隨機頂點,或者用特定標籤查詢隨機邊,以便我可以獲得它的頂點。 – user2611221

+0

然後第二種方法應該適合您的需求。您應該使用'graph.query()。labels(「foo」)。vertices()''查詢並使用Reservoire採樣來避免額外列表從迭代器中選取一個隨機元素。 –

+0

我正在使用titan圖形數據庫,並沒有看到ha方法作爲圖標的標籤()。 「graph.query.labels(」「)正在拋出編譯錯誤」。我有lables()方法與頂點雖然(vertex.query()。labels(「」))。 – user2611221

相關問題