Graph-Centrality-Pagerank
view release on metacpan or search on metacpan
permitted between successive pagerank vectors before the iterative
process to approximate the pagerank vector should be stopped. The
default is the square root of the systems machine epsilon. Usually,
most pagerank values computed will have "-log10(maxRelError)" digits
of accuracy. "maxRelError" must be positive and less than or equal
to 0.01.
"minIterations"
minIterations => 0
"minIterations" is the minimum number of iterations that will be
computed before the pagerank iterations are stopped, even if
"maxRelError" is achieved. The default is zero.
"maxIterations"
maxIterations => int (2 * ((maxRelError / ln (dampeningFactor) + 1))
"maxIterations" is the maximum number of iterations that can be
performed to approximate the pagerank vector even if "maxRelError"
is not achieved. The default is "2 * ((maxRelError / ln
(dampeningFactor) + 1)". If "dampeningFactor" is zero, then
"maxIterations" is one. If "dampeningFactor" is one, then
"maxIterations" is equal to the total nodes in the graph.
"linkSinkNodes"
linkSinkNodes => 1
In a directed graph sink nodes are the nodes with no edges emanating
lib/Graph/Centrality/Pagerank.pm view on Meta::CPAN
C<maxRelError> is the maximum I<average> relative error that is permitted between
successive pagerank vectors before the iterative process to approximate the pagerank vector
should be stopped. The default is the square root of the systems machine epsilon.
Usually, most pagerank values computed will have C<-log10(maxRelError)> digits of accuracy.
C<maxRelError> must be positive and less than or equal to 0.01.
=item C<minIterations>
minIterations => 0
C<minIterations> is the minimum number of iterations that will be computed
before the pagerank iterations are stopped, even if C<maxRelError> is achieved.
The default is zero.
=item C<maxIterations>
maxIterations => int (2 * ((maxRelError / ln (dampeningFactor) + 1))
C<maxIterations> is the maximum number of iterations that can be performed
to approximate the pagerank vector even if C<maxRelError> is not achieved.
The default is C<2 * ((maxRelError / ln (dampeningFactor) + 1)>. If
C<dampeningFactor> is zero, then C<maxIterations> is one. If C<dampeningFactor>
is one, then C<maxIterations> is equal to the total nodes in the graph.
=item C<linkSinkNodes>
linkSinkNodes => 1
In a directed graph sink nodes are the nodes with no edges emanating out
lib/Graph/Centrality/Pagerank.pm view on Meta::CPAN
# set dampening factor, default is .85;
$Parameters{dampeningFactor} = 0.85 unless (exists ($Parameters{dampeningFactor}));
$Parameters{dampeningFactor} = abs ($Parameters{dampeningFactor}) if (exists ($Parameters{dampeningFactor}));
$Parameters{dampeningFactor} = 1 if ($Parameters{dampeningFactor} > 1);
# set max relative error, default is sqrt (machine epsilon).
$Parameters{maxRelError} = sqrt ($Self->_getMachineEpsilon ()) unless (exists ($Parameters{maxRelError}));
$Parameters{maxRelError} = abs ($Parameters{maxRelError}) if (exists ($Parameters{maxRelError}));
$Parameters{maxRelError} = 0.01 if ($Parameters{maxRelError} > 0.01);
# set default min iterations.
$Parameters{minIterations} = 1 unless (exists ($Parameters{minIterations}));
$Parameters{minIterations} = abs ($Parameters{minIterations});
# set default max iterations.
unless (exists ($Parameters{maxIterations}))
{
$Parameters{maxIterations} = 1;
$Parameters{maxIterations} = 1 if ($Parameters{dampeningFactor} <= 0);
$Parameters{maxIterationsIsTotalNodes} = 1 if ($Parameters{dampeningFactor} >= 1);
if ($Parameters{dampeningFactor} < 1)
{
$Parameters{maxIterations} = 2 * (int (log ($Parameters{maxRelError}) / log ($Parameters{dampeningFactor})) + 1);
}
}
lib/Graph/Centrality/Pagerank.pm view on Meta::CPAN
# set dampening factor.
$Parameters{dampeningFactor} = $Self->{defaultParameters}{dampeningFactor} unless (exists ($Parameters{dampeningFactor}));
$Parameters{dampeningFactor} = abs ($Parameters{dampeningFactor}) if (exists ($Parameters{dampeningFactor}));
$Parameters{dampeningFactor} = 1 if ($Parameters{dampeningFactor} > 1);
# set max relative error.
$Parameters{maxRelError} = $Self->{defaultParameters}{maxRelError} unless (exists ($Parameters{maxRelError}));
$Parameters{maxRelError} = abs ($Parameters{maxRelError}) if (exists ($Parameters{maxRelError}));
$Parameters{maxRelError} = 0.01 if ($Parameters{maxRelError} > 0.01);
# set default min iterations.
$Parameters{minIterations} = $Self->{defaultParameters}{minIterations} unless (exists ($Parameters{minIterations}));
$Parameters{minIterations} = abs ($Parameters{minIterations});
# set default max iterations.
unless (exists ($Parameters{maxIterations}))
{
$Parameters{maxIterations} = $Self->{defaultParameters}{maxIterations};
if ((0 < $Parameters{dampeningFactor}) && ($Parameters{dampeningFactor} < 1))
{
$Parameters{maxIterations} = 2 * (int (log ($Parameters{maxRelError}) / log ($Parameters{dampeningFactor})) + 1);
}
}
$Parameters{maxIterations} = abs ($Parameters{maxIterations});
$Parameters{maxIterations} = 1 if ($Parameters{maxIterations} < 1);
lib/Graph/Centrality/Pagerank.pm view on Meta::CPAN
foreach my $node (@allNodes) { $nodeWeights{$node} = 1 / $totalNodes; }
}
# initialize the pagerank vector;
my $pagerank = {};
return $pagerank if ($totalNodes == 0);
foreach my $node (@allNodes) { $pagerank->{$node} = $nodeWeights{$node}; }
my $newPageRank = {};
# set the maximum number of iterations.
my $maxIterations = $Parameters{maxIterations};
$maxIterations = $totalNodes if exists $Parameters{maxIterationsIsTotalNodes};
for (my $iteration = 0; $iteration < $maxIterations; $iteration++)
{
# first set the new page rank to the average pageranks times (1 - $dampeningFactor).
if ($Parameters{scaleDampeningFactor})
{
#my $sum = 0;
#foreach my $node (@allNodes) { $sum += $pagerank->{$node}; }
( run in 1.362 second using v1.01-cache-2.11-cpan-71847e10f99 )