$distances{$key1}{$key2} = $value;
####
obj1 obj2 => 0.95
obj2 obj3 => 0.76
obj1 obj4 => 0.80
...
####
@subsets = (
{
obj1 => "C1",
obj2 => "C2",
obj3 => "C3",
obj4 => "C4",
obj5 => "C5",
}
);
####
%used = (
{
obj1 => "C1",
obj2 => "C2",
obj3 => "C3",
obj4 => "C4",
obj5 => "C5",
}
);
####
for ($i = 0; $i < 50; $i++) { #loop over array of hashes (each subset will have 50 keys)
foreach my $key (keys $subsets[$i]) { #5 keys at each level
my $max = 0;
my @max;
for my $key1 (keys %distances) {
if $key !exists (keys %used) {
$max = max (values %{$distances{$key1}});
push @max, $max;
# somehow retrieve the 2nd key
}
}
my $maxmax = max @max;
# $subsets[$i+1]{2nd_key_with_max_val} = "e.g. C1"
# push %used with key and value
@max = [];
}
}