Bounds on the number of mutually orthogonal Latin squares - Combinatorics

Skip to content
Back to top
View this page
Edit this page

# Bounds on the number of mutually orthogonal Latin squares

This module contains known lower bounds on the number of mutually orthogonal Latin squares (MOLS) of a given size, and consists (almost) entirely of an internal, constant tuple of Python integers corresponding to Table 3.87 in the Handbook of Combinatorial Designs, 2nd edition, by Colbourn and Dinitz. One public function, `lower_bound()`, is provided to access it.

Make sure we have all of the entries:

Sage

    sage: from sage.combinat.designs import MOLS_handbook_data
    sage: len(MOLS_handbook_data._LOWER_BOUNDS)
    10000

Python

    >>> from sage.all import *
    >>> from sage.combinat.designs import MOLS_handbook_data
    >>> len(MOLS_handbook_data._LOWER_BOUNDS)
    10000

Jeff Dinitz’s website (at UVM) provides the following two updates to the table as printed in the second edition:

Sage

    sage: from sage.combinat.designs import MOLS_handbook_data
    sage: MOLS_handbook_data.lower_bound(60)
    5
    sage: MOLS_handbook_data.lower_bound(7968)
    31

[Python]

    >>> from sage.all import *
    >>> from sage.combinat.designs import MOLS_handbook_data
    >>> MOLS_handbook_data.lower_bound(Integer(60))
    5
    >>> MOLS_handbook_data.lower_bound(Integer(7968))
    31

sage.combinat.designs.MOLS_handbook_data.lower_bound(order)

  Return the best known lower bound on the number of MOLS of the given `order`.

  The source of this information is Table 3.87 in the Handbook of Combinatorial Designs, 2nd edition, by Colbourn and Dinitz. A few updates have subsequently been provided on Jeff Dinitz’s website.

  ## Parameters

  orderint

    The order (also known as the side) for which you’d like a lower bound on the number of MOLS instances. In the language of the Handbook, this is `n`, and it should be between 0 and 9999.

  ## Returns

  int

    A lower bound on the number of MOLS.

  ## Raises

  IndexError

    If you ask for an order that isn’t contained in the table.

  ## Examples

  There are no MOLS of order zero:

  Sage

      sage: from sage.combinat.designs import MOLS_handbook_data
      sage: MOLS_handbook_data.lower_bound(0)
      0

  Python

      >>> from sage.all import *
      >>> from sage.combinat.designs import MOLS_handbook_data
      >>> MOLS_handbook_data.lower_bound(Integer(0))
      0