| NetRank: a simplified version of PageRank |
|
Here we present our own NetRank algorithm as a simplified version of PageRank™. NetRank and PageRank™ accept exactly the same input: a directed graph. They also provide the same kind of output -- influence scores for all the nodes of the graph -- although they compute slightly different values for these scores. NetRank has two outstanding properties relative to PageRank™:
Example: We demonstrate the NetRank calculation using the following directed graph G=(V,E): ![]() We write NR to denote NetRank. The calculation of NR proceeds iteratively. During iteration i, the calculation of NRi improves upon the prior calculation of NR(i-1). We write NRi(x) to denote the NetRank value of node x during the ith iteration of the calculation. Iteration 0: To get the NetRank calculation started, we begin with NR0(x) = 1 for every node x. Below we redraw G and write each NR0 value inside the corresponding node. ![]() Iteration 1: For each node x, NR1(x) is the sum of the NR0 scores of all the nodes that vote for x:
Below is G with each NR1 value drawn inside the corresponding node. Note that for each node x, NR1(x) equals the indegree of x. NR1 counts votes and gives every vote equal weight. ![]() Iteration 2: For each node x, NR2(x) is the sum of the NR1 scores of all the nodes that vote for x:
NR2 counts votes, which are then weighted according to the rank of who cast each vote. NR1 is used as the basis for weighting. Here is G with each NR2 value drawn inside the corresponding node. ![]() Iteration 3: For each node x, NR3(x) is the sum of the NR2 scores of all the nodes that vote for x:
NR3 also counts weighted votes; however, the weighting of the votes is improved because NR2 is used instead of NR1. Here is G with each NR3 value drawn inside the corresponding node. ![]() Summary of Iterations 0-3: Each of the iterations above is a column in the following table:
Subsequent iterations: As we continue iterating, the pattern of computing NRi by adding NR(i-1) values remains the same. This pattern is determined by the original input to the algorithm: the nodes and edges of directed graph G. In our current example, the pattern can be drawn over the table of values. We also extend the table out to iteration 7: ![]() The arrows show how values from one column move (or are added) to determine the values in the next column.
|





