Difference Matrices¶
This module gathers code related to difference matrices. One can build those
objects (or know if they can be built) with difference_matrix()
:
sage: G,DM = designs.difference_matrix(9,5,1)
Functions¶
-
sage.combinat.designs.difference_matrices.
difference_matrix
(g, k, lmbda=1, existence=False, check=True)¶ Return a
-difference matrix
A matrix
is a
-difference matrix if it has size
, its entries belong to the group
of cardinality
, and for any two rows
of
and
there are exactly
values
such that
.
INPUT:
k
– (integer) number of columns. Ifk=None
it is set to the largest value available.g
– (integer) cardinality of the grouplmbda
– (integer; default: 1) – number of times each element ofappears as a difference.
check
– (boolean) Whether to check that output is correct before returning it. As this is expected to be useless (but we are cautious guys), you may want to disable it whenever you want speed. Set toTrue
by default.existence
(boolean) – instead of building the design, return:True
– meaning that Sage knows how to build the designUnknown
– meaning that Sage does not know how to build the design, but that the design may exist (seesage.misc.unknown
).False
– meaning that the design does not exist.
Note
When
k=None
andexistence=True
the function returns an integer, i.e. the largestsuch that we can build a
-DM.
EXAMPLES:
sage: G,M = designs.difference_matrix(25,10); G Finite Field in x of size 5^2 sage: designs.difference_matrix(993,None,existence=1) 32
Here we print for each
the maximum possible
for which Sage knows how to build a
-difference matrix:
sage: for g in range(2,30): ....: k_max = designs.difference_matrix(g=g,k=None,existence=True) ....: print "{:2} {}".format(g, k_max) ....: _ = designs.difference_matrix(g,k_max) 2 2 3 3 4 4 5 5 6 2 7 7 8 8 9 9 10 2 11 11 12 6 13 13 14 2 15 3 16 16 17 17 18 2 19 19 20 4 21 6 22 2 23 23 24 8 25 25 26 2 27 27 28 6 29 29
TESTS:
sage: designs.difference_matrix(10,12,1,existence=True) False sage: designs.difference_matrix(10,12,1) Traceback (most recent call last): ... EmptySetError: No (10,12,1)-Difference Matrix exists as k(=12)>g(=10) sage: designs.difference_matrix(10,9,1,existence=True) Unknown sage: designs.difference_matrix(10,9,1) Traceback (most recent call last): ... NotImplementedError: I don't know how to build a (10,9,1)-Difference Matrix!
-
sage.combinat.designs.difference_matrices.
difference_matrix_product
(k, M1, G1, lmbda1, M2, G2, lmbda2, check=True)¶ Return the product of the
(G1,k,lmbda1)
and(G2,k,lmbda2)
difference matricesM1
andM2
.The result is a
-difference matrix.
INPUT:
k,lmbda1,lmbda2
– positive integerG1, G2
– groupsM1, M2
–(G1,k,lmbda1)
and(G,k,lmbda2)
difference matricescheck
(boolean) – ifTrue
(default), the output is checked before being returned.
EXAMPLES:
sage: from sage.combinat.designs.difference_matrices import ( ....: difference_matrix_product, ....: is_difference_matrix) sage: G1,M1 = designs.difference_matrix(11,6) sage: G2,M2 = designs.difference_matrix(7,6) sage: G,M = difference_matrix_product(6,M1,G1,1,M2,G2,1) sage: G1 Finite Field of size 11 sage: G2 Finite Field of size 7 sage: G The cartesian product of (Finite Field of size 11, Finite Field of size 7) sage: is_difference_matrix(M,G,6,1) True
-
sage.combinat.designs.difference_matrices.
find_product_decomposition
(g, k, lmbda=1)¶ Try to find a product decomposition construction for difference matrices.
INPUT:
g,k,lmbda
– integers, parameters of the difference matrix
OUTPUT:
A pair of pairs
(g1,lmbda),(g2,lmbda2)
if Sage knows how to buildand
difference matrices and
False
otherwise.EXAMPLES:
sage: from sage.combinat.designs.difference_matrices import find_product_decomposition sage: find_product_decomposition(77,6) ((7, 1), (11, 1)) sage: find_product_decomposition(616,7) ((7, 1), (88, 1)) sage: find_product_decomposition(24,10) False