Initial opendaylight infrastructure commit!!
[controller.git] / third-party / net.sf.jung2 / src / main / java / edu / uci / ics / jung / algorithms / scoring / EigenvectorCentrality.java
diff --git a/third-party/net.sf.jung2/src/main/java/edu/uci/ics/jung/algorithms/scoring/EigenvectorCentrality.java b/third-party/net.sf.jung2/src/main/java/edu/uci/ics/jung/algorithms/scoring/EigenvectorCentrality.java
new file mode 100644 (file)
index 0000000..87d7f3a
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * 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);
+    }
+}