Database of small combinatorial designs¶
This module implements combinatorial designs that cannot be obtained by more general constructions. Most of them come from the Handbook of Combinatorial Designs [DesignHandbook].
All this would only be a dream without the mathematical knowledge and help of Julian R. Abel.
These functions can all be obtained through the designs.<tab>
functions.
This module implements:
OA(11,640)
,OA(15,224)
,OA(7,66)
,OA(7,68)
,OA(8,69)
,OA(9,135)
,OA(10,520)
,OA(14,524)
,OA(7,74)
,OA(8,76)
,OA(10,205)
,OA(11,80)
,OA(20,352)
,OA(7,18)
,OA(20,416)
,OA(10,1620)
,OA(10,469)
,OA(20,544)
,OA(10,796)
,OA(11,160)
,OA(16,176)
,OA(15,896)
,OA(9,40)
,OA(9,1612)
,OA(16,208)
,OA(25,1262)
,OA(15,112)
,OA(9,1078)
,OA(17,560)
,OA(9,120)
,OA(11,185)
,OA(12,522)
,OA(11,254)
2 MOLS of order 10
,5 MOLS of order 12
,3 MOLS of order 18
,4 MOLS of order 14
,4 MOLS of order 15
vectors:
and
,
,
,
,
,
,
,
,
,
,
and
,
,
,
,
,
and
,
,
,
,
,
and
,
,
,
,
,
and
,
,
,
and
,
,
,
,
and
,
,
,
,
,
,
,
,
and
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
and
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
and
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
-difference families:
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
:
,
,
:
,
,
:
:
,
,
:
:
:
-difference matrices:
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
-quasi-difference matrices:
,
,
,
,
,
,
,
,
,
evenly distributed sets
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
:
,
,
,
,
,
,
,
,
,
:
,
,
,
REFERENCES:
[DesignHandbook] | (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27) Handbook of Combinatorial Designs (2ed) Charles Colbourn, Jeffrey Dinitz Chapman & Hall/CRC 2012 |
Functions¶
-
sage.combinat.designs.database.
DM_12_6_1
()¶ Return a
-difference matrix as built in [Hanani75].
This design is Lemma 3.21 from [Hanani75].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_12_6_1 sage: G,M = DM_12_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(12,6)
REFERENCES:
[Hanani75] (1, 2) Haim Hanani, Balanced incomplete block designs and related designs, http://dx.doi.org/10.1016/0012-365X(75)90040-0, Discrete Mathematics, Volume 11, Issue 3, 1975, Pages 255-369.
-
sage.combinat.designs.database.
DM_21_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.50 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_21_6_1 sage: G,M = DM_21_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(21,6)
-
sage.combinat.designs.database.
DM_24_8_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.52 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_24_8_1 sage: G,M = DM_24_8_1() sage: is_difference_matrix(M,G,8,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(24,8)
-
sage.combinat.designs.database.
DM_273_17_1
()¶ Return a
-difference matrix.
Given by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_273_17_1 sage: G,M = DM_273_17_1() sage: is_difference_matrix(M,G,17,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(273,17)
-
sage.combinat.designs.database.
DM_28_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.54 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_28_6_1 sage: G,M = DM_28_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(28,6)
-
sage.combinat.designs.database.
DM_33_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.56 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_33_6_1 sage: G,M = DM_33_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(33,6)
-
sage.combinat.designs.database.
DM_35_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.58 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_35_6_1 sage: G,M = DM_35_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(35,6)
-
sage.combinat.designs.database.
DM_36_9_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.59 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_36_9_1 sage: G,M = DM_36_9_1() sage: is_difference_matrix(M,G,9,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(36,9)
-
sage.combinat.designs.database.
DM_39_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.61 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_39_6_1 sage: G,M = DM_39_6_1() sage: is_difference_matrix(M,G,6,1) True
The design is available from the general constructor:
sage: designs.difference_matrix(39,6,existence=True) True
-
sage.combinat.designs.database.
DM_44_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.64 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_44_6_1 sage: G,M = DM_44_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(44,6)
-
sage.combinat.designs.database.
DM_45_7_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.65 [DesignHandbook].
... whose description contained a very deadly typo, kindly fixed by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_45_7_1 sage: G,M = DM_45_7_1() sage: is_difference_matrix(M,G,7,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(45,7)
-
sage.combinat.designs.database.
DM_48_9_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.67 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_48_9_1 sage: G,M = DM_48_9_1() sage: is_difference_matrix(M,G,9,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(48,9)
-
sage.combinat.designs.database.
DM_51_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.69 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_51_6_1 sage: G,M = DM_51_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(51,6)
-
sage.combinat.designs.database.
DM_52_6_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.70 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_52_6_1 sage: G,M = DM_52_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(52,6)
-
sage.combinat.designs.database.
DM_55_7_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.72 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_55_7_1 sage: G,M = DM_55_7_1() sage: is_difference_matrix(M,G,7,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(55,7)
-
sage.combinat.designs.database.
DM_56_8_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.73 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_56_8_1 sage: G,M = DM_56_8_1() sage: is_difference_matrix(M,G,8,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(56,8)
-
sage.combinat.designs.database.
DM_57_8_1
()¶ Return a
-difference matrix.
Given by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_57_8_1 sage: G,M = DM_57_8_1() sage: is_difference_matrix(M,G,8,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(57,8)
-
sage.combinat.designs.database.
DM_60_6_1
()¶ Return a
-difference matrix.
As explained in [JulianAbel13].
REFERENCES:
[JulianAbel13] (1, 2) Existence of Five MOLS of Orders 18 and 60 R. Julian R. Abel Journal of Combinatorial Designs 2013 http://onlinelibrary.wiley.com/doi/10.1002/jcd.21384/abstract
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_60_6_1 sage: G,M = DM_60_6_1() sage: is_difference_matrix(M,G,6,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(60,6)
-
sage.combinat.designs.database.
DM_75_8_1
()¶ Return a
-difference matrix.
As explained in the Handbook III.3.75 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_75_8_1 sage: G,M = DM_75_8_1() sage: is_difference_matrix(M,G,8,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(75,8)
-
sage.combinat.designs.database.
DM_993_32_1
()¶ Return a
-difference matrix.
Given by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_993_32_1 sage: G,M = DM_993_32_1() sage: is_difference_matrix(M,G,32,1) True
Can be obtained from the constructor:
sage: _ = designs.difference_matrix(993,32)
-
sage.combinat.designs.database.
MOLS_10_2
()¶ Return a pair of MOLS of order 10
Data obtained from http://www.cecm.sfu.ca/organics/papers/lam/paper/html/POLS10/POLS10.html
EXAMPLES:
sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_10_2 sage: MOLS = MOLS_10_2() sage: print are_mutually_orthogonal_latin_squares(MOLS) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(2,10) True
-
sage.combinat.designs.database.
MOLS_12_5
()¶ Return 5 MOLS of order 12
These MOLS have been found by Brendan McKay.
EXAMPLES:
sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_12_5 sage: MOLS = MOLS_12_5() sage: print are_mutually_orthogonal_latin_squares(MOLS) True
-
sage.combinat.designs.database.
MOLS_14_4
()¶ Return four MOLS of order 14
These MOLS were shared by Ian Wanless. The first proof of existence was given in [Todorov12].
EXAMPLES:
sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_14_4 sage: MOLS = MOLS_14_4() sage: print are_mutually_orthogonal_latin_squares(MOLS) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(4,14) True
REFERENCE:
[Todorov12] D.T. Todorov, Four mutually orthogonal Latin squares of order 14, Journal of Combinatorial Designs 2012, vol.20 n.8 pp.363-367
-
sage.combinat.designs.database.
MOLS_15_4
()¶ Return 4 MOLS of order 15.
These MOLS were shared by Ian Wanless.
EXAMPLES:
sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_15_4 sage: MOLS = MOLS_15_4() sage: print are_mutually_orthogonal_latin_squares(MOLS) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(4,15) True
-
sage.combinat.designs.database.
MOLS_18_3
()¶ Return 3 MOLS of order 18.
These MOLS were shared by Ian Wanless.
EXAMPLES:
sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_18_3 sage: MOLS = MOLS_18_3() sage: print are_mutually_orthogonal_latin_squares(MOLS) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(3,18) True
-
sage.combinat.designs.database.
OA_10_1620
()¶ Returns an OA(10,1620)
This is obtained through the generalized Brouwer-van Rees construction. Indeed,
and there exists an
.
Note
This function should be removed once
find_brouwer_van_rees_with_one_truncated_column()
can handle all incomplete orthogonal arrays obtained throughincomplete_orthogonal_array()
.EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_1620 sage: OA = OA_10_1620() # not tested -- ~7s sage: print is_orthogonal_array(OA,10,1620,2) # not tested -- ~7s True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(10,1620) True
-
sage.combinat.designs.database.
OA_10_205
()¶ Return an OA(10,205)
Julian R. Abel shared the following construction, which originally appeared in Theorem 8.7 of [Greig99], and can in Lemmas 5.14-5.16 of [ColDin01]:
Consider a
containing a Baer subplane (i.e. a
)
and a point
. Among the
lines of
containing
:
lines intersect
on
points
lines intersect
on
point
As those lines are disjoint outside of
we can use them as groups to build a GDD on
points. By keeping only 9 lines of the second kind, however, we obtain a
-GDD of type 12^5.16^9.
We complete it into a PBD by adding a block
for each group
. We then build an OA from this PBD using the fact that all blocks of size 9 are disjoint.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_205 sage: OA = OA_10_205() sage: print is_orthogonal_array(OA,10,205,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(10,205) True
-
sage.combinat.designs.database.
OA_10_469
()¶ Return an OA(10,469)
This construction appears in [Brouwer80]. It is based on the same technique used in
brouwer_separable_design()
.Julian R. Abel’s instructions:
Brouwer notes that a cyclic
(or
-BIBD) can be obtained with a base block containing
and
points in each residue class mod 3. Thus, by reducing the
to its points congruent to
one obtains a
-PBD which consists in 3 symmetric designs, i.e. 469 blocks of size 9, 469 blocks of size 13, and 469 blocks of size 16.
For each block size
, one can build a matrix with size
in which each block is a row, and such that each point of the PBD appears once per column. By multiplying a row of an
with the rows of the matrix one obtains a parallel class of a resolvable
.
Add to this the parallel class of all blocks
to obtain a resolvable
equivalent to an
.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_469 sage: OA = OA_10_469() sage: print is_orthogonal_array(OA,10,469,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(10,469) True
-
sage.combinat.designs.database.
OA_10_520
()¶ Return an OA(10,520).
This design is built by the slightly more general construction
OA_520_plus_x()
.EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_520 sage: OA = OA_10_520() sage: print is_orthogonal_array(OA,10,520,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(10,520) True
-
sage.combinat.designs.database.
OA_10_796
()¶ Returns an OA(10,796)
Construction shared by Julian R. Abel, from [AC07]:
Truncate one block of a
to size
, then add an extra point. Form a block on each group plus the extra point: we obtain a
-PBD in which only the extra point lies in more than one block of size
(and each other point lies in exactly 1 such block).
For each block
(of size
say) not containing the extra point, construct a
on
. For each block
(of size
or
) containing the extra point, construct a
on
, the size
hole being on
where
is the extra point. Finally form
extra block of size
on
.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_796 sage: OA = OA_10_796() sage: print is_orthogonal_array(OA,10,796,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(10,796) True
-
sage.combinat.designs.database.
OA_11_160
()¶ Returns an OA(11,160)
Published by Julian R. Abel in [AbelThesis]. Uses the fact that
is a product of a power of
and a prime number.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_160 sage: OA = OA_11_160() sage: print is_orthogonal_array(OA,11,160,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(11,160) True
-
sage.combinat.designs.database.
OA_11_185
()¶ Returns an OA(11,185)
The construction is given in [Greig99]. In Julian R. Abel’s words:
Start with awith a
points Fano subplane; outside this plane there are
points on a line of the subplane and
other points. Greig notes that the subdesign consisting of these
points is a
. Now add the
points of a line disjoint from this subdesign (e.g. a line of the Fano subplane). This line will intersect every line of the
point subdesign in
point. Thus the new line sizes are
and
, plus a unique line of size
, giving a
-PBD and an
.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_185 sage: OA = OA_11_185() sage: print is_orthogonal_array(OA,11,185,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(11,185) True
-
sage.combinat.designs.database.
OA_11_254
()¶ Return an OA(11,254)
This constructions appears in [Greig99].
From a cyclic
whose base blocks contains 7,9, and 4 points in the congruence classes mod 3, build a
by ignoring the points of a congruence class. There exist
, which gives the
.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_254 sage: OA = OA_11_254() sage: print is_orthogonal_array(OA,11,254,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(11,254) True
-
sage.combinat.designs.database.
OA_11_640
()¶ Returns an OA(11,640)
Published by Julian R. Abel in [AbelThesis] (uses the fact that
is the product of a power of
and a prime number).
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_640 sage: OA = OA_11_640() # not tested (too long) sage: print is_orthogonal_array(OA,11,640,2) # not tested (too long) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(11,640) True
-
sage.combinat.designs.database.
OA_11_80
()¶ Return an OA(11,80)
As explained in the Handbook III.3.76 [DesignHandbook]. Uses the fact that
and that
is prime.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_80 sage: OA = OA_11_80() sage: print is_orthogonal_array(OA,11,80,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(11,80) True
-
sage.combinat.designs.database.
OA_12_522
()¶ Return an OA(12,522)
This design is built by the slightly more general construction
OA_520_plus_x()
.EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_12_522 sage: OA = OA_12_522() sage: print is_orthogonal_array(OA,12,522,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(12,522) True
-
sage.combinat.designs.database.
OA_14_524
()¶ Return an OA(14,524)
This design is built by the slightly more general construction
OA_520_plus_x()
.EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_14_524 sage: OA = OA_14_524() sage: print is_orthogonal_array(OA,14,524,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(14,524) True
-
sage.combinat.designs.database.
OA_15_112
()¶ Returns an OA(15,112)
Published by Julian R. Abel in [AbelThesis]. Uses the fact that 112 =
and that
is prime.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_15_112 sage: OA = OA_15_112() sage: print is_orthogonal_array(OA,15,112,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(15,112) True
-
sage.combinat.designs.database.
OA_15_224
()¶ Returns an OA(15,224)
Published by Julian R. Abel in [AbelThesis] (uses the fact that
is a product of a power of
and a prime number).
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_15_224 sage: OA = OA_15_224() # not tested -- too long sage: print is_orthogonal_array(OA,15,224,2) # not tested -- too long True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(15,224) True
-
sage.combinat.designs.database.
OA_15_896
()¶ Returns an OA(15,896)
Uses the fact that
is the product of a power of
and a prime number.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_15_896 sage: OA = OA_15_896() # not tested -- too long (~2min) sage: print is_orthogonal_array(OA,15,896,2) # not tested -- too long True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(15,896) True
-
sage.combinat.designs.database.
OA_16_176
()¶ Returns an OA(16,176)
Published by Julian R. Abel in [AbelThesis]. Uses the fact that
is a product of a power of
and a prime number.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_16_176 sage: OA = OA_16_176() sage: print is_orthogonal_array(OA,16,176,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(16,176) True
-
sage.combinat.designs.database.
OA_16_208
()¶ Returns an OA(16,208)
Published by Julian R. Abel in [AbelThesis]. Uses the fact that
is a product of
and a prime number.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_16_208 sage: OA = OA_16_208() # not tested -- too long sage: print is_orthogonal_array(OA,16,208,2) # not tested -- too long True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(16,208) True
-
sage.combinat.designs.database.
OA_17_560
()¶ Returns an OA(17,560)
This OA is built in Corollary 2.2 of [Thwarts].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_17_560 sage: OA = OA_17_560() sage: print is_orthogonal_array(OA,17,560,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(17,560) True
-
sage.combinat.designs.database.
OA_20_352
()¶ Returns an OA(20,352)
Published by Julian R. Abel in [AbelThesis] (uses the fact that
is the product of a power of
and a prime number).
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_20_352 sage: OA = OA_20_352() # not tested (~25s) sage: print is_orthogonal_array(OA,20,352,2) # not tested (~25s) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(20,352) True
-
sage.combinat.designs.database.
OA_20_416
()¶ Returns an OA(20,416)
Published by Julian R. Abel in [AbelThesis] (uses the fact that
is the product of a power of
and a prime number).
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_20_416 sage: OA = OA_20_416() # not tested (~35s) sage: print is_orthogonal_array(OA,20,416,2) # not tested True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(20,416) True
-
sage.combinat.designs.database.
OA_20_544
()¶ Returns an OA(20,544)
Published by Julian R. Abel in [AbelThesis] (uses the fact that
is the product of a power of
and a prime number).
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_20_544 sage: OA = OA_20_544() # not tested (too long ~1mn) sage: print is_orthogonal_array(OA,20,544,2) # not tested True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(20,544) True
-
sage.combinat.designs.database.
OA_25_1262
()¶ Returns an OA(25,1262)
The construction is given in [Greig99]. In Julian R. Abel’s words:
Start with a cyclicor
-BIBD whose base block contains respectively
and
point in the residue classes mod 3. In the resulting BIBD, remove one of the three classes: the result is a
-PBD, from which the
is obtained.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_25_1262 sage: OA = OA_25_1262() # not tested -- too long sage: print is_orthogonal_array(OA,25,1262,2) # not tested -- too long True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(25,1262) True
-
sage.combinat.designs.database.
OA_520_plus_x
(x)¶ Return an
.
The consruction shared by Julian R. Abel works for
OA(10,520)
,OA(12,522)
, andOA(14,524)
.Let
and
. Build a
. Remove
points contained in a common block, add a new point
and create a block
for every (possibly truncated) group
. The result is a
. Note that all blocks of size
only intersect on
, and that the unique block
of size
intersects all blocks of size
on one point. Now:
- Build an
for each block of size 16
- Build an
for each block of size 17
- Build an
for each block of size 31 (with the hole on
).
- Build an
for each block
of size 32 (with the holes on
and
).
- Build an
on
.
Only a row
is missing from the
This construction is used in
OA(10,520)
,OA(12,522)
, andOA(14,524)
.EXAMPLE:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_520_plus_x sage: OA = OA_520_plus_x(0) # not tested (already tested in OA_10_520) sage: print is_orthogonal_array(OA,10,520,2) # not tested (already tested in OA_10_520) True
- Build an
-
sage.combinat.designs.database.
OA_7_18
()¶ Return an OA(7,18)
Proved in [JulianAbel13].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_18 sage: OA = OA_7_18() sage: print is_orthogonal_array(OA,7,18,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(7,18) True
-
sage.combinat.designs.database.
OA_7_66
()¶ Return an OA(7,66)
Construction shared by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_66 sage: OA = OA_7_66() sage: print is_orthogonal_array(OA,7,66,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(7,66) True
-
sage.combinat.designs.database.
OA_7_68
()¶ Return an OA(7,68)
Construction shared by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_68 sage: OA = OA_7_68() sage: print is_orthogonal_array(OA,7,68,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(7,68) True
-
sage.combinat.designs.database.
OA_7_74
()¶ Return an OA(7,74)
Construction shared by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_74 sage: OA = OA_7_74() sage: print is_orthogonal_array(OA,7,74,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(7,74) True
-
sage.combinat.designs.database.
OA_8_69
()¶ Return an OA(8,69)
Construction shared by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_8_69 sage: OA = OA_8_69() sage: print is_orthogonal_array(OA,8,69,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(8,69) True
-
sage.combinat.designs.database.
OA_8_76
()¶ Return an OA(8,76)
Construction shared by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_8_76 sage: OA = OA_8_76() sage: print is_orthogonal_array(OA,8,76,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(8,76) True
-
sage.combinat.designs.database.
OA_9_1078
()¶ Returns an OA(9,1078)
This is obtained through the generalized Brouwer-van Rees construction. Indeed,
and there exists an
.
Note
This function should be removed once
find_brouwer_van_rees_with_one_truncated_column()
can handle all incomplete orthogonal arrays obtained throughincomplete_orthogonal_array()
.EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_1078 sage: OA = OA_9_1078() # not tested -- ~3s sage: print is_orthogonal_array(OA,9,1078,2) # not tested -- ~3s True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(9,1078) True
-
sage.combinat.designs.database.
OA_9_120
()¶ Return an OA(9,120)
Construction shared by Julian R. Abel:
From a resolvable, one can obtain 7
or a resolvable
by forming a resolvable
on
for each block
in the BIBD. This gives a
(which is resolvable as the BIBD is resolvable).
See also
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_120 sage: OA = OA_9_120() sage: print is_orthogonal_array(OA,9,120,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(9,120) True
-
sage.combinat.designs.database.
OA_9_135
()¶ Return an OA(9,135)
Construction shared by Julian R. Abel:
This design can be built by Wilson’s method (
) applied to an Orthogonal Array
with 7 groups truncated to size 1 in such a way that a block contain 0, 1 or 3 points of the truncated groups.
This is possible, because
(the projective plane over
) is a subdesign in
(the projective plane over
); in a cyclic
or
the points
form such a subdesign (note that
and
and
).
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_135 sage: OA = OA_9_135() sage: print is_orthogonal_array(OA,9,135,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(9,135) True
As this orthogonal array requires a
cyclic difference set, we check that it is available:
sage: G,D = designs.difference_family(273,17,1) sage: G Ring of integers modulo 273
-
sage.combinat.designs.database.
OA_9_1612
()¶ Returns an OA(9,1612)
This is obtained through the generalized Brouwer-van Rees construction. Indeed,
and there exists an
.
Note
This function should be removed once
find_brouwer_van_rees_with_one_truncated_column()
can handle all incomplete orthogonal arrays obtained throughincomplete_orthogonal_array()
.EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_1612 sage: OA = OA_9_1612() # not tested -- ~6s sage: print is_orthogonal_array(OA,9,1612,2) # not tested -- ~6s True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(9,1612) True
-
sage.combinat.designs.database.
OA_9_40
()¶ Return an OA(9,40)
As explained in the Handbook III.3.62 [DesignHandbook]. Uses the fact that
and that
is prime.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_40 sage: OA = OA_9_40() sage: print is_orthogonal_array(OA,9,40,2) True
The design is available from the general constructor:
sage: designs.orthogonal_arrays.is_available(9,40) True
-
sage.combinat.designs.database.
QDM_19_6_1_1_1
()¶ Return a
-quasi-difference matrix.
Used to build an
Given in the Handbook III.3.49 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_19_6_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_19_6_1_1_1() sage: is_quasi_difference_matrix(M,G,6,1,1,1) True
-
sage.combinat.designs.database.
QDM_21_5_1_1_1
()¶ Return a
-quasi-difference matrix.
Used to build an
Given in the Handbook III.3.51 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_21_5_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_21_5_1_1_1() sage: is_quasi_difference_matrix(M,G,5,1,1,1) True
-
sage.combinat.designs.database.
QDM_21_6_1_1_5
()¶ Return a
-quasi-difference matrix.
Used to build an
Given in the Handbook III.3.53 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_21_6_1_1_5 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_21_6_1_1_5() sage: is_quasi_difference_matrix(M,G,6,1,1,5) True
-
sage.combinat.designs.database.
QDM_25_6_1_1_5
()¶ Return a
-quasi-difference matrix.
Used to build an
Given in the Handbook III.3.55 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_25_6_1_1_5 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_25_6_1_1_5() sage: is_quasi_difference_matrix(M,G,6,1,1,5) True
-
sage.combinat.designs.database.
QDM_33_6_1_1_1
()¶ Return a
-quasi-difference matrix.
Used to build an
Given in the Handbook III.3.57 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_33_6_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_33_6_1_1_1() sage: is_quasi_difference_matrix(M,G,6,1,1,1) True
-
sage.combinat.designs.database.
QDM_35_7_1_1_7
()¶ Return a
-quasi-difference matrix.
Used to build an
As explained in the Handbook III.3.63 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_35_7_1_1_7 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_35_7_1_1_7() sage: is_quasi_difference_matrix(M,G,7,1,1,7) True
-
sage.combinat.designs.database.
QDM_37_6_1_1_1
()¶ Return a
-quasi-difference matrix.
Used to build an
Given in the Handbook III.3.60 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_37_6_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_37_6_1_1_1() sage: is_quasi_difference_matrix(M,G,6,1,1,1) True
-
sage.combinat.designs.database.
QDM_45_7_1_1_9
()¶ Return a
-quasi-difference matrix.
Used to build an
As explained in the Handbook III.3.71 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_45_7_1_1_9 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_45_7_1_1_9() sage: is_quasi_difference_matrix(M,G,7,1,1,9) True
-
sage.combinat.designs.database.
QDM_54_7_1_1_8
()¶ Return a
-quasi-difference matrix.
Used to build an
As explained in the Handbook III.3.74 [DesignHandbook].
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_54_7_1_1_8 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_54_7_1_1_8() sage: is_quasi_difference_matrix(M,G,7,1,1,8) True
-
sage.combinat.designs.database.
QDM_57_9_1_1_8
()¶ Return a
-quasi-difference matrix.
Used to build an
Construction shared by Julian R. Abel
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_57_9_1_1_8 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_57_9_1_1_8() sage: is_quasi_difference_matrix(M,G,9,1,1,8) True
-
sage.combinat.designs.database.
RBIBD_120_8_1
()¶ Return a resolvable
This function output a list
L
ofblocks such that
L[i*15:(i+1)*15]
is a partition of.
Construction shared by Julian R. Abel:
Seiden’s method: Start with a cyclic
and let
be an hyperoval, i.e. a set of 18 points which intersects any block of the BIBD in either 0 points (153 blocks) or 2 points (120 blocks). Dualise this design and take these last 120 blocks as points in the design; blocks in the design will correspond to the
non-hyperoval points.
The design is also resolvable. In the original
take any point
in the hyperoval and consider a block
containing
. The
points in
that do not belong to the hyperoval correspond to
blocks forming a parallel class in the dualised design. The other
parallel classes come in a similar way, by using point
and the other
blocks containing
.
See also
EXAMPLES:
sage: from sage.combinat.designs.database import RBIBD_120_8_1 sage: from sage.combinat.designs.bibd import is_pairwise_balanced_design sage: RBIBD = RBIBD_120_8_1() sage: is_pairwise_balanced_design(RBIBD,120,[8]) True
It is indeed resolvable, and the parallel classes are given by 17 slices of consecutive 15 blocks:
sage: for i in range(17): ....: assert len(set(sum(RBIBD[i*15:(i+1)*15],[]))) == 120
The BIBD is available from the constructor:
sage: _ = designs.balanced_incomplete_block_design(120,8)
-
sage.combinat.designs.database.
cyclic_shift
(l, i)¶
-
sage.combinat.designs.database.
f
()¶ Return a
-quasi-difference matrix.
Used to build an
Construction shared by Julian R. Abel
EXAMPLE:
sage: from sage.combinat.designs.database import QDM_57_9_1_1_8 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_57_9_1_1_8() sage: is_quasi_difference_matrix(M,G,9,1,1,8) True