Sha256: c84871c400cc2ec782bb485c2ee91f765bd2dbe8297a3a0aa8988c479397fbd9

Contents?: true

Size: 722 Bytes

Versions: 1

Compression:

Stored size: 722 Bytes

Contents

require 'elaine/distributed'
class DistributedPageRankVertex < Elaine::Distributed::Vertex
  def compute
    # puts "Working on supserstep: #{superstep}"
    if superstep >= 1
      # sum = messages.inject(0) {|total,msg| total += msg; total }
      # sum = messages.reduce(0, :+)
      sum = messages.reduce(0) do |total, msg|
        raise "Got an out-of-step message! current superstep: #{superstep}, message from superstep: #{msg[:superstep]}" if msg[:superstep] != (superstep - 1)
        total += msg[:value]

      end
      @value = (0.15 / 3) + 0.85 * sum
    end

    if superstep < 30
      deliver_to_all_neighbors({value: @value / neighbors.size, superstep: superstep})
    else
      halt
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
elaine-0.0.3 spec/distributed_page_rank_vertex.rb