Class Distributor<K>
java.lang.Object
org.jgrapht.generate.netgen.Distributor<K>
- Type Parameters:
K- the element type.
Distributes value units among keys given lower and upper bound constraints.
Let's define a set of elements $\{k_1, k_2, \dots, k_n\}$. For every element a set of lower bounds $\{l_1, l_2, \dots, l_t\}$ and upper bounds $\{u_1, u_2, \dots, u_p\}$ is specified. The problem is to randomly distribute a number of abstract value units $V$ among keys such that the lower bound and upper bound constraints are satisfied. This class solves this problem.
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates a Distributor using random seed.Distributor(long seed) Creates a distributor using the specifiedseed.Distributor(Random rng) Creates a distributor which uses the random number generatowrng. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddLowerBound(Function<K, Integer> lowerBound) Adds a lower bound function.voidaddUpperBound(Function<K, Integer> upperBound) Adds an upper bounding function.computeLowerBounds(List<K> keys) Finds a maximum lower bound for every key.computeSuffixSum(List<Integer> bounds) Computes a suffix sum of thebounds.computeUpperBounds(List<K> keys) Finds a minimum lower bound for every key.getDistribution(List<K> keys, int valueNum) Computes and returns a value distribution for the list of keys.
-
Field Details
-
rng
Random number generator used by this distributor. -
lowerBounds
-
upperBounds
-
-
Constructor Details
-
Distributor
public Distributor()Creates a Distributor using random seed. -
Distributor
public Distributor(long seed) Creates a distributor using the specifiedseed.- Parameters:
seed- the seed for the random number generator.
-
Distributor
Creates a distributor which uses the random number generatowrng.- Parameters:
rng- a random number generator to use.
-
-
Method Details
-
addUpperBound
-
addLowerBound
-
computeLowerBounds
-
computeUpperBounds
-
computeSuffixSum
-
getDistribution
Computes and returns a value distribution for the list of keys. The resulting distribution will satisfy the (possibly empty) sets of lower and upper bound constraints. Distributed values will be in the same order as the keys in the key list.- Parameters:
keys- the list of keys.valueNum- the number of abstract value units to distribute.- Returns:
- the computed value distribution.
-