Class: PageRank::Base
- Inherits:
-
Object
- Object
- PageRank::Base
- Defined in:
- lib/page_rank/base.rb
Overview
A base class for PageRank implementations. This class provides the basic framework for adding (optionall weighted) nodes to the graph and then performing iterations of PageRank to within the desired tolerance (or maximum allowed number of iterations).
Direct Known Subclasses
Instance Attribute Summary collapse
-
#damping ⇒ Object
Returns the value of attribute damping.
-
#tolerance ⇒ Object
Returns the value of attribute tolerance.
Instance Method Summary collapse
-
#add(_source, _dest, **_options) ⇒ nil
Adds a directed (and optionally weighted) edge to the graph.
-
#calculate(max_iterations: -1,, **_) ⇒ Hash<Object, Float>
Perform the PageRank calculation.
-
#initialize(damping: nil, tolerance: nil, **_) ⇒ Base
constructor
A new instance of Base.
Constructor Details
#initialize(damping: nil, tolerance: nil, **_) ⇒ Base
Returns a new instance of Base.
14 15 16 17 |
# File 'lib/page_rank/base.rb', line 14 def initialize(damping: nil, tolerance: nil, **_) self.damping = damping self.tolerance = tolerance end |
Instance Attribute Details
#damping ⇒ Object
Returns the value of attribute damping.
10 11 12 |
# File 'lib/page_rank/base.rb', line 10 def damping @damping end |
#tolerance ⇒ Object
Returns the value of attribute tolerance.
10 11 12 |
# File 'lib/page_rank/base.rb', line 10 def tolerance @tolerance end |
Instance Method Details
#add(_source, _dest, **_options) ⇒ nil
Adds a directed (and optionally weighted) edge to the graph
39 40 41 |
# File 'lib/page_rank/base.rb', line 39 def add(_source, _dest, **) raise NotImplementedError end |
#calculate(max_iterations: -1,, **_) ⇒ Hash<Object, Float>
Perform the PageRank calculation
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/page_rank/base.rb', line 46 def calculate(max_iterations: -1, **_) ranks = initial_ranks loop do break if max_iterations.zero? prev_ranks = ranks ranks = calculate_step(ranks) break if distance(ranks, prev_ranks) < tolerance max_iterations -= 1 end sort_ranks(ranks) end |