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 specific version 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