/* * Created on Jul 12, 2007 * * Copyright (c) 2007, the JUNG Project and the Regents of the University * of California * All rights reserved. * * This software is open-source under the BSD license; see either * "license.txt" or * http://jung.sourceforge.net/license.txt for a description. */ package edu.uci.ics.jung.algorithms.scoring; import org.apache.commons.collections15.Transformer; import edu.uci.ics.jung.graph.Hypergraph; /** * Calculates eigenvector centrality for each vertex in the graph. The * 'eigenvector centrality' for a vertex is defined as the fraction of time that * a random walk(er) will spend at that vertex over an infinite time horizon. * Assumes that the graph is strongly connected. */ public class EigenvectorCentrality<V, E> extends PageRank<V, E> { /** * Creates an instance with the specified graph and edge weights. The * outgoing edge weights for each edge must sum to 1. (See * <code>UniformDegreeWeight</code> for one way to handle this for * undirected graphs.) * * @param graph * the graph for which the centrality is to be calculated * @param edge_weights * the edge weights */ public EigenvectorCentrality(Hypergraph<V, E> graph, Transformer<E, ? extends Number> edge_weights) { super(graph, edge_weights, 0); acceptDisconnectedGraph(false); } /** * Creates an instance with the specified graph and default edge weights. * (Default edge weights: <code>UniformDegreeWeight</code>.) * * @param graph * the graph for which the centrality is to be calculated. */ public EigenvectorCentrality(Hypergraph<V, E> graph) { super(graph, 0); acceptDisconnectedGraph(false); } }