Skip to content

Commit 2eb6d5c

Browse files
authored
Add Page Rank (TheAlgorithms#2614)
1 parent 7ca58d6 commit 2eb6d5c

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

Others/PageRank.java

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package Others;
2+
3+
import java.util.*;
4+
5+
class PageRank {
6+
public static void main(String args[]) {
7+
int nodes, i, j;
8+
Scanner in = new Scanner(System.in);
9+
System.out.print("Enter the Number of WebPages: ");
10+
nodes = in.nextInt();
11+
PageRank p = new PageRank();
12+
System.out.println("Enter the Adjacency Matrix with 1->PATH & 0->NO PATH Between two WebPages: ");
13+
for (i = 1; i <= nodes; i++)
14+
for (j = 1; j <= nodes; j++) {
15+
p.path[i][j] = in.nextInt();
16+
if (j == i)
17+
p.path[i][j] = 0;
18+
}
19+
p.calc(nodes);
20+
}
21+
22+
public int path[][] = new int[10][10];
23+
public double pagerank[] = new double[10];
24+
25+
public void calc(double totalNodes) {
26+
27+
double InitialPageRank;
28+
double OutgoingLinks = 0;
29+
double DampingFactor = 0.85;
30+
double TempPageRank[] = new double[10];
31+
int ExternalNodeNumber;
32+
int InternalNodeNumber;
33+
int k = 1; // For Traversing
34+
int ITERATION_STEP = 1;
35+
InitialPageRank = 1 / totalNodes;
36+
System.out.printf(
37+
" Total Number of Nodes :" + totalNodes + "\t Initial PageRank of All Nodes :" + InitialPageRank + "\n");
38+
39+
// 0th ITERATION _ OR _ INITIALIZATION PHASE //
40+
41+
for (k = 1; k <= totalNodes; k++) {
42+
this.pagerank[k] = InitialPageRank;
43+
}
44+
System.out.printf("\n Initial PageRank Values , 0th Step \n");
45+
46+
for (k = 1; k <= totalNodes; k++) {
47+
System.out.printf(" Page Rank of " + k + " is :\t" + this.pagerank[k] + "\n");
48+
}
49+
50+
while (ITERATION_STEP <= 2) // Iterations
51+
{
52+
// Store the PageRank for All Nodes in Temporary Array
53+
for (k = 1; k <= totalNodes; k++) {
54+
TempPageRank[k] = this.pagerank[k];
55+
this.pagerank[k] = 0;
56+
}
57+
58+
for (InternalNodeNumber = 1; InternalNodeNumber <= totalNodes; InternalNodeNumber++) {
59+
for (ExternalNodeNumber = 1; ExternalNodeNumber <= totalNodes; ExternalNodeNumber++) {
60+
if (this.path[ExternalNodeNumber][InternalNodeNumber] == 1) {
61+
k = 1;
62+
OutgoingLinks = 0; // Count the Number of Outgoing Links for each ExternalNodeNumber
63+
while (k <= totalNodes) {
64+
if (this.path[ExternalNodeNumber][k] == 1) {
65+
OutgoingLinks = OutgoingLinks + 1; // Counter for Outgoing Links
66+
}
67+
k = k + 1;
68+
}
69+
// Calculate PageRank
70+
this.pagerank[InternalNodeNumber] += TempPageRank[ExternalNodeNumber] * (1 / OutgoingLinks);
71+
}
72+
}
73+
System.out.printf("\n After " + ITERATION_STEP + "th Step \n");
74+
75+
for (k = 1; k <= totalNodes; k++)
76+
System.out.printf(" Page Rank of " + k + " is :\t" + this.pagerank[k] + "\n");
77+
78+
ITERATION_STEP = ITERATION_STEP + 1;
79+
}
80+
81+
// Add the Damping Factor to PageRank
82+
for (k = 1; k <= totalNodes; k++) {
83+
this.pagerank[k] = (1 - DampingFactor) + DampingFactor * this.pagerank[k];
84+
}
85+
86+
// Display PageRank
87+
System.out.printf("\n Final Page Rank : \n");
88+
for (k = 1; k <= totalNodes; k++) {
89+
System.out.printf(" Page Rank of " + k + " is :\t" + this.pagerank[k] + "\n");
90+
}
91+
92+
}
93+
}
94+
}

0 commit comments

Comments
 (0)