This module implements known constructions combinatorial designs, and in particular of Orthogonal Arrays. Most of them come from the chapter on Mutually Orthogonal Latin Squares from the Handbook of Combinatorial Designs.
Most of this would only be a dream without the mathematical knowledge and help of Julian R. Abel.
All the designs returned by these functions can be obtained through the designs.<tab> functions.
Implemented constructions :
Dictionaries
The functions defined here are used by
orthogonal_array(). Thus, the
functions are indexed by dictionary which associates to every integer n a
pair (k,f) where f is a function such that f() is a . This
dictionary is defined right after the constructions of OA in the file.
The same goes for the constructions of MOLS, used by mutually_orthogonal_latin_squares().
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, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46) Handbook of Combinatorial Designs (2ed) Charles Colbourn, Jeffrey Dinitz Chapman & Hall/CRC 2012 |
An Abelian difference family on .
This is the example 7.26 of [Stinson2004].
EXAMPLES:
sage: from sage.combinat.designs.database import ADF_5x5_4_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G,D = ADF_5x5_4_1()
sage: is_difference_family(G,D,25,4,1)
True
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_121_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_121_5_1()
sage: is_difference_family(G,D,121,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(121,5,1)
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_141_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_141_5_1()
sage: is_difference_family(G,D,141,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(141,5,1)
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_161_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_161_5_1()
sage: is_difference_family(G,D,161,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(161,5,1)
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_201_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_201_5_1()
sage: is_difference_family(G,D,201,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(201,5,1)
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_21_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_21_5_1()
sage: is_difference_family(G,D,21,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(21,5,1)
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_221_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_221_5_1()
sage: is_difference_family(G,D,221,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(221,5,1)
A cyclic -difference family.
It appears as example 7.28 in [Stinson2004] and in the examples VI.16.14 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_37_4_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_37_4_1()
sage: is_difference_family(G,D,37,4,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(37,4,1)
A cyclic -difference family.
From the examples VI.16.16 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_81_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_81_5_1()
sage: is_difference_family(G,D,81,5,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(81,5,1)
A cyclic -difference family.
From the examples VI.16.18 of [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.database import CDF_91_6_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_91_6_1()
sage: is_difference_family(G,D,91,6,1)
True
The difference family is available from the constructor:
sage: _ = designs.difference_family(91,6,1)
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.mutually_orthogonal_latin_squares(2,10,existence=True)
True
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
Return four MOLS of order 14
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_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.mutually_orthogonal_latin_squares(4,14,existence=True)
True
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.mutually_orthogonal_latin_squares(4,15,existence=True)
True
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.mutually_orthogonal_latin_squares(3,18,existence=True)
True
Return an OA(10,100)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_100
sage: OA = OA_10_100()
sage: print is_orthogonal_array(OA,10,100,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(10,100,existence=True)
True
Return an OA(10,154)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_154
sage: OA = OA_10_154()
sage: print is_orthogonal_array(OA,10,154,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(10,154,existence=True)
True
Return an OA(10,36)
As explained in the Handbook III.3.59 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_36
sage: OA = OA_10_36()
sage: print is_orthogonal_array(OA,10,36,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(10,36,existence=True)
True
Return an OA(10,48)
As explained in the Handbook III.3.67 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_48
sage: OA = OA_10_48()
sage: print is_orthogonal_array(OA,10,48,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(10,48,existence=True)
True
Return an OA(10,82)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_82
sage: OA = OA_10_82()
sage: print is_orthogonal_array(OA,10,82,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(10,82,existence=True)
True
Return an OA(11,80)
As explained in the Handbook III.3.76 [DesignHandbook].
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_array(11,80,existence=True)
True
Return an OA(12,144)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_144
sage: OA = OA_12_144()
sage: print is_orthogonal_array(OA,12,144,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(12,144,existence=True)
True
Return an OA(12,210)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_210
sage: OA = OA_12_210()
sage: print is_orthogonal_array(OA,12,210,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(12,210,existence=True)
True
Return an OA(12,276)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_276
sage: OA = OA_12_276()
sage: print is_orthogonal_array(OA,12,276,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(12,276,existence=True)
True
Return an OA(12,298)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_298
sage: OA = OA_12_298()
sage: print is_orthogonal_array(OA,12,298,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(12,298,existence=True)
True
Return an OA(12,342)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_342
sage: OA = OA_12_342()
sage: print is_orthogonal_array(OA,12,342,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(12,342,existence=True)
True
Return an OA(12,474)
Given by Julian R. Abel, using a from the Handbook
[DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_474
sage: OA = OA_12_474()
sage: print is_orthogonal_array(OA,12,474,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(12,474,existence=True)
True
Return an OA(18,273)
Given by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_18_273
sage: OA = OA_18_273()
sage: print is_orthogonal_array(OA,18,273,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(18,273,existence=True)
True
Return an OA(33,993)
Given by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_33_993
sage: OA = OA_33_993() # not tested -- too long
sage: print is_orthogonal_array(OA,33,993,2) # not tested -- too long
True
The design is available from the general constructor:
sage: designs.orthogonal_array(33,993,existence=True)
True
Return an OA(5,22)
As explained in the Handbook III.3.51 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_5_22
sage: OA = OA_5_22()
sage: print is_orthogonal_array(OA,5,22,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(5,22,existence=True)
True
Return an OA(6,20)
As explained in the Handbook III.3.49 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_20
sage: OA = OA_6_20()
sage: print is_orthogonal_array(OA,6,20,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(6,20,existence=True)
True
Return an OA(6,26)
As explained in the Handbook III.3.53 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_26
sage: OA = OA_6_26()
sage: print is_orthogonal_array(OA,6,26,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(6,26,existence=True)
True
Return an OA(6,30)
As explained in the Handbook III.3.55 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_30
sage: OA = OA_6_30()
sage: print is_orthogonal_array(OA,6,30,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(6,30,existence=True)
True
Return an OA(6,34)
As explained in the Handbook III.3.57 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_34
sage: OA = OA_6_34()
sage: print is_orthogonal_array(OA,6,34,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(6,34,existence=True)
True
Return an OA(6,38)
As explained in the Handbook III.3.60 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_38
sage: OA = OA_6_38()
sage: print is_orthogonal_array(OA,6,38,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(6,38,existence=True)
True
Return an OA(6,46)
As explained in the Handbook III.3.66 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_46
sage: OA = OA_6_46()
sage: print is_orthogonal_array(OA,6,46,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(6,46,existence=True)
True
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_array(7,18,existence=True)
True
Return an OA(7,21)
As explained in the Handbook III.3.50 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_21
sage: OA = OA_7_21()
sage: print is_orthogonal_array(OA,7,21,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,21,existence=True)
True
Return an OA(7,28)
As explained in the Handbook III.3.54 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_28
sage: OA = OA_7_28()
sage: print is_orthogonal_array(OA,7,28,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,28,existence=True)
True
Return an OA(7,33)
As explained in the Handbook III.3.56 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_33
sage: OA = OA_7_33()
sage: print is_orthogonal_array(OA,7,33,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,33,existence=True)
True
Return an OA(7,35)
As explained in the Handbook III.3.58 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_35
sage: OA = OA_7_35()
sage: print is_orthogonal_array(OA,7,35,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,35,existence=True)
True
Return an OA(7,39)
As explained in the Handbook III.3.61 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_39
sage: OA = OA_7_39()
sage: print is_orthogonal_array(OA,7,39,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,39,existence=True)
True
Return an OA(7,42)
As explained in the Handbook III.3.63 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_42
sage: OA = OA_7_42()
sage: print is_orthogonal_array(OA,7,42,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,42,existence=True)
True
Return an OA(7,44)
As explained in the Handbook III.3.64 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_44
sage: OA = OA_7_44()
sage: print is_orthogonal_array(OA,7,44,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,44,existence=True)
True
Return an OA(7,51)
As explained in the Handbook III.3.69 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_51
sage: OA = OA_7_51()
sage: print is_orthogonal_array(OA,7,51,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,51,existence=True)
True
Return an OA(7,52)
As explained in the Handbook III.3.70 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_52
sage: OA = OA_7_52()
sage: print is_orthogonal_array(OA,7,52,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,52,existence=True)
True
Return an OA(7,54)
As explained in the Handbook III.3.71 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_54
sage: OA = OA_7_54()
sage: print is_orthogonal_array(OA,7,54,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,54,existence=True)
True
Return an OA(7,60)
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_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_60
sage: OA = OA_7_60()
sage: print is_orthogonal_array(OA,7,60,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,60,existence=True)
True
Return an OA(7,62)
As explained in the Handbook III.3.74 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_62
sage: OA = OA_7_62()
sage: print is_orthogonal_array(OA,7,62,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(7,62,existence=True)
True
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_array(7,66,existence=True)
True
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_array(7,68,existence=True)
True
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_array(7,74,existence=True)
True
Return an OA(8,45)
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_orthogonal_array
sage: from sage.combinat.designs.database import OA_8_45
sage: OA = OA_8_45()
sage: print is_orthogonal_array(OA,8,45,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(8,45,existence=True)
True
Return an OA(8,50)
As explained in the Handbook III.3.68 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_8_50
sage: OA = OA_8_50()
sage: print is_orthogonal_array(OA,8,50,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(8,50,existence=True)
True
Return an OA(8,55)
As explained in the Handbook III.3.72 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_8_55
sage: OA = OA_8_55()
sage: print is_orthogonal_array(OA,8,55,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(8,55,existence=True)
True
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_array(8,69,existence=True)
True
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_array(8,76,existence=True)
True
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_array(9,120,existence=True)
True
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_array(9,135,existence=True)
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
Return an OA(9,24)
As explained in the Handbook III.3.52 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_24
sage: OA = OA_9_24()
sage: print is_orthogonal_array(OA,9,24,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(9,24,existence=True)
True
Return an OA(9,40)
As explained in the Handbook III.3.62 [DesignHandbook].
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_array(9,40,existence=True)
True
Return an OA(9,56)
As explained in the Handbook III.3.73 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_56
sage: OA = OA_9_56()
sage: print is_orthogonal_array(OA,9,56,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(9,56,existence=True)
True
Return an OA(9,57)
Given by Julian R. Abel.
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_57
sage: OA = OA_9_57()
sage: print is_orthogonal_array(OA,9,57,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(9,57,existence=True)
True
Return an OA(9,65)
Construction shared by Julian R. Abel
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_65
sage: OA = OA_9_65()
sage: print is_orthogonal_array(OA,9,65,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(9,65,existence=True)
True
Return an OA(9,75)
As explained in the Handbook III.3.75 [DesignHandbook].
EXAMPLES:
sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_75
sage: OA = OA_9_75()
sage: print is_orthogonal_array(OA,9,75,2)
True
The design is available from the general constructor:
sage: designs.orthogonal_array(9,75,existence=True)
True
Return a resolvable
This function output a list L of blocks 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 which intersects any block of the BIBD in either 0 (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 _check_pbd
sage: RBIBD = RBIBD_120_8_1()
sage: _ = _check_pbd(RBIBD,120,[8])
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)
Return a as built in [Hanani75].
This design is Lemma 3.21 from [Hanani75].
EXAMPLE:
sage: from sage.combinat.designs.database import TD_6_12
sage: from sage.combinat.designs.orthogonal_arrays import is_transversal_design
sage: TD = TD_6_12()
sage: is_transversal_design(TD,6,12)
True
The design is available from the general constructor:
sage: designs.transversal_design(6,12,existence=True)
True
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. |
x.__init__(...) initializes x; see help(type(x)) for signature