Vector Partitions#
AUTHORS:
Amritanshu Prasad (2013): Initial version
Shriya M (2022): Added new parameters such as
distinct
,parts
andis_repeatable
- sage.combinat.vector_partition.IntegerVectorsIterator(vect, min=None)#
Return an iterator over the list of integer vectors which are componentwise less than or equal to
vect
, and lexicographically greater than or equal tomin
.INPUT:
vect
– A list of non-negative integersmin
– A list of non-negative integers dominated elementwise byvect
OUTPUT:
A list in lexicographic order of all integer vectors (as lists) which are dominated elementwise by
vect
and are greater than or equal tomin
in lexicographic order.EXAMPLES:
sage: from sage.combinat.vector_partition import IntegerVectorsIterator sage: list(IntegerVectorsIterator([1, 1])) [[0, 0], [0, 1], [1, 0], [1, 1]] sage: list(IntegerVectorsIterator([1, 1], min = [1, 0])) [[1, 0], [1, 1]]
- class sage.combinat.vector_partition.VectorPartition(parent, vecpar)#
Bases:
CombinatorialElement
A vector partition is a multiset of integer vectors.
- partition_at_vertex(i)#
Return the partition obtained by sorting the
i
-th elements of the vectors in the vector partition.EXAMPLES:
sage: V = VectorPartition([[1, 2, 1], [2, 4, 1]]) sage: V.partition_at_vertex(1) [4, 2]
- sum()#
Return the sum vector as a list.
EXAMPLES:
sage: V = VectorPartition([[3, 2, 1], [2, 2, 1]]) sage: V.sum() [5, 4, 2]
- class sage.combinat.vector_partition.VectorPartitions(vec, min=None, parts=None, distinct=False, is_repeatable=None)#
Bases:
UniqueRepresentation
,Parent
Class of all vector partitions of
vec
with all parts greater than or equal tomin
in lexicographic order, with parts fromparts
.A vector partition of
vec
is a list of vectors with non-negative integer entries whose sum isvec
.INPUT:
vec
- Integer vectormin
- Integer vector dominated elementwise byvec
parts
- Finite list of possible partsdistinct
- Boolean, set toTrue
if only vector partitions with distinct parts are enumeratedis_repeatable
- Boolean function onparts
which givesTrue
in parts that can be repeated
EXAMPLES:
If
min
is not specified, then the class of all vector partitions ofvec
is created:sage: VP = VectorPartitions([2, 2]) sage: for vecpar in VP: ....: print(vecpar) [[0, 1], [0, 1], [1, 0], [1, 0]] [[0, 1], [0, 1], [2, 0]] [[0, 1], [1, 0], [1, 1]] [[0, 1], [2, 1]] [[0, 2], [1, 0], [1, 0]] [[0, 2], [2, 0]] [[1, 0], [1, 2]] [[1, 1], [1, 1]] [[2, 2]]
If
distinct
is set to be True, then distinct part partitions are created:sage: VP = VectorPartitions([2,2], distinct = True) sage: list(VP) [[[0, 1], [1, 0], [1, 1]], [[0, 1], [2, 1]], [[0, 2], [2, 0]], [[1, 0], [1, 2]], [[2, 2]]]
If
min
is specified, then the class consists of only those vector partitions whose parts are all greater than or equal tomin
in lexicographic order:sage: VP = VectorPartitions([2, 2], min = [1, 0]) sage: for vecpar in VP: ....: print(vecpar) [[1, 0], [1, 2]] [[1, 1], [1, 1]] [[2, 2]] sage: VP = VectorPartitions([2, 2], min = [1, 0], distinct = True) sage: for vecpar in VP: ....: print(vecpar) [[1, 0], [1, 2]] [[2, 2]]
If
parts
is specified, then the class consists only of those vector partitions whose parts are fromparts
:sage: Vec_Par = VectorPartitions([2,2], parts=[[0,1],[1,0],[1,1]]) sage: list(Vec_Par) [[[0, 1], [0, 1], [1, 0], [1, 0]], [[0, 1], [1, 0], [1, 1]], [[1, 1], [1, 1]]]
If
is_repeatable
is specified, then the parts which satisfy the boolean functionis_repeatable
are allowed to be repeated:sage: Vector_Partitions = VectorPartitions([2,2], parts=[[0,1],[1,0],[1,1]], is_repeatable=lambda vec: sum(vec)%2!=0) sage: list(Vector_Partitions) [[[0, 1], [0, 1], [1, 0], [1, 0]], [[0, 1], [1, 0], [1, 1]]]
- Element#
alias of
VectorPartition
- sage.combinat.vector_partition.find_min(vect)#
Return a string of
0
’s with one1
at the location where the listvect
has its last entry which is not equal to0
.INPUT:
vec
– A list of integers
OUTPUT:
A list of the same length with
0
’s everywhere, except for a1
at the last position wherevec
has an entry not equal to0
.EXAMPLES:
sage: from sage.combinat.vector_partition import find_min sage: find_min([2, 1]) [0, 1] sage: find_min([2, 1, 0]) [0, 1, 0]