我是Gremlin的新手,我試圖用JUNG實現邊緣權重的pagerank算法。這些是我採取的步驟。我安裝了Gremlin的2.0.0.0版本。我已經使用R中的iGraph包創建了一個.graphml文件,我將其加載到gremlin中。JUNG Pagerank邊緣重量問題
import edu.uci.ics.jung.algorithms.scoring.PageRank
g1 = new TinkerGraph()
g1.loadGraphML('file path.graphml')
我的G1圖具有以下優勢屬性:
g1.E.map
==>{weight=1, freq=1}
==>{weight=1, freq=1}
==>{weight=2, freq=2}
==>{weight=1, freq=1}
==>{weight=1, freq=1}
==>{weight=1, freq=1}
==>{weight=1, freq=1}
==>{weight=1, freq=1}
==>{weight=2, freq=2}
gremlin> g1.V.map
==>{name=a}
==>{name=b}
==>{name=c}
==>{name=d}
==>{name=e}
==>{name=f}
==>{name=g}
==>{name=h}
==>{name=i}
==>{name=k}
j = new GraphJung(g1)
t = new EdgeWeightTransformer("weight",true, false)
pr = new PageRank<Vertex,Edge>(j, t, 0.15d)
pr.evaluate()
j.getVertices().collect{[it, pr.getVertexScore(it)]}
然而,我的結果是
==>[v[n1], 0.046875]
==>[v[n0], 0.046875]
==>[v[n5], 0.046875]
==>[v[n4], 0.046875]
==>[v[n3], 0.046875]
==>[v[n2], 0.046875]
==>[v[n9], 0.046875]
==>[v[n8], 0.046875]
==>[v[n7], 0.046875]
==>[v[n6], 0.046875]
這是不正確的。請有人能幫我理解代碼中的錯誤。我還嘗試通過以下方法檢查變壓器對j的邊權重的影響: j.getEdges()。t。
當我這樣做時,我得到了NULLS。
但我知道有與這些邊緣相關聯的權重,當我運行:
j.getEdges().collect{[it, it.weight]}
我得到如下結果:
==>[e[3][n1-_default->n5], 1]
==>[e[2][n0-_default->n4], 1]
==>[e[1][n0-_default->n3], 2]
==>[e[0][n0-_default->n2], 1]
==>[e[7][n1-_default->n8], 1]
==>[e[6][n1-_default->n7], 1]
==>[e[5][n1-_default->n6], 1]
==>[e[4][n1-_default->n1], 1]
==>[e[8][n1-_default->n9], 2]
最後,我無法爲創建自動鍵我頂點。我試圖
g1.createAutoIndex('test', Vertex.class, ['name'] as Set)
而且得到了以下錯誤:
No signature of method: groovy.lang.MissingMethodException.createAutoIndex() is applicable for argument types:() values: []
謝謝