Interface WeightFunctionInt<K>

Type Parameters:
K - the elements (vertices/edges) type
All Superinterfaces:
Comparator<K>, WeightFunction<K>
All Known Subinterfaces:
IWeightFunctionInt, IWeightsByte, IWeightsInt, IWeightsShort, WeightsByte<K>, WeightsInt<K>, WeightsShort<K>
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface WeightFunctionInt<K> extends WeightFunction<K>
Weight function that maps graph edges or vertices to integer weights.

Some algorithms implementations support only integers weights, or run faster in such a case. This interface is the API for these algorithms for the edges (or vertices) integer weights.

 
 // Create an undirected graph with three vertices and edges between them
 Graph<String, Integer> g = Graph.newUndirected();
 g.addVertex("Berlin");
 g.addVertex("Leipzig");
 g.addVertex("Dresden");
 g.addEdge("Berlin", "Leipzig", 9);
 g.addEdge("Berlin", "Dresden", 13);
 g.addEdge("Dresden", "Leipzig", 14);

 // Assign some weights to the edges
 WeightsInt<Integer> w = g.addEdgesWeights("distance-km", int.class);
 w.set(9, 191);
 w.set(13, 193);
 w.set(14, 121);

 // Calculate the shortest paths from Berlin to all other cities
 ShortestPathSingleSource ssspAlgo = ShortestPathSingleSource.newInstance();
 ShortestPathSingleSource.Result<String, Integer> ssspRes = ssspAlgo.computeShortestPaths(g, w, "Berlin");

 // Print the shortest path from Berlin to Leipzig
 System.out.println("Distance from Berlin to Leipzig is: " + ssspRes.distance("Leipzig"));
 System.out.println("The shortest path from Berlin to Leipzig is:");
 for (Integer e : ssspRes.getPath("Leipzig").edges()) {
 	String u = g.edgeSource(e), v = g.edgeTarget(e);
 	System.out.println(" " + e + "(" + u + ", " + v + ")");
 }
 
Author:
Barak Ugav
  • Method Details

    • weightInt

      int weightInt(K element)
      Get the integer weight of an element.
      Parameters:
      element - an element identifier
      Returns:
      the weight of the element
      Throws:
      NoSuchVertexException - if this weight function maps vertices and element is not a valid vertex identifier in the graph
      NoSuchEdgeException - if this weight function maps edges and element is not a valid edge identifier in the graph
    • weight

      @Deprecated default double weight(K element)
      Deprecated.
      Please use weightInt(Object) instead to avoid un/boxing.
      Get the weight of an element.
      Specified by:
      weight in interface WeightFunction<K>
      Parameters:
      element - an element identifier
      Returns:
      the weight of the element
    • compare

      default int compare(K e1, K e2)
      Description copied from interface: WeightFunction
      Compare two elements by their weights.
      Specified by:
      compare in interface Comparator<K>
      Specified by:
      compare in interface WeightFunction<K>
    • weightSum

      default double weightSum(Iterable<K> elements)
      Description copied from interface: WeightFunction
      Get the sum of the weights of multiple elements.
      Specified by:
      weightSum in interface WeightFunction<K>
      Parameters:
      elements - a collection of elements
      Returns:
      the sum of the weights of the elements