Class VoltageScorer<V,​E>

  • All Implemented Interfaces:
    VertexScorer<V,​java.lang.Double>, IterativeContext

    public class VoltageScorer<V,​E>
    extends AbstractIterativeScorer<V,​E,​java.lang.Double>
    implements VertexScorer<V,​java.lang.Double>
    Assigns scores to vertices according to their 'voltage' in an approximate solution to the Kirchoff equations. This is accomplished by tying "source" vertices to specified positive voltages, "sink" vertices to 0 V, and iteratively updating the voltage of each other vertex to the (weighted) average of the voltages of its neighbors.

    The resultant voltages will all be in the range [0, max] where max is the largest voltage of any source vertex (in the absence of negative source voltages; see below).

    A few notes about this algorithm's interpretation of the graph data:

    • Higher edge weights are interpreted as indicative of greater influence/effect than lower edge weights.
    • Negative edge weights (and negative "source" voltages) invalidate the interpretation of the resultant values as voltages. However, this algorithm will not reject graphs with negative edge weights or source voltages.
    • Parallel edges are equivalent to a single edge whose weight is the sum of the weights on the parallel edges.
    • Current flows along undirected edges in both directions, but only flows along directed edges in the direction of the edge.

    • Field Detail

      • source_voltages

        protected java.util.Map<V,​? extends java.lang.Number> source_voltages
      • sinks

        protected java.util.Collection<V> sinks
    • Constructor Detail

      • VoltageScorer

        public VoltageScorer​(edu.uci.ics.jung.graph.Hypergraph<V,​E> g,
                             org.apache.commons.collections4.Transformer<E,​? extends java.lang.Number> edge_weights,
                             java.util.Map<V,​? extends java.lang.Number> source_voltages,
                             java.util.Collection<V> sinks)
        Creates an instance with the specified graph, edge weights, source voltages, and sinks.
        Parameters:
        g - the input graph
        edge_weights - the edge weights, representing conductivity
        source_voltages - the (fixed) voltage for each source
        sinks - the vertices whose voltages are tied to 0
      • VoltageScorer

        public VoltageScorer​(edu.uci.ics.jung.graph.Hypergraph<V,​E> g,
                             org.apache.commons.collections4.Transformer<E,​? extends java.lang.Number> edge_weights,
                             java.util.Collection<V> sources,
                             java.util.Collection<V> sinks)
        Creates an instance with the specified graph, edge weights, source vertices (each of whose 'voltages' are tied to 1), and sinks.
        Parameters:
        g - the input graph
        edge_weights - the edge weights, representing conductivity
        sources - the vertices whose voltages are tied to 1
        sinks - the vertices whose voltages are tied to 0
      • VoltageScorer

        public VoltageScorer​(edu.uci.ics.jung.graph.Hypergraph<V,​E> g,
                             java.util.Collection<V> sources,
                             java.util.Collection<V> sinks)
        Creates an instance with the specified graph, source vertices (each of whose 'voltages' are tied to 1), and sinks. The outgoing edges for each vertex are assigned weights that sum to 1.
        Parameters:
        g - the input graph
        sources - the vertices whose voltages are tied to 1
        sinks - the vertices whose voltages are tied to 0
      • VoltageScorer

        public VoltageScorer​(edu.uci.ics.jung.graph.Hypergraph<V,​E> g,
                             java.util.Map<V,​? extends java.lang.Number> source_voltages,
                             java.util.Collection<V> sinks)
        Creates an instance with the specified graph, source voltages, and sinks. The outgoing edges for each vertex are assigned weights that sum to 1.
        Parameters:
        g - the input graph
        source_voltages - the (fixed) voltage for each source
        sinks - the vertices whose voltages are tied to 0
      • VoltageScorer

        public VoltageScorer​(edu.uci.ics.jung.graph.Hypergraph<V,​E> g,
                             org.apache.commons.collections4.Transformer<E,​? extends java.lang.Number> edge_weights,
                             V source,
                             V sink)
        Creates an instance with the specified graph, edge weights, source, and sink. The source vertex voltage is tied to 1.
        Parameters:
        g - the input graph
        edge_weights - the edge weights, representing conductivity
        source - the vertex whose voltage is tied to 1
        sink - the vertex whose voltage is tied to 0
      • VoltageScorer

        public VoltageScorer​(edu.uci.ics.jung.graph.Hypergraph<V,​E> g,
                             V source,
                             V sink)
        Creates an instance with the specified graph, edge weights, source, and sink. The source vertex voltage is tied to 1. The outgoing edges for each vertex are assigned weights that sum to 1.
        Parameters:
        g - the input graph
        source - the vertex whose voltage is tied to 1
        sink - the vertex whose voltage is tied to 0