動かないのでこっちに書いておく。
どう書く?のお題でPageRankの計算を解いてたんだけどうまく動かない。
use Math::MatrixReal;
my $data = {
1 => [2, 3, 4, 5, 7],
2 => [1],
3 => [1, 2], 4 => [2, 3, 5],
5 => [1, 3, 4, 6],
6 => [1, 5],
7 => [5],
};
sub pagerank {
my $data = shift;
my $rows = scalar(keys %$data);
my $mat = Math::MatrixReal->new($rows,$rows);;
while(my ($i, $link) = each %{$data}){
for my $j (@{$link}){
$mat->assign($j,$i,1/scalar(@{$link}));
}
}
#print $mat;
$det = $mat->det();
print "det: ",$det,"\n";
}
pagerank($data);
実行結果
$ perl pr.pl
det: -0
detが-0ってことは、複素数の計算ができてないとかそういうことかなぁ。全然わからんので書きかけで放り投げた。