# Page Rank

Page Rank algorithm ranks nodes depending on their connections to determine how important the node is. This assumes a node is more important if it receives more connections from others.

## Parameters

`dampingFactor`

*(Double)*: Probability that a node will be randomly selected by a user traversing the graph, defaults to 0.85.`iterateSteps`

*(Int)*: Number of times for the algorithm to run.`output`

*(String)*: The path where the output will be saved. If not specified, defaults to*/tmp/PageRank*

## Implementation

Each vertex begins with an initial state. If it has any neighbours, it sends them a message which is the inital label / the number of neighbours

Each vertex, checks its messages and computes a new label based on: the total value of messages received and the damping factor. This new value is propogated to all outgoing neighbours. A vertex will stop propogating messages if its value becomes stagnant (i.e. has a change of less than 0.00001) This process is repeated for a number of iterate step times. Most algorithms should converge after approx. 20 iterations.

### Returns

`ID`

*(Long)*: Vertex ID`Page Rank`

*(Double)*: Rank of the node