Bug 2273: Removed unbuilt third-party code.
[controller.git] / third-party / net.sf.jung2 / src / main / java / edu / uci / ics / jung / algorithms / scoring / KStepMarkov.java
diff --git a/third-party/net.sf.jung2/src/main/java/edu/uci/ics/jung/algorithms/scoring/KStepMarkov.java b/third-party/net.sf.jung2/src/main/java/edu/uci/ics/jung/algorithms/scoring/KStepMarkov.java
deleted file mode 100644 (file)
index e640b1b..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * Copyright (c) 2008, 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.
- * Created on Aug 22, 2008
- * 
- */
-package edu.uci.ics.jung.algorithms.scoring;
-
-import org.apache.commons.collections15.Transformer;
-
-import edu.uci.ics.jung.algorithms.scoring.util.ScoringUtils;
-import edu.uci.ics.jung.graph.Hypergraph;
-
-/**
- * A special case of {@code PageRankWithPriors} in which the final scores
- * represent a probability distribution over position assuming a random (Markovian)
- * walk of exactly k steps, based on the initial distribution specified by the priors.
- * 
- * <p><b>NOTE</b>: The version of {@code KStepMarkov} in {@code algorithms.importance}
- * (and in JUNG 1.x) is believed to be incorrect: rather than returning 
- * a score which represents a probability distribution over position assuming
- * a k-step random walk, it returns a score which represents the sum over all steps
- * of the probability for each step.  If you want that behavior, set the 
- * 'cumulative' flag as follows <i>before calling {@code evaluate()}</i>:
- * <pre>
- *     KStepMarkov ksm = new KStepMarkov(...);
- *     ksm.setCumulative(true);
- *     ksm.evaluate();
- * </pre>
- * 
- * By default, the 'cumulative' flag is set to false.
- * 
- * NOTE: THIS CLASS IS NOT YET COMPLETE.  USE AT YOUR OWN RISK.  (The original behavior
- * is captured by the version still available in {@code algorithms.importance}.)
- * 
- * @see "Algorithms for Estimating Relative Importance in Graphs by Scott White and Padhraic Smyth, 2003"
- * @see PageRank
- * @see PageRankWithPriors
- */
-public class KStepMarkov<V,E> extends PageRankWithPriors<V,E> 
-{
-       private boolean cumulative;
-       
-       /**
-        * Creates an instance based on the specified graph, edge weights, vertex
-        * priors (initial scores), and number of steps to take.
-        * @param graph the input graph
-        * @param edge_weights the edge weights (transition probabilities)
-        * @param vertex_priors the initial probability distribution (score assignment)
-        * @param steps the number of times that {@code step()} will be called by {@code evaluate}
-        */
-       public KStepMarkov(Hypergraph<V,E> graph, Transformer<E, ? extends Number> edge_weights, 
-                                          Transformer<V, Double> vertex_priors, int steps)
-       {
-               super(graph, edge_weights, vertex_priors, 0);
-               initialize(steps);
-       }
-       
-       /**
-        * Creates an instance based on the specified graph, vertex
-        * priors (initial scores), and number of steps to take.  The edge
-        * weights (transition probabilities) are set to default values (a uniform
-        * distribution over all outgoing edges).
-        * @param graph the input graph
-        * @param vertex_priors the initial probability distribution (score assignment)
-        * @param steps the number of times that {@code step()} will be called by {@code evaluate}
-        */
-       public KStepMarkov(Hypergraph<V,E> graph, Transformer<V, Double> vertex_priors, int steps)
-       {
-               super(graph, vertex_priors, 0);
-               initialize(steps);
-       }
-       
-       /**
-        * Creates an instance based on the specified graph and number of steps to 
-        * take.  The edge weights (transition probabilities) and vertex initial scores
-        * (prior probabilities) are set to default values (a uniform
-        * distribution over all outgoing edges, and a uniform distribution over
-        * all vertices, respectively).
-        * @param graph the input graph
-        * @param steps the number of times that {@code step()} will be called by {@code evaluate}
-        */
-       public KStepMarkov(Hypergraph<V,E> graph, int steps)
-       {
-               super(graph, ScoringUtils.getUniformRootPrior(graph.getVertices()), 0);
-               initialize(steps);
-       }
-       
-       private void initialize(int steps)
-       {
-               this.acceptDisconnectedGraph(false);
-               
-               if (steps <= 0)
-                       throw new IllegalArgumentException("Number of steps must be > 0");
-               
-               this.max_iterations = steps;
-               this.tolerance = -1.0;
-               
-               this.cumulative = false;
-       }
-
-       /**
-        * Specifies whether this instance should assign a score to each vertex
-        * based on the 
-        * @param cumulative
-        */
-       public void setCumulative(boolean cumulative)
-       {
-               this.cumulative = cumulative;
-       }
-       
-    /**
-     * Updates the value for this vertex.  Called by <code>step()</code>.
-     */
-    @Override
-    public double update(V v)
-    {
-       if (!cumulative)
-               return super.update(v);
-       
-        collectDisappearingPotential(v);
-        
-        double v_input = 0;
-        for (E e : graph.getInEdges(v))
-        {
-               // For graphs, the code below is equivalent to 
-//          V w = graph.getOpposite(v, e);
-//          total_input += (getCurrentValue(w) * getEdgeWeight(w,e).doubleValue());
-               // For hypergraphs, this divides the potential coming from w 
-               // by the number of vertices in the connecting edge e.
-               int incident_count = getAdjustedIncidentCount(e);
-               for (V w : graph.getIncidentVertices(e)) 
-               {
-                       if (!w.equals(v) || hyperedges_are_self_loops) 
-                               v_input += (getCurrentValue(w) * 
-                                               getEdgeWeight(w,e).doubleValue() / incident_count);
-               }
-        }
-        
-        // modify total_input according to alpha
-        double new_value = alpha > 0 ? 
-                       v_input * (1 - alpha) + getVertexPrior(v) * alpha :
-                       v_input;
-        setOutputValue(v, new_value + getCurrentValue(v));
-
-        // FIXME: DO WE NEED TO CHANGE HOW DISAPPEARING IS COUNTED?  NORMALIZE?
-        
-        return Math.abs(getCurrentValue(v) - new_value);
-    }
-
-}