- java.lang.Object
-
- org.jgrapht.alg.scoring.PageRank<V,E>
-
- Type Parameters:
V
- the graph vertex typeE
- the graph edge type
- All Implemented Interfaces:
VertexScoringAlgorithm<V,java.lang.Double>
public final class PageRank<V,E> extends java.lang.Object implements VertexScoringAlgorithm<V,java.lang.Double>
PageRank implementation.The wikipedia article contains a nice description of PageRank. The method can be found on the article: Sergey Brin and Larry Page: The Anatomy of a Large-Scale Hypertextual Web Search Engine. Proceedings of the 7th World-Wide Web Conference, Brisbane, Australia, April 1998. See also the following page.
This is a simple iterative implementation of PageRank which stops after a given number of iterations or if the PageRank values between two iterations do not change more than a predefined value. The implementation uses the variant which divides by the number of nodes, thus forming a probability distribution over graph nodes.
Each iteration of the algorithm runs in linear time $O(n+m)$ when $n$ is the number of nodes and $m$ the number of edges of the graph. The maximum number of iterations can be adjusted by the caller. The default value is
MAX_ITERATIONS_DEFAULT
.If the graph is a weighted graph, a weighted variant is used where the probability of following an edge e out of node $v$ is equal to the weight of $e$ over the sum of weights of all outgoing edges of $v$.
- Author:
- Dimitrios Michail
-
-
Field Summary
Fields Modifier and Type Field Description static double
DAMPING_FACTOR_DEFAULT
Damping factor default value.static int
MAX_ITERATIONS_DEFAULT
Default number of maximum iterations.static double
TOLERANCE_DEFAULT
Default value for the tolerance.
-
Constructor Summary
Constructors Constructor Description PageRank(Graph<V,E> graph)
Create and execute an instance of PageRank.PageRank(Graph<V,E> graph, double dampingFactor)
Create and execute an instance of PageRank.PageRank(Graph<V,E> graph, double dampingFactor, int maxIterations)
Create and execute an instance of PageRank.PageRank(Graph<V,E> graph, double dampingFactor, int maxIterations, double tolerance)
Create and execute an instance of PageRank.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<V,java.lang.Double>
getScores()
Get a map with the scores of all verticesjava.lang.Double
getVertexScore(V v)
Get a vertex score
-
-
-
Field Detail
-
MAX_ITERATIONS_DEFAULT
public static final int MAX_ITERATIONS_DEFAULT
Default number of maximum iterations.- See Also:
- Constant Field Values
-
TOLERANCE_DEFAULT
public static final double TOLERANCE_DEFAULT
Default value for the tolerance. The calculation will stop if the difference of PageRank values between iterations change less than this value.- See Also:
- Constant Field Values
-
DAMPING_FACTOR_DEFAULT
public static final double DAMPING_FACTOR_DEFAULT
Damping factor default value.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PageRank
public PageRank(Graph<V,E> graph)
Create and execute an instance of PageRank.- Parameters:
graph
- the input graph
-
PageRank
public PageRank(Graph<V,E> graph, double dampingFactor)
Create and execute an instance of PageRank.- Parameters:
graph
- the input graphdampingFactor
- the damping factor
-
PageRank
public PageRank(Graph<V,E> graph, double dampingFactor, int maxIterations)
Create and execute an instance of PageRank.- Parameters:
graph
- the input graphdampingFactor
- the damping factormaxIterations
- the maximum number of iterations to perform
-
PageRank
public PageRank(Graph<V,E> graph, double dampingFactor, int maxIterations, double tolerance)
Create and execute an instance of PageRank.- Parameters:
graph
- the input graphdampingFactor
- the damping factormaxIterations
- the maximum number of iterations to performtolerance
- the calculation will stop if the difference of PageRank values between iterations change less than this value
-
-
Method Detail
-
getScores
public java.util.Map<V,java.lang.Double> getScores()
Get a map with the scores of all vertices- Specified by:
getScores
in interfaceVertexScoringAlgorithm<V,E>
- Returns:
- a map with all scores
-
getVertexScore
public java.lang.Double getVertexScore(V v)
Get a vertex score- Specified by:
getVertexScore
in interfaceVertexScoringAlgorithm<V,E>
- Parameters:
v
- the vertex- Returns:
- the score
-
-