# Weighted Integer Vectors¶

AUTHORS:

• Mike Hansen (2007): initial version, ported from MuPAD-Combinat
• Nicolas M. Thiery (2010-10-30): WeightedIntegerVectors(weights) + cleanup

Warning

The list(self) function in this file used the Permutation class improperly, returning a list of, generally speaking, invalid permutations (repeated entries, including 0).

sage.combinat.integer_vector_weighted.WeightedIntegerVectors(n=None, weight=None)

Returns the combinatorial class of integer vectors of n weighted by weight, that is, the nonnegative integer vectors $$(v_1,\dots,v_{length(weight)})$$ satisfying $$\sum_i v_i weight[i]==n$$.

INPUT:

• n – a non negative integer (optional)
• weight – a tuple (or list or iterable) of positive integers

EXAMPLES:

sage: WeightedIntegerVectors(8, [1,1,2])
Integer vectors of 8 weighted by [1, 1, 2]
sage: WeightedIntegerVectors(8, [1,1,2]).first()
[0, 0, 4]
sage: WeightedIntegerVectors(8, [1,1,2]).last()
[8, 0, 0]
sage: WeightedIntegerVectors(8, [1,1,2]).cardinality()
25
sage: WeightedIntegerVectors(8, [1,1,2]).random_element()
[1, 1, 3]

sage: WeightedIntegerVectors([1,1,2])
Integer vectors weighted by [1, 1, 2]
sage: WeightedIntegerVectors([1,1,2]).cardinality()
+Infinity
sage: WeightedIntegerVectors([1,1,2]).first()
[0, 0, 0]


TESTS:

sage: WeightedIntegerVectors(None,None)
Traceback (most recent call last):
...
ValueError: weights should be specified


Todo

should the order of the arguments n and weight be exchanged to simplify the logic ?

class sage.combinat.integer_vector_weighted.WeightedIntegerVectors_all(weights)

Set of weighted integer vectors.

EXAMPLES:

sage: W = WeightedIntegerVectors([3,1,1,2,1]); W
Integer vectors weighted by [3, 1, 1, 2, 1]
sage: W.cardinality()
+Infinity

sage: W12.an_element()
[4, 0, 0, 0, 0]
sage: W12.last()
[0, 12, 0, 0, 0]
sage: W12.cardinality()
441
sage: for w in W12: print w
[4, 0, 0, 0, 0]
[3, 0, 0, 1, 1]
[3, 0, 1, 1, 0]
...
[0, 11, 1, 0, 0]
[0, 12, 0, 0, 0]


EXAMPLES:

sage: C = WeightedIntegerVectors([2,1,3])
8

subset(size=None)

EXAMPLES:

sage: C = WeightedIntegerVectors([2,1,3])
sage: C.subset(4)
Integer vectors of 4 weighted by [2, 1, 3]

class sage.combinat.integer_vector_weighted.WeightedIntegerVectors_nweight(n, weight)

TESTS:

sage: C = WeightedIntegerVectors(8, [1,1,2])
sage: C.__class__
<class 'sage.combinat.integer_vector_weighted.WeightedIntegerVectors_nweight_with_category'>
sage: TestSuite(C).run()


#### Previous topic

(Non-negative) Integer vectors

#### Next topic

Integer vectors modulo the action of a permutation group