4
4
This module gathers everything related to Balanced Incomplete Block Designs. One can build a
5
5
BIBD (or check that it can be built) with :func:`balanced_incomplete_block_design`::
6
6
7
- sage: BIBD = designs.balanced_incomplete_block_design(7,3,1)
7
+ sage: BIBD = designs.balanced_incomplete_block_design(7,3,1) # optional - sage.schemes
8
8
9
9
In particular, Sage can build a `(v,k,1)`-BIBD when one exists for all `k\leq
10
10
5`. The following functions are available:
@@ -90,7 +90,7 @@ def biplane(n, existence=False):
90
90
91
91
sage: designs.biplane(4) # optional - sage.rings.finite_rings
92
92
(16,6,2)-Balanced Incomplete Block Design
93
- sage: designs.biplane(7, existence=True)
93
+ sage: designs.biplane(7, existence=True) # optional - sage.schemes
94
94
True
95
95
sage: designs.biplane(11)
96
96
(79,13,2)-Balanced Incomplete Block Design
@@ -153,9 +153,10 @@ def balanced_incomplete_block_design(v, k, lambd=1, existence=False, use_LJCR=Fa
153
153
154
154
EXAMPLES::
155
155
156
- sage: designs.balanced_incomplete_block_design(7, 3, 1).blocks()
156
+ sage: designs.balanced_incomplete_block_design(7, 3, 1).blocks() # optional - sage.schemes
157
157
[[0, 1, 3], [0, 2, 4], [0, 5, 6], [1, 2, 6], [1, 4, 5], [2, 3, 5], [3, 4, 6]]
158
- sage: B = designs.balanced_incomplete_block_design(66, 6, 1, use_LJCR=True) # optional - internet
158
+ sage: B = designs.balanced_incomplete_block_design(66, 6, 1, # optional - internet
159
+ ....: use_LJCR=True)
159
160
sage: B # optional - internet
160
161
(66,6,1)-Balanced Incomplete Block Design
161
162
sage: B.blocks() # optional - internet
@@ -387,33 +388,33 @@ def BruckRyserChowla_check(v, k, lambd):
387
388
Nonexistence of projective planes of order 6 and 14
388
389
389
390
sage: from sage.combinat.designs.bibd import BruckRyserChowla_check
390
- sage: BruckRyserChowla_check(43,7,1)
391
+ sage: BruckRyserChowla_check(43,7,1) # optional - sage.schemes
391
392
False
392
- sage: BruckRyserChowla_check(211,15,1)
393
+ sage: BruckRyserChowla_check(211,15,1) # optional - sage.schemes
393
394
False
394
395
395
396
Existence of symmetric BIBDs with parameters `(79,13,2)` and `(56,11,2)`
396
397
397
398
sage: from sage.combinat.designs.bibd import BruckRyserChowla_check
398
- sage: BruckRyserChowla_check(79,13,2)
399
+ sage: BruckRyserChowla_check(79,13,2) # optional - sage.schemes
399
400
True
400
- sage: BruckRyserChowla_check(56,11,2)
401
+ sage: BruckRyserChowla_check(56,11,2) # optional - sage.schemes
401
402
True
402
403
403
404
TESTS:
404
405
405
406
Test some non-symmetric parameters::
406
407
407
408
sage: from sage.combinat.designs.bibd import BruckRyserChowla_check
408
- sage: BruckRyserChowla_check(89,11,3)
409
+ sage: BruckRyserChowla_check(89,11,3) # optional - sage.schemes
409
410
Unknown
410
- sage: BruckRyserChowla_check(25,23,2)
411
+ sage: BruckRyserChowla_check(25,23,2) # optional - sage.schemes
411
412
Unknown
412
413
413
414
Clearly wrong parameters satisfying the theorem::
414
415
415
416
sage: from sage.combinat.designs.bibd import BruckRyserChowla_check
416
- sage: BruckRyserChowla_check(13,25,50)
417
+ sage: BruckRyserChowla_check(13,25,50) # optional - sage.schemes
417
418
True
418
419
419
420
"""
@@ -569,9 +570,9 @@ def BIBD_from_TD(v,k,existence=False):
569
570
First construction::
570
571
571
572
sage: from sage.combinat.designs.bibd import BIBD_from_TD
572
- sage: BIBD_from_TD(25,5,existence=True)
573
+ sage: BIBD_from_TD(25,5,existence=True) # optional - sage.schemes
573
574
True
574
- sage: _ = BlockDesign(25,BIBD_from_TD(25,5))
575
+ sage: _ = BlockDesign(25,BIBD_from_TD(25,5)) # optional - sage.schemes
575
576
576
577
Second construction::
577
578
@@ -866,8 +867,8 @@ def BIBD_from_PBD(PBD, v, k, check=True, base_cases=None):
866
867
sage: from sage.combinat.designs.bibd import PBD_4_5_8_9_12
867
868
sage: from sage.combinat.designs.bibd import BIBD_from_PBD
868
869
sage: from sage.combinat.designs.bibd import is_pairwise_balanced_design
869
- sage: PBD = PBD_4_5_8_9_12(17)
870
- sage: bibd = is_pairwise_balanced_design(BIBD_from_PBD(PBD,52,4),52,[4])
870
+ sage: PBD = PBD_4_5_8_9_12(17) # optional - sage.schemes
871
+ sage: bibd = is_pairwise_balanced_design(BIBD_from_PBD(PBD,52,4),52,[4]) # optional - sage.schemes
871
872
"""
872
873
if base_cases is None :
873
874
base_cases = {}
@@ -904,11 +905,11 @@ def _relabel_bibd(B,n,p=None):
904
905
905
906
- ``n`` (integer) -- number of points.
906
907
907
- - ``p`` (optional) -- the point that will be labeled with n-1.
908
+ - ``p`` (optional) -- the point that will be labeled with ` n-1` .
908
909
909
910
EXAMPLES::
910
911
911
- sage: designs.balanced_incomplete_block_design(40,4).blocks() # indirect doctest
912
+ sage: designs.balanced_incomplete_block_design(40,4).blocks() # indirect doctest, optional - sage.schemes
912
913
[[0, 1, 2, 12], [0, 3, 6, 9], [0, 4, 8, 10],
913
914
[0, 5, 7, 11], [0, 13, 26, 39], [0, 14, 25, 28],
914
915
[0, 15, 27, 38], [0, 16, 22, 32], [0, 17, 23, 34],
@@ -950,7 +951,7 @@ def PBD_4_5_8_9_12(v, check=True):
950
951
951
952
EXAMPLES::
952
953
953
- sage: designs.balanced_incomplete_block_design(40,4).blocks() # indirect doctest
954
+ sage: designs.balanced_incomplete_block_design(40,4).blocks() # indirect doctest, optional - sage.schemes
954
955
[[0, 1, 2, 12], [0, 3, 6, 9], [0, 4, 8, 10],
955
956
[0, 5, 7, 11], [0, 13, 26, 39], [0, 14, 25, 28],
956
957
[0, 15, 27, 38], [0, 16, 22, 32], [0, 17, 23, 34],
@@ -1029,7 +1030,7 @@ def _PBD_4_5_8_9_12_closure(B):
1029
1030
1030
1031
EXAMPLES::
1031
1032
1032
- sage: designs.balanced_incomplete_block_design(40,4).blocks() # indirect doctest
1033
+ sage: designs.balanced_incomplete_block_design(40,4).blocks() # indirect doctest, optional - sage.schemes
1033
1034
[[0, 1, 2, 12], [0, 3, 6, 9], [0, 4, 8, 10],
1034
1035
[0, 5, 7, 11], [0, 13, 26, 39], [0, 14, 25, 28],
1035
1036
[0, 15, 27, 38], [0, 16, 22, 32], [0, 17, 23, 34],
@@ -1569,16 +1570,14 @@ def arc(self, s=2, solver=None, verbose=0, *, integrality_tolerance=1e-3):
1569
1570
1570
1571
EXAMPLES::
1571
1572
1572
- sage: B = designs.balanced_incomplete_block_design(21, 5)
1573
- sage: a2 = B.arc()
1574
- sage: a2 # random
1573
+ sage: B = designs.balanced_incomplete_block_design(21, 5) # optional - sage.schemes
1574
+ sage: a2 = B.arc(); a2 # random # optional - sage.schemes
1575
1575
[5, 9, 10, 12, 15, 20]
1576
- sage: len(a2)
1576
+ sage: len(a2) # optional - sage.schemes
1577
1577
6
1578
- sage: a4 = B.arc(4)
1579
- sage: a4 # random
1578
+ sage: a4 = B.arc(4); a4 # random # optional - sage.schemes
1580
1579
[0, 1, 2, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20]
1581
- sage: len(a4)
1580
+ sage: len(a4) # optional - sage.schemes
1582
1581
16
1583
1582
1584
1583
The `2`-arc and `4`-arc above are maximal. One can check that they
@@ -1591,9 +1590,9 @@ def arc(self, s=2, solver=None, verbose=0, *, integrality_tolerance=1e-3):
1591
1590
sage: 1 + r*3
1592
1591
16
1593
1592
1594
- sage: B.trace(a2).is_t_design(2, return_parameters=True)
1593
+ sage: B.trace(a2).is_t_design(2, return_parameters=True) # optional - sage.schemes
1595
1594
(True, (2, 6, 2, 1))
1596
- sage: B.trace(a4).is_t_design(2, return_parameters=True)
1595
+ sage: B.trace(a4).is_t_design(2, return_parameters=True) # optional - sage.schemes
1597
1596
(True, (2, 16, 4, 1))
1598
1597
1599
1598
Some other examples which are not maximal::
0 commit comments