View Javadoc
1   /*
2    * Created on Jul 12, 2007
3    *
4    * Copyright (c) 2007, The JUNG Authors 
5    *
6    * All rights reserved.
7    *
8    * This software is open-source under the BSD license; see either
9    * "license.txt" or
10   * https://github.com/jrtom/jung/blob/master/LICENSE for a description.
11   */
12  package edu.uci.ics.jung.algorithms.scoring;
13  
14  import com.google.common.base.Function;
15  
16  import edu.uci.ics.jung.graph.Hypergraph;
17  
18  /**
19   * Calculates eigenvector centrality for each vertex in the graph.
20   * The 'eigenvector centrality' for a vertex is defined as the fraction of
21   * time that a random walk(er) will spend at that vertex over an infinite
22   * time horizon.
23   * Assumes that the graph is strongly connected.
24   */
25  public class EigenvectorCentrality<V,E> extends PageRank<V,E>
26  {
27      /**
28       * Creates an instance with the specified graph and edge weights.
29       * The outgoing edge weights for each edge must sum to 1.
30       * (See <code>UniformDegreeWeight</code> for one way to handle this for
31       * undirected graphs.)
32       * @param graph the graph for which the centrality is to be calculated
33       * @param edge_weights the edge weights 
34       */
35      public EigenvectorCentrality(Hypergraph<V,E> graph, 
36      		Function<E, ? extends Number> edge_weights)
37      {
38          super(graph, edge_weights, 0);
39          acceptDisconnectedGraph(false);
40      }
41  
42      /**
43       * Creates an instance with the specified graph and default edge weights.
44       * (Default edge weights: <code>UniformDegreeWeight</code>.)
45       * @param graph the graph for which the centrality is to be calculated.
46       */
47      public EigenvectorCentrality(Hypergraph<V,E> graph)
48      {
49          super(graph, 0);
50          acceptDisconnectedGraph(false);
51      }
52  }