Interface IWeightFunctionInt

All Superinterfaces:
Comparator<Integer>, IntComparator, IWeightFunction, WeightFunction<Integer>, WeightFunctionInt<Integer>
All Known Subinterfaces:
IWeightsByte, IWeightsInt, IWeightsShort
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 IWeightFunctionInt extends WeightFunctionInt<Integer>, IWeightFunction
Weight function that maps graph edges or vertices of IntGraph to integer weights.

This interface is a specification of IWeightFunction for IntGraph.

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 a directed graph with three vertices and edges between them
 IntGraph g = IntGraph.newDirected();
 int v1 = g.addVertex();
 int v2 = g.addVertex();
 int v3 = g.addVertex();
 int e1 = g.addEdge(v1, v2);
 int e2 = g.addEdge(v2, v3);
 int e3 = g.addEdge(v1, v3);

 // Assign some weights to the edges
 IWeightsInt weights = g.addEdgesWeights("weightsKey", int.class);
 weights.set(e1, 1);
 weights.set(e2, 3);
 weights.set(e3, 15);
 IWeightFunctionInt weightFunc = weights;

 // Calculate the shortest paths from v1 to all other vertices
 ShortestPathSingleSource ssspAlgo = ShortestPathSingleSource.newInstance();
 ShortestPathSingleSource.Result ssspRes = ssspAlgo.computeShortestPaths(g, weightFunc, v1);

 // Print the shortest path from v1 to v3
 assert ssspRes.distance(v3) == 4;
 assert ssspRes.getPath(v3).edges().equals(IntList.of(e1, e2));
 System.out.println("Distance from v1 to v3 is: " + ssspRes.distance(v3));
 System.out.println("The shortest path from v1 to v3 is:");
 for (int e : ssspRes.getPath(v3).edges()) {
 	int u = g.edgeSource(e), v = g.edgeTarget(e);
 	System.out.println(" " + e + "(" + u + ", " + v + ")");
 }
 
Author:
Barak Ugav