Class: Hashira::Duplication::Clusterer

Inherits:
Object
  • Object
show all
Defined in:
lib/hashira/duplication/clusterer.rb

Constant Summary collapse

PREFILTER =
12
BASE_MASS =
16
NEAR_MASS =
40
PAIR =
2
PENALTY_PER_RECURRENCE =
2

Instance Method Summary collapse

Constructor Details

#initialize(fragments) ⇒ Clusterer

Returns a new instance of Clusterer.



12
13
14
15
# File 'lib/hashira/duplication/clusterer.rb', line 12

def initialize(fragments)
  @fragments = fragments.select { |fragment| fragment.mass >= PREFILTER }
  @sets = UnionFind.new
end

Instance Method Details

#clustersObject



17
18
19
20
21
# File 'lib/hashira/duplication/clusterer.rb', line 17

def clusters
  @fragments.group_by(&:types).each_value { |group| chain(group) }
  NearMiss.new(@fragments).pairs.each { |left, right| @sets.union(left, right) }
  Maximal.new(sized).reduced
end