Skip to content

Instantly share code, notes, and snippets.

@aseigneurin
Created December 21, 2015 09:25
Show Gist options
  • Save aseigneurin/e88e2570bf58eeaf32fd to your computer and use it in GitHub Desktop.
Save aseigneurin/e88e2570bf58eeaf32fd to your computer and use it in GitHub Desktop.
// http://www.cs.princeton.edu/~chazelle/courses/BIB/pagerank.htm
object MainIanRogers {
case class Edge(src: Int, dest: Int)
def main(args: Array[String]) {
val edges = Seq(
Edge(0, 1),
Edge(0, 2),
Edge(1, 2),
Edge(2, 0),
Edge(3, 2)
)
val vertices = 4
val alpha = 0.85
val pr = new Array[Double](vertices)
val delta = new Array[Double](vertices)
val deg = new Array[Double](vertices)
// determine vertex degrees
edges.map(edge => deg(edge.src) += 1)
println("deg=" + deg.mkString(", "))
for (i <- Range(0, 20)) {
println("iteration " + (i + 1))
// compute the delta
for (vertex <- Range(0, vertices))
delta(vertex) = 0
edges.map(edge => delta(edge.dest) += alpha * pr(edge.src) / deg(edge.src))
println("delta=" + delta.mkString(", "))
// compute the new PR
for (vertex <- Range(0, vertices)) {
pr(vertex) = (1 - alpha) + delta(vertex)
}
println("pr=" + pr.mkString(", "))
println()
}
println("pr=" + pr.mkString(", "))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment