Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public HashMap<String,Double> pageRank() {
- HashMap<String,Double> ranks = new HashMap<String,Double>();
- boolean converged = false;
- for(String s : sortedNodes) {
- ranks.put(s, (1/sortedNodes.size()));
- }
- while(!converged) {
- HashMap<String,Double> newRanks = new HashMap<String,Double>();
- for(String s : sortedNodes) {
- LinkedList<String> incomingEdges = reverseAdjacencyList.get(s);
- Iterator i = incomingEdges.iterator();
- double sum = 0;
- while(i.hasNext()) {
- String curr = i.next();
- sum += (double)(ranks.get(curr) / outDegreeOfNode(curr));
- }
- double newPageRank = ( ((1-this.d)/sortedNodes.size()) + (this.d * sum) );
- newRanks.put(s,newPageRank);
- converged = checkConvergence();
- }
- ranks = newRanks;
- }
- return ranks;
- }
- private boolean checkConvergence(HashMap<String,Double> oldRanks, HashMap<String,Double> newRanks) {
- boolean converged = true;
- for(String s : sortedNodes) {
- Double diff = Math.abs(newRanks.get(s) - oldRanks.get(s));
- Double num = diff / oldRanks.get(s);
- if(!(num<this.theta)) {
- converged = false;
- }
- }
- return converged
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement