2013-08-11 4 views
-1

DirectedSparseGraph에서 PageRank 및 조회 알고리즘을 사용하려고합니다. 위키피디아 덤프에서 빌드했습니다. 그래프는 분명히 거대하고 그 노드는 String이고 Edge는 Integer입니다. 문제는이 코드를 실행할 때 다음과 같습니다.JUNG을 사용하여 PageRank 및 Hits 매개 변수를 설정하는 방법은 무엇입니까?

PageRank<String,Integer> pageRank = new PageRank<String,Integer>(w, alpha); 
pageRank.initialize(); 
pageRank.setTolerance(0.000001); 
pageRank.setMaxIterations(200); 
pageRank.evaluate(); 

HITS<String, Integer> hits = new HITS<String, Integer>(w,alpha); 
hits.initialize(); 
hits.setTolerance(0.000001); 
hits.setMaxIterations(200); 
hits.evaluate(); 
for(String s: w.getVertices()){ 
    writer.write(s + "\th:" + hits.getVertexScore(s).hub + "\ta:" + hits.getVertexScore(s).authority + "\tpagerank:" + pageRank.getVertexScore(s)); 
    writer.newLine(); 
} 

결과 txt 파일에 쓰는 결과는 각 노드마다 항상 동일합니다. 아마도 매개 변수를 사용하여 메서드를 전달하는 데 실수가 있습니다. 나는 모른다.

답변

0

그래프의 크기는 어느 정도입니까? 실제로 얼마나 많은 반복 작업이 수행되고 있습니까?

값이 1/n (n은 정점의 수)이면 여기에서 아마도 일어나는 것은 즉각 종료한다는 것입니다 (확인할 수 있음).

다른 명백한 가능성은 그래프를 구성하는 데 실수를해서 대칭으로 만들었 기 때문에 점수가 모두 같을 것입니다. 이걸 꽤 쉽게 확인할 수 있어야합니다.

+0

첫 번째 경우에 즉시 종료되는 이유는 무엇입니까? – CodePi

+0

그래프에 34308 개의 노드가 있습니다. 실행 후 PageRank와 조회수에 대해 200 회 반복 수행합니다. 각 노드의 결과는 1/n에 가깝지만 정확히 1/n에 없습니다. – CodePi

+0

변경 허용치가 충분히 높으면 즉시 종료 될 수 있습니다. –