This module gathers everything related to Group-Divisible Designs. The constructions defined here can be accessed through designs.<tab>:
sage: designs.group_divisible_design(14,{4},{2})
Group Divisible Design on 14 points of type 2^7
The main function implemented here is group_divisible_design() (which calls all others) and the main class is GroupDivisibleDesign. The following functions are available:
group_divisible_design() | Return a ![]() |
GDD_4_2() | Return a ![]() ![]() ![]() |
Return a -GDD for
a prime power with
.
This method implements Lemma VII.5.17 from [BJL99] (p.495).
INPUT:
q (integer)
existence (boolean) – instead of building the design, return:
- True – meaning that Sage knows how to build the design
- Unknown – meaning that Sage does not know how to build the design, but that the design may exist (see sage.misc.unknown).
- False – meaning that the design does not exist.
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 to True by default.
EXAMPLE:
sage: from sage.combinat.designs.group_divisible_designs import GDD_4_2
sage: GDD_4_2(7,existence=True)
True
sage: GDD_4_2(7)
Group Divisible Design on 14 points of type 2^7
sage: GDD_4_2(8,existence=True)
Unknown
sage: GDD_4_2(8)
Traceback (most recent call last):
...
NotImplementedError
Bases: sage.combinat.designs.incidence_structures.IncidenceStructure
Group Divisible Design (GDD)
Let and
be sets of positive integers and let
be a positive
integer. A Group Divisible Design of index
and order
is a
triple
where:
If and
has exactly
groups of cardinality
then
is said to have type
.
INPUT:
EXAMPLE:
sage: from sage.combinat.designs.group_divisible_designs import GroupDivisibleDesign
sage: TD = designs.transversal_design(4,10)
sage: groups = [range(i*10,(i+1)*10) for i in range(4)]
sage: GDD = GroupDivisibleDesign(40,groups,TD); GDD
Group Divisible Design on 40 points of type 10^4
Return the groups of the Group-Divisible Design.
EXAMPLE:
sage: from sage.combinat.designs.group_divisible_designs import GroupDivisibleDesign
sage: TD = designs.transversal_design(4,10)
sage: groups = [range(i*10,(i+1)*10) for i in range(4)]
sage: GDD = GroupDivisibleDesign(40,groups,TD); GDD
Group Divisible Design on 40 points of type 10^4
sage: GDD.groups()
[[0, 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]]
TESTS:
Non-integer ground set:
sage: TD=designs.transversal_design(5,5)
sage: TD.relabel({i:chr(97+i) for i in range(25)})
sage: TD.groups()
[['a', 'b', 'c', 'd', 'e'],
['f', 'g', 'h', 'i', 'j'],
['k', 'l', 'm', 'n', 'o'],
['p', 'q', 'r', 's', 't'],
['u', 'v', 'w', 'x', 'y']]
Return a -Group Divisible Design.
A -GDD is a pair
where:
For more information, see the documentation of GroupDivisibleDesign or PairwiseBalancedDesign.
INPUT:
v (integer)
K,G (sets of integers)
existence (boolean) – instead of building the design, return:
- True – meaning that Sage knows how to build the design
- Unknown – meaning that Sage does not know how to build the design, but that the design may exist (see sage.misc.unknown).
- False – meaning that the design does not exist.
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 to True by default.
Note
The GDD returned by this function are defined on range(v), and its groups are sets of consecutive integers.
EXAMPLES:
sage: designs.group_divisible_design(14,{4},{2})
Group Divisible Design on 14 points of type 2^7