#15310: Wilson's construction of Transversal Designs/Orthogonal Arrays/MOLS
-------------------------+-------------------------------------------------
       Reporter:         |        Owner:
  ncohen                 |       Status:  needs_review
           Type:         |    Milestone:  sage-6.2
  enhancement            |   Resolution:
       Priority:  major  |    Merged in:
      Component:         |    Reviewers:
  combinatorics          |  Work issues:
       Keywords:         |       Commit:
        Authors:         |  62f0158c281c55523a532d5ef21c666ba9c7dc3d
  Nathann Cohen          |     Stopgaps:
Report Upstream:  N/A    |
         Branch:         |
  u/ncohen/15310         |
   Dependencies:         |
  #15287, #15431         |
-------------------------+-------------------------------------------------

Comment (by ncohen):

 Yo !

 > Brett Stevens is in sabatical in Bordeaux and explains me in full
 details the Wilson  construction. Good news: I have enough background to
 starts seriously the review.

 Ahahaha. Well you must have more background that I have then, I am jealous
 `:-P`

 > 1) There is a much simpler construction than the Wilson one, often
 called the Kronecker product, which from a TD(k,t) and a TD(k,n) builds a
 TD(k,nt) (this is basically the case u=0 in Wilson construction). We found
 that Wilson construction does not apply to a TD(3,6) but the Kronecker
 product does! Do you prefer opening a new ticket or including it in this
 one?

 I would say open a new ticket because this ticket does not only implement
 Wilson's construction, it also adds some "availability" flags to
 constructors and thus this ticket is a dependency for several others.
 Hence if we implement it in another ticket the other ones can be reviewed
 in the meantime.

 I also got word from Julian Abel that the Wilson Decomposition I
 implemented was not the best one, and that some variants may be useful. I
 copy/paste what he told me here (he probably will not mind)

 {{{
 I note from  your list of  known MOLS that you've used Wilson's theorem
 with 1 truncated group, but not more.  The next most important variants
 are
 where there are (1) 2 truncated groups (2) 1 spike block or 1 truncated
 group and a spike. These variants are as follows:

 Theorem 1: If  there are k+2 MOLS(t),    and k MOLS(s) for s=g, g+1, g+2,
 u_1, u_2,  where 0 \leq u_1, u_2 \leq t, then there are k MOLS(gt + u_1 +
 u_2).
 Theorem 2: If  there are k+x MOLS(t),     and k MOLS(s) for s=g, g+1, g+x,
 g+x,  where 0  \leq u_1,   u_2 \leq t, x> 0 then there are k MOLS(gt +
 x).
 Theorem 3: If  there are k+x+1 MOLS(t),  and k MOLS(s) for s=g, g+1, g+2,
 g+x, u_1,  where 0 \ leq  u_1  \leq t, x > 0, then there are k MOLS(gt + x
 + u_1).

 For instance, Th. 1 gives 6 MOLS for v=106 = 7. 13 + 7 + 8.  Theorem 2
 gives 7 MOLS(v) for v=155 = 8.19 + 3. And Theorem 3 gives 6 MOLS(v) for
 v=148= 7.19 + 6 + 9.
 }}}

 He also pointed me toward references where I can read those constructions,
 but I have not begun this step yet and he told me it would be hard to
 read. Still, it has to be done.

 > 2) The programming design with TD calling OA is very bad. In OA there is
 a nice `EmptySetError` which has an important mathematical meaning. But if
 you ask for a transversal design you get instead a `NotImplementedError`
 which is much less informative

 How is that a result of TD calling OA ?

 > In the ideal world, Sage would only return a design or raise an
 `EmptySetError` with a meaningful message mentionning a theorem. And I
 learned from Brett that there exist several situations where we know
 mathematically that a TD(k,n) does not exist. When `availability=True` it
 would be nice to get a troolean: True (means yes), False (means no),
 Unknown in `sage.misc.unknown` (means I do not know).

 Well. No problem if "if Unknown" is equivalent to "if False".

 > And then, you might change the name `availability` to `existence`.

 Could we do that on top of #12267 ? I would prefer those patches to be
 merged like that, and then we can update stuff. Otherwise it means fixing
 many conflicts with the stuff above, but I agree that it is a good idea.

 > 3) The loop where you test the Wilson construction is 2.86 seconds on my
 (dual core) computer. I am not sure it deserves a `# long time`.

 Well, I usually set `#long ` even for 2 seconds. Most tests are faster
 than that, andyou can have many "2 seconds" tests. I don't mind
 adding/removing flags like that,  but you can also add a commit if you
 like.

 > 4) Could you mention the following reference as a todo
 > - AUTHOR = Colbourn, Charles J. and Dinitz, Jeffrey H.
 > - TITLE = Making the MOLS table
 > - BOOKTITLE = Computational and constructive design theory
 > - SERIES = Math. Appl.
 > - VOLUME = 368
 > - PAGES = 67--134
 > - PUBLISHER = Kluwer Acad. Publ., Dordrecht
 > - YEAR = 1996
 > They have a slightly improved Wilson construction for u=1, 2 that
 requires less material (ie not four full smaller TDs)... and hence gives
 more cases where the construction applies.

 okayokay, good idea ! I will add a commit in a second.

 Nathann

--
Ticket URL: <http://trac.sagemath.org/ticket/15310#comment:25>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to