Class VoltageScorer<V,E>

java.lang.Object
edu.uci.ics.jung.algorithms.scoring.AbstractIterativeScorer<V,E,Double>
edu.uci.ics.jung.algorithms.scoring.VoltageScorer<V,E>
All Implemented Interfaces:
VertexScorer<V,Double>, IterativeContext

public class VoltageScorer<V,E> extends AbstractIterativeScorer<V,E,Double> implements VertexScorer<V,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 Details

    • source_voltages

      protected Map<V,? extends Number> source_voltages
    • sinks

      protected Collection<V> sinks
  • Constructor Details

    • VoltageScorer

      public VoltageScorer(Hypergraph<V,E> g, com.google.common.base.Function<? super E,? extends Number> edge_weights, Map<V,? extends Number> source_voltages, 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(Hypergraph<V,E> g, com.google.common.base.Function<? super E,? extends Number> edge_weights, Collection<V> sources, 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(Hypergraph<V,E> g, Collection<V> sources, 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(Hypergraph<V,E> g, Map<V,? extends Number> source_voltages, 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(Hypergraph<V,E> g, com.google.common.base.Function<? super E,? extends 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(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
  • Method Details