\chapter{有限几何与拉丁方}
\section{``小世界''：有限几何}
\subsection{The Fano Plane}
下面的这个平面被称作Fano Plane：
\begin{figure}[H]
    \centering
    \begin{tikzpicture}
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a) at (0,0) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b) at (30:1) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c) at (150:1) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (d) at (270:1) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (e) at (-30:2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (f) at (90:2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (g) at (210:2) {};
        \draw (a)--(b) (a)--(c) (a)--(d) (a)--(e) (a)--(f) (a)--(g) (e)--(b)--(f)--(c)--(g)--(d)--(e) (a) circle (1);
    \end{tikzpicture}
    \caption{The Fano plane}
    \label{The Fano plane}
\end{figure}
与我们之前所学的欧氏几何不同，这个平面是由七个点与连接它们的线组成的。注意，图中一些未涂黑的线之间的交点不是图中的点。

Fano Plane有很多很好的性质。
\begin{enumerate}[label=(\alph{*})]
    \item 任何两个点可以唯一确定一条线。
    \item 任何两条线都有唯一的交点。
    \item 任何一条线上都有至少三个点。
\end{enumerate}

有了这三条性质的条件，我们可以推出Fano Plane和其它满足这些条件的图还有如下的性质:
\begin{enumerate}[label=(\alph{*}), resume]
    \item 所有的线上都有相同数量的点。
    \item 所有的点都有相同数量的线穿过。
\end{enumerate}

同时，如果我们将某两个点的名字交换，我们总有方法可以对应改变其它所有点的名字，使得变换后图中点的相互关系与变换前完全相同，即
\begin{enumerate}[label=(\alph{*}), resume]
    \item 所有的点是相似的，所有的边也是相似的。
\end{enumerate}

\begin{definition}[有限投影平面]
    对一个含有有限元素（称为点）的集合，它的一些子集称为边。如果它满足：
    \begin{enumerate}[label=(\alph{*})]
        \item 任何两个点可以唯一确定一条线；
        \item 任何两条线都有唯一的交点；
        \item 任何一条线上都有至少三个点，
    \end{enumerate}
    则称这个平面为一个\newnoun{有限投影面}{finite projective plane}。
\end{definition}

下面让我们来看另外一种有限的图形。

\subsection{The Tictactoe Plane}
\begin{figure}[H]
    \centering
    \subfloat{
        \begin{tikzpicture}
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a1) at (0,0) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a2) at (2,0) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a3) at (4,0) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b1) at (0,2) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b2) at (2,2) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b3) at (4,2) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c1) at (0,4) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c2) at (2,4) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c3) at (4,4) {};

            \draw (a1)--(a3) (b1)--(b3) (c1)--(c3) (a1)--(c1) (a2)--(c2) (a3)--(c3);
            \draw (c1)--(a3) (c2) ..controls (2.4,3.8) and (3.8,3)..(b3).. controls (3.8,1) and (2,0.6)..(a1);
            \draw (c3) ..controls (2,3.4) and (0.2,3).. (b1) .. controls(0.2,1) and (1.6,0.2) ..(a2);
            \draw[dashed] (c1)..controls (2,3.4) and (3.8,3) .. (b3) .. controls (3.8,1) and (2.4,0.2) .. (a2);
            \draw[dashed] (c2)..controls (1.6, 3.8) and (0.2,3) .. (b1) .. controls (0.2,1) and (2,0.6) ..(a3);
            \draw[dashed] (a1)--(c3);
        \end{tikzpicture}
    }
    \hspace{2cm}
    \subfloat{
        \begin{tikzpicture}
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a1) at (0,0) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a2) at (2,0) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a3) at (4,0) {};
            \node[draw=black, circle, inner sep=0, minimum size=8pt] (a4) at (6,0) {};
            \node[draw=black, circle, inner sep=0, minimum size=8pt] (a5) at (8,0) {};

            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b1) at (0,2) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b2) at (2,2) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b3) at (4,2) {};
            \node[draw=black, circle, inner sep=0, minimum size=8pt] (b4) at (6,2) {};
            \node[draw=black, circle, inner sep=0, minimum size=8pt] (b5) at (8,2) {};

            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c1) at (0,4) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c2) at (2,4) {};
            \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c3) at (4,4) {};
            \node[draw=black, circle, inner sep=0, minimum size=8pt] (c4) at (6,4) {};
            \node[draw=black, circle, inner sep=0, minimum size=8pt] (c5) at (8,4) {};

            \draw (a1)--(a3) (b1)--(b3) (c1)--(c3) (a1)--(c1) (a2)--(c2) (a3)--(c3) (c1)--(a3) (c2)--(a4) (c3)--(b4)--(a5);
            \draw[dashed] (a1)--(c3) (a2)--(b3)--(c4) (a3)--(b4)--(c5);
        \end{tikzpicture}
    }
    \caption{The Tictactoe plane}
    \label{The Tictactoe plane}
\end{figure}

将左图中的第一、第二列在右侧重复一遍后，可以把图示画得更为美观。可以看到，在Tictactoe plane中，过线外一点有且仅有一条线与已知的线平行，即欧氏几何中的平行公理成立。

\begin{definition}
    对一个含有有限元素（称为点）的集合，它的一些子集称为边。如果它满足：
    \begin{enumerate}[label=(\alph{*})]
        \item 任何两个点可以唯一确定一条线；
        \item 过线外一点有且仅有一条线与已知的线平行，
    \end{enumerate}
    则称这个平面为一个\newnoun{有限仿射面}{finite affine plane}。
\end{definition}

\begin{theorem}
    任一有限仿射面可通过添加新点与新线的方式扩充至有限投影面；删去有限投影面中任意一条边及边上所有的点可以得到一个有限投影面。
\end{theorem}

\begin{figure}[H]
    \centering
    \begin{tikzpicture}
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (a1) at (0,0) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (a2) at (2,0) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (a3) at (4,0) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (b1) at (0,2) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (b2) at (2,2) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (b3) at (4,2) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (c1) at (0,4) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (c2) at (2,4) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (c3) at (4,4) {};

        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (d1) at (-2,-2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (d2) at (2, -2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (d3) at (6,-2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (d4) at (10,-2) {};

        \draw (a1)--(a2)--(a3) (b1)--(b2)--(b3) (c1)--(c2)--(c3) (a1)--(b1)--(c1) (a2)--(b2)--(c2) (a3)--(b3)--(c3);
        \draw (c1)--(b2)--(a3) (c2) ..controls (2.4,3.8) and (3.8,3)..(b3).. controls (3.8,1) and (2,0.6)..(a1);
        \draw (c3) ..controls (2,3.4) and (0.2,3).. (b1) .. controls(0.2,1) and (1.6,0.2) ..(a2);
        \draw (a1)--(d2) (a2)--(d2) (a3)--(d2);
        \draw (a1)--(d3) (a2)--(d3) (a3)--(d3);
        \draw (a3)--(d4) (b3)--(d4) (c3)--(d4);
        \draw (d1)--(d2)--(d3)--(d4);

        \draw[dashed] (a1)--(d1) (a2)--(d1) (a3)--(d1);
        \draw[dashed] (c1)..controls (2,3.4) and (3.8,3) .. (b3) .. controls (3.8,1) and (2.4,0.2) .. (a2);
        \draw[dashed] (c2)..controls (1.6, 3.8) and (0.2,3) .. (b1) .. controls (0.2,1) and (2,0.6) ..(a3);
        \draw[dashed] (a1)--(b2)--(c3);
    \end{tikzpicture}
    \caption{为图中加上四个点和一条线，并延长原有的线得到有限投影面}
\end{figure}

\subsection{The Cube Space}
\begin{figure}[H]
    \centering
    \begin{tikzpicture}
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a) at (0,0) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (b) at (3,0) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c) at (4,1) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (d) at (1,1) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (e) at (0,3) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (f) at (3,3) {};
        \node[draw=black, circle, inner sep=0, minimum size=8pt] (g) at (4,4) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (h) at (1,4) {};

        \draw (a)--(b)--(c)--(f)--(b) (a)--(e) (c)--(g)--(h)--(e)--(f)--(g);
        \draw[dashed] (a)--(d)--(c) (e)--(d)--(h);
    \end{tikzpicture}
    \caption{The Cube space}
    \label{The Cube space}
\end{figure}

在图中，我们定义``面''为：
\begin{enumerate}[label=（\arabic{*}）]
    \item 四个点形成了图中正方体的一个面（欧氏几何面），共六个；
    \item 四个点分别是一对相对的边的边的顶点，共六个；
    \item 图中四个黑色或四个白色顶点。
\end{enumerate}

这些面有很多好性质：
\begin{enumerate}[label=(\Alph{*})]
    \item 任意三点唯一确定一个面；
    \item 两平面要么平行，要么相相交于一条线；
    \item 过平面外一点有且仅有一个平面与已知平面平行；
    \item 任意两点相似；
    \item 任意两面相似。
\end{enumerate}

\section{区组设计}
\subsection{Kirkman 15女生问题}
1847年Kirkman提出了下面这样一个有趣的组合数学问题：有一个女教师，每天要带领一个班的15名女生去散步。问能否设计一种连续一周的散步方案，使得每天散步的时候，15名女生都能分成5组，每组由3名女生组成，而且在7天里每一个女生和其她女生都要在同一组中同时出现一次而且只出现一次?

简单分析一下，要求解这个问题就是要找到满足下面条件的三元子集组：
\begin{enumerate}[label=（\arabic{*}）]
    \item 需要构造由15名女生组成的集合的$7\times 5 = 35$个三元子集族，使得每两个女生在三元组里正好出现一次；
    \item 由于每天的散步，每个女生出现而且只能出现在一个三元组中。所以必须能将35个三元组分成7部分，每部分有5个三元组。每一个女生正好在每部分出现一次，即在一个三元组出现。
\end{enumerate}

1850年，人们得到了这个问题的解：
\begin{enumerate}
    \item 星期一：$\{1, 2, 3\}, \{4, 8, 12\}, \{5, 10, 15\}, \{6, 11, 13\}, \{7, 9, 14\}$；
    \item 星期二：$\{1, 4, 5\}, \{2, 8, 10\}, \{3, 13, 14\}, \{6, 9, 15\}, \{7, 11, 12\}$；
    \item 星期三：$\{1, 6, 7\}, \{2, 9, 11\}, \{3, 12, 15\}, \{4, 10, 14\}, \{5, 8, 13\}$；
    \item 星期四：$\{1, 8, 9\}, \{2, 12, 14\}, \{3, 5, 6\}, \{4, 11, 15\}, \{7, 10, 13\}$；
    \item 星期五：$\{1, 10, 11\}, \{2, 13, 15\}, \{3, 4, 7\}, \{5, 9, 12\}, \{6, 8, 14\}$；
    \item 星期六：$\{1, 12, 13\}, \{2, 4, 6\}, \{3, 9, 10\}, \{5, 11, 14\}, \{7, 8, 15\}$；
    \item 星期日：$\{1, 14, 15\}, \{2, 5, 7\}, \{3, 8, 11\}, \{4, 9, 13\}, \{6, 10, 12\}$。
\end{enumerate}

\subsection{区组设计概论}
\begin{definition}
    设$X$是一个有限集合，则称$X$的子集族$B = \{B_1, B_2, \dots, B_b\}$为$X$的一个\newnoun{区组设计}{block design}，记作$D = (X, B)$。$X$称为此设计的基集，而子集族$B$中的诸子集$B_i (i = 1, 2, \dots, b)$则称为此设计的\newnoun{区组}{block}。

    基集$X$中元素的个数$\vert X \vert$称为设计的阶。对于$i = 1, 2, \dots, b$，区组$B_i$的元素个数$\vert B_i \vert$又称为该区组的长度。

    对于$x \in X$，$B$中含有$x$的区组的个数称为元素$x$的重复数，记为$r(x)$。

    对于$x,y \in X, x \neq y$，$B$中以$\{x, y\}$为子集的集合数称为元素$x$和$y$的相遇数，记为$\lambda(x,y)$。

    区组设计可以用区组（关联）矩阵来描述。设$X = \{x_1, x_2, \dots, x_v\}$，$B = \{B_1, B_2, \dots, B_b\}$，其关联矩阵定义为
    \(A = \begin{bmatrix}
        a_{ij}
    \end{bmatrix}_{v \times b}\)，其中
    \[a_{ij} = 
    \begin{cases}
        1, x_i \in B_j\\
        0, x_i \not \in B_j    
    \end{cases}\eqper\]
\end{definition}

容易看出，第$i$行出现1的次数即为$r(x_i)$，第$j$列出现1的个数是$B_j$的长度。第$j$列可以看作是$B_j$的特征函数。

同时可以得到$\lambda (x_i, x_j)$与$A$中第$i$行与第$j$行的内积相等。

\begin{remark}
    区组族$B$中的区组是可以重复的，因此$B$是一个族而不是一个集合。
\end{remark}

\begin{example}
    在Kirkman 15女生问题中，这些参数为：
    \begin{enumerate}
        \item 设计的阶数为15；
        \item 每个区组的长度为3；
        \item 任意一个元素的重复数为7；
        \item 任意两个元素的相遇数为1；
        \item 区组总数为35。
    \end{enumerate}
    需要强调的是，这些参数并不是互相独立的，其中的某些参数可以由其它参数得到。
\end{example}

\subsection{平衡不完全的区组设计（BIBD）}
\begin{definition}
    设$X = \{x_1, x_2, \dots, x_v\}$，而$k (k < v)$和$\lambda$是确定的非负整数。如果区组设计$D = (X, B)$满足如下两个条件：
    \begin{enumerate}
        \item $B$中每个区组的长度都是$k$；
        \item $X$中每两个不同的元素$x, y$在$D$中的相遇数$\lambda_D(x, y)$都是$\lambda$，
    \end{enumerate}
    则称区组设计$D$为一个$(v,k,\lambda)$-\newnoun{平衡不完全区组设计}{balanced incomplete block design}，简称$(v,k,\lambda)$-BIBD。
\end{definition}

\begin{example}
    The Fano plane（图\ref{The Fano plane}）是$(7,3,1)$-BIBD。

    The Tictactoe plane（图\ref{The Tictactoe plane}）是$(9,3,1)$-BIBD。

    The Cube（图\ref{The Cube space}）是$(8,4,3)$-BIBD。
\end{example}

为了排除平凡情况，总假设$k > 1$，从而$\lambda > 0$。
\begin{theorem}
    设$k >1$，$D = (X,B)$是一个$(v,k,\lambda)$-BIBD，则有
    \begin{enumerate}
        \item $X$中所有元素的重复数都等于
        \[r = \frac{\lambda(v-1)}{k-1}\eqco\]
        \item $B$中所含的区组总数
        \[b = \frac{\lambda v (v-1)}{k(k-1)} = \frac{vr}{k}\eqper\]
    \end{enumerate}
\end{theorem}

\begin{theorem}
    如果存在$(v,k,\lambda)$-BIBD，其中$k > 1$，则必然有
    \[\lambda(v-1) \equiv 0 \pmod{(k-1)} \tag{1} \label{BIBD必要条件1}\]
    与
    \[\lambda v (v-1) \equiv 0 \pmod{k} \tag{2} \label{BIBD必要条件2}\eqper\]
\end{theorem}

这些条件都是存在$(v,k, \lambda)$-BIBD的必要条件而不是充分条件。1967年，M. Hall提出了如下的猜想：

\begin{conjecture}[设计存在性猜想]
    给定正整数$k, \lambda$，对于满足上述定理中条件\eqref{BIBD必要条件1}与\eqref{BIBD必要条件2}的正整数$v$，除去有限的个例外，一定存在$(v,k,\lambda)$-BIBD。
\end{conjecture}

Wilson在1975年证明了下面的定理，从而证明了这个猜想：

\begin{theorem}[渐进存在性定理]
    给定正整数$k$与$\lambda$，存在依赖于$k,\lambda$的常数$v_0 = v_0(k, \lambda)$，使得当$v \geq v_0$时，只要$v$满足上述定理中条件\eqref{BIBD必要条件1}与\eqref{BIBD必要条件2}，就一定存在$(v,k,\lambda)$-BIBD。
\end{theorem}

这说明对于一些比较大的$v$，总可以找到BIBD。那么如果$v$不太大又该如何判断是否存在BIBD？例如，不存在$(21,6,1)$-BIBD或者$(16,6,1)$-BIBD，但是它们也同样满足前面定理中的条件\eqref{BIBD必要条件1}与\eqref{BIBD必要条件2}。

Fisher给出了另外一个存在$(v,k,\lambda)$-BIBD的必要条件。

\begin{theorem}\label{Fisher必要条件}
    如果存在$(v,k,\lambda)-BIBD$，其中$1 < k < v$，那么区组总数$b \geq v$，或者等价地有$\lambda(v - 1) \geq k(k-1)$或者$k \leq r$。
\end{theorem}

要证明这个定理，我们首先需要另一个定理：

\begin{theorem}
    如果存在$(v,k,\lambda)$-BIBD，$1 < k < v$，那么$AA\trans = (r - \lambda)I + \lambda J$，其中$J$为全1矩阵。
\end{theorem}

\begin{proof}
    首先，注意到$AA\trans$的对角线元分别是$A$的每行与自己的内积，即每个元素的重复数$r$；另外$AA\trans$的$i,j$元（$i \neq j$）即为第$i$个元素与第$j$个元素的相遇数$\lambda$。
\end{proof}

有了这个定理，我们就能证明定理\ref{Fisher必要条件}：

\begin{proof}
    由
    \[r = \frac{\lambda(v-1)}{k-1}\]
    可得$r > \lambda$。那么
    \[\det(AA\trans) = [r + (v-1)\lambda](r-\lambda^{v-1}) > 0\]
    因此$AA\trans$满秩且为大小为$v$的方阵，$v = \rank(AA\trans) = \rank(A) \leq b$。
\end{proof}

\begin{definition}
    称满足$b = v$的BIBD是对称的。由于$bk = vr$，此时也有$k = r$。
\end{definition}

\begin{theorem}
    若有$(v,k,\lambda)$-对称BIBD，$1 < k < v$，那么$AA\trans = A\trans A = (k - \lambda) I + \lambda J$。
\end{theorem}

\begin{proof}
    \begin{align*}
        A\trans A & = A^{-1}AA\trans A = A^{-1} [(k-\lambda) I + \lambda J]A\\
        & = (k - \lambda) I + \lambda A^{-1} J A
    \end{align*}
    注意到$AJ = rJ = kJ = JA$因此$A^{-1} J A = J$那么
    \[A\trans A = (k - \lambda)I + \lambda J\eqper\qedhere\]
\end{proof}

\begin{corollary}
    对称BIBD的任意两个区组都恰有$\lambda$个共同的元素。
\end{corollary}

下面给出区组设计的构成方法。

\begin{theorem}
    若$B_1, B_2, \dots, B_b$是$(v,k, \lambda)$-对称BIBD，那么对于任意的$B_i$，
    \[B_1 \setminus B_i, \dots, B_{i-1}\setminus B_i, B_{i+1} \setminus B_i, \dots, B_b \setminus B_i\]
    是$(v - k, k - \lambda, \lambda)$-BIBD，
    \[B_1 \cap B_i, \dots, B_{i-1}\cap B_i, B_{i+1} \cap B_i, \dots, B_b \cap B_i\]
    是$(k, \lambda, \lambda-1)$-BIBD。
\end{theorem}

\subsection*{会标问题}
现在我们来看一个实际的问题：一个小镇中的人们组成了若干社团，它们有各自不相同的会标。小镇中的每个人都参加了至少一个社团。现在，小镇想要组织一个游行，小镇中的每个人都要参加，且每个人要选择一个他参加的社团的会标戴在身上。请问：能否找到一种会标的佩戴方式，使得游行中的每个人佩戴的会标都不相同？

\begin{proof}[解]
    我们首先需要转化这个问题。用图中的点来代表社团和市民，用连线代表某个人加入了某个社团，我们就能得到
    \begin{figure}[H]
        \centering
        \begin{tikzpicture}[scale=1.5]
            \node[draw=black, fill=blue!50, circle] (a) at (0,-1) {};
            \node[draw=black, fill=blue!50, circle] at (1, -1) {};
            \node[draw=black, fill=blue!50, circle] at (2, -1) {};
            \node[draw=black, fill=blue!50, circle] at (3, -1) {};
            \node[draw=black, fill=blue!50, circle] at (-1, -1) {};
            \node[draw=black, fill=blue!50, circle] at (-2, -1) {};
            \node[draw=black, fill=blue!50, circle] at (-3, -1) {};

            \node[draw=black, circle] at (0.5,0.5) {};
            \node[draw=black, circle] at (1.5,0.5) {};
            \node[draw=black, circle] at (2.5,0.5) {};
            \node[draw=black, circle] at (3.5,0.5) {};
            \node[draw=black, circle] (b) at (-0.5,0.5) {};
            \node[draw=black, circle] at (-1.5,0.5) {};
            \node[draw=black, circle] at (-2.5,0.5) {};
            \node[draw=black, circle] at (-3.5,0.5) {};
            \draw (a)--(b);
            \node at (0,1) {社团};
            \node at (0,-1.5) {市民};
        \end{tikzpicture}
        \caption{市民与社团作为节点的图}
    \end{figure}

    显然，这是一个二部图。现在，问题被转化为了：能否找到一个覆盖所有代表市民的节点的匹配？

    设$S$是所有代表市民的节点构成的集合的一个子集。设$e(S, N(S))$为连接$S$与$N(S)$中元素的边的数量。注意到S中每个成员都在$r$个社团中，因此
    \[\vert S \vert r = e(S, N(S))\]
    同时，$N(S)$中节点代表的社团的成员不一定全部都在$S$中，因此
    \[e(S, N(S)) \leq \vert N(S) \vert k\]
    再根据\ref{Fisher必要条件}，有
    \[\vert N(S) \vert k \leq \vert N(S) \vert r\]
    综合起来得到
    \[\vert S \vert r = e(S, N(S)) \leq \vert N(S) \vert k \leq \vert N(S) \vert r\]
    即$\vert S \vert \leq \vert N(S) \vert$。由定理\ref{婚姻定理推广}，符合要求的匹配一定存在。
\end{proof}

\section{Steiner系}
\begin{definition}
    $(v,3,\lambda)$-BIBD称为三元系。
\end{definition}

此时可以得到
\[3b = rv, 2r = \lambda(v-1)\]
即
\[r = \lambda\frac{v-1}{2}, b = \lambda \frac{v(v-1)}{6}\]
而$r,b$都是整数，因此
\[\lambda(v-1) \equiv 0 \pmod{2}, \lambda v(v-1) \equiv 0 \pmod{3}\]

\begin{definition}
    $\lambda = 1$时，三元系又称为\newnoun{Steiner三元系}{Steiner System}，即$(v,3,1)$-BIBD。
\end{definition}

可以得到
\[r = \frac{v-1}{2}, b = \frac{v(v-1)}{6}\]
结合$r, b$都是整数的条件可以导出$v$模6的余数只能为1或3。

\subsection*{社团代表}
我们来看一个实际问题。假设在一个镇子上有人们$v$个人，他们和他们的社团组成一个Steiner系。现在他们希望能产生一个委员会来抗议过高的会费，且委员会中应该包含每个社团的至少一名成员。那么最少需要多少人才能组成这样的委员会？

考虑一个不在委员会中的人，Andrew。他加入了$r$个社团，且
\[r = \frac{v-1}{2}\]
由于他们是一个Steiner系，因此$\lambda = 1$，这意味着这$r$个社团两两之间共同的成员只能有Andrew一个人，否则Andrew就会和某人的相遇数大于1。所以我们至少从这$\dfrac{v-1}{2}$个社团中分别选出1个人才有可能组成委员会。因此，委员会的人数应不小于$\dfrac{v-1}{2}$。同时，考虑Fano plane中可以用三个点组成``委员会''，因此我们找到的下界是可以取到的。

\begin{theorem}
    如果存在一个包含$\dfrac{v-1}{2}$个点的委员会，那么委员会自身也是一个Steiner系。
\end{theorem}

\begin{proof}\label{委员会人数定理}
    如果某个社团中的三个人都是代表，那么我们就称这个社团是``特权的''。证明定理即证明任意两个代表在某特权社团相遇且只会相遇这一次。

    首先，因为原先的所有人组成一个Steiner系，因此两个代表之间最多相遇一次。

    现在我们可以考虑Alice与Bob两位代表。他们一定同属于某个社团$S$。我们可以设这个社团中的另一个人是Carl。我们现在需要说明Carl一定也是代表。
    
    假设Carl不是代表，那么他所属的$r$个社团中除去$S$成员中都没有Alice和Bob，且他们两两之间只有Carl一个共同成员，因而都需要一个代表，即需要$r - 1$个代表。这$r-1$个代表再加上Alice和Bob共有$r+1$个人，说明我们至少需要$r+1$个人才能组成代表，这与已知的$\dfrac{v-1}{2} = r$个点组成委员会矛盾。因此Carl也一定是代表。
\end{proof}

\subsection*{Gender balance}
若一个二色染色可使Steiner系的每个区组都有两种颜色，那么我们称这个染色是``好的''二色染色。

\begin{theorem}
    ``好的''二色染色在Steiner系中不存在。
\end{theorem}

\begin{proof}
    假设存在这样一个满足要求的染色。那么每个区组中都含有红色，也都含有蓝色。这意味着红色或者蓝色都可以做为``代表''，这也就意味着红色和蓝色都有至少$\frac{v-1}{2}$个。相加后还有一个人的颜色没有确定，我们不妨假设他是红色的。那么这意味着蓝色的人组成了一个$\frac{v-1}{2}$个元素的委员会。由定理\ref{委员会人数定理}，他们是一个Steiner系，而这个Steiner系中所有的``特权的''社团的成员全部都是蓝色的。这与我们假设的每个社团（区组）中都有两种颜色的人矛盾。
\end{proof}

\section{拉丁方}
\subsection{引言}
现代科技离不开科学实验，在一个复杂的科学实验中，往往有许多影响实验结果的因素，这些因素互相配合又互相制约，要搞清每个因素的影响，要知道怎样的搭配效果最好，就要进行科学合理的实验安排。

实验设计是一门专门的理论，组合数学中组合设计理论是这个理论最重要的数学工具。

例如，要对治疗某种疾病的6种药$d_1, d_2, d_3, d_4, d_5, d_6$的疗效进行试验。实验的疗程是六天，共有6个病人参加试验。

一种可能的方案是周一所有人都服用$d_1$，周二所有人都服用$d_2$，……，周六所有人都服用$d_6$。这个实验方案的缺点是可能看起来后服的药的疗效会更好，因为前面服用的药可能仍旧在起作用；

另一种可能的方案是每人在六天实验疗程中只服用一种药，但是缺点是病人的体质与病情会影响实验的结果。

理想的方案是：六个人每个人都对这六种药进行了实验，且每天这六种药都在被某个人试验。试验方案可以用下面的矩阵来表示：
\begin{equation*}
    \begin{bNiceMatrix}[first-col]
        A & 1 & 2 & 3 & 4 & 5 & 6\\
        B & 6 & 1 & 2 & 3 & 4 & 5\\
        C & 5 & 6 & 1 & 2 & 3 & 4\\
        D & 4 & 5 & 6 & 1 & 2 & 3\\
        E & 3 & 4 & 5 & 6 & 1 & 2\\
        F & 2 & 3 & 4 & 5 & 6 & 1
    \end{bNiceMatrix}
\end{equation*}

可以把上面的实验设计中出现的方阵推广，得到

\begin{definition}[拉丁方]
    由元素$1, 2, \dots, n$构成的$n \times n$的方阵
    \(\begin{bmatrix}
        a_{ij}
    \end{bmatrix}_{n \times n}\)
    ，要求每行每列中$1, 2, \dots, n$各出现一次，这样的方阵就叫做\newnoun{拉丁方}{Latin Square}。
\end{definition}

下面先列举几个拉丁方的简单性质。
\begin{proposition}
    设$p \in S_n$是任意一个$n$元置换。如果
    \(A = \begin{bmatrix}
        a_{ij}
    \end{bmatrix}_{n \times n}\)
    是一个拉丁方，则
    \[p(A) = p
    \left(\begin{bmatrix}
        a_{ij}
    \end{bmatrix}\right)\]
    也是一个拉丁方。
\end{proposition}

\begin{proposition}
    一个拉丁方经过行、列任意置换后还是一个拉丁方。
\end{proposition}

\begin{proposition}
    拉丁方的转置还是拉丁方。
\end{proposition}

\subsection{正交拉丁方}
36军官问题：有36名军官来自六个不同的团，具有六种不同的军阶，而且每个团每种军阶的军官各有一名，能否把他们排成一个$6 \times 6$方阵，使得对每一个团与每一种军阶，在每一行或每一列都有一位军官来自这个团，也都有一位军官有此军阶?

每一个军官用一个有序对$(i, j)$来表示,其中i表示它们的军阶类别$(i=1,2,\dots,6)$而j表示他所在的团$(j = 1, 2, \dots, 6)$。问题相当于设计出由军阶构成的一个6阶拉丁方
\(\begin{bmatrix}
    a_{ij}
\end{bmatrix}\)
和一个由团序号组成的6阶拉丁方
\(\begin{bmatrix}
    b_{ij}
\end{bmatrix}\)
，要求$(a_{ij}, b_{ij})$互不相同，正好是全部$6 \times 6$数组$i, j$，其中$i = 1, 2, \dots, 6$，$j = 1, 2, \dots, 6$。满足这样条件的两个拉丁方就是所谓的正交的拉丁方。

\begin{definition}
    设
    \(A = \begin{bmatrix}
        a_{ij}
    \end{bmatrix}_{n \times n}\)，
    \(B = \begin{bmatrix}
        b_{ij}
    \end{bmatrix}_{n \times n}\)
    是两个$n$阶拉丁方。若矩阵
    \(C = \begin{bmatrix}
        (a_{ij}, b_{ij})
    \end{bmatrix}_{n \times n}\)
    中的$n^2$个数对$(a_{ij}, b_{ij})$互不相同，$i,j = 1, 2, \dots, n$，称$A$和$B$正交，或$A$和$B$是正交拉丁方。
\end{definition}

可以得到正交拉丁方的几个性质：

\begin{proposition}
    如果$A$和$B$是一对正交拉丁方，则$A$中的元素经过某个置换$p$之后得到的$p(A)$和$B$也是一对正交拉丁方。
\end{proposition}

\begin{proposition}
    如果$A$和$B$是一对正交拉丁方，那么$A$和$B$经过相同的行列置换后得到的两个矩阵仍然是一对正交拉丁方。
\end{proposition}

\begin{proposition}
    如果$A$和$B$是正交拉丁方，则它们的转置$A\trans$与$B\trans$也是一对正交拉丁方。
\end{proposition}

\begin{definition}
    两两正交的一组拉丁方叫做正交拉丁方组。
\end{definition}

问题：给定$n$，在所有$n$阶拉丁方中，一个正交拉丁方组最多能有多少个？

我们有

\begin{theorem}
    如果$A_1, A_2, \dots, A_r$是$r$个两两正交的$n$阶正交拉丁方，则$r \leq n - 1$。
\end{theorem}

\begin{proof}
    根据正交拉丁方的性质，我们总可以对每个拉丁方$A_k$的元素进行适当的置换$p_k$，把$A_k$的第一行变为$1, 2, \dots, n$。置换后的$r$个拉丁方仍旧两两正交。因此我们不妨就直接设原来的$r$个拉丁方就是如下形式：
    \[A_k = \begin{bmatrix}
        1 & 2 & \cdots & n\\
        a_{21}^{(k)} & a_{22}^{(k)} & \cdots & a_{2n}^{(k)}\\
        \vdots & \vdots & \ddots & \vdots\\
        a_{n1}^{(k)} & a_{n2}^{(k)} & \cdots & a_{nn}^{(k)}
    \end{bmatrix}, 
    k = 1, 2, \dots, r\]

    下面我们考察$a_{21}^{(k)}$。每列不可能出现两个1，因此$a_{21}^{(k)} \neq 1, k = 1, 2, \dots, n$。当$h \neq k$时，$a_{21}^{(h)} \neq a_{21}^{(k)}$，否则$(a_{21}^{(h)}, a_{21}^{(k)})$与第一行的某一个是相同的，不符合正交拉丁方的定义。因此
    \[a_{21}^(1), a_{21}^{(2)}, \dots, a_{21}^{(r)}\]
    是两两不同且都不等于1的。这样的数最多有$n-1$个，因此$r \leq n - 1$。
\end{proof}

含有$n-1$个$n$阶正交拉丁方组称为$n$阶拉丁方的完备正交组。完备正交组的存在性问题是至今尚未解决的问题。

通过元素置换将拉丁方的第一行化为自然顺序的过程称为规范化过程。如果对一个正交拉丁方组进行这个过程，也成为正交拉丁方规范化过程。这样的过程有利于比较拉丁方是不是``本质不同''的。

1782年，欧拉提出了以下猜想：

\begin{conjecture}
    如果$n = 4k + 2$，则不存在任何一对$n$阶正交拉丁方。
\end{conjecture}

在100多年后的1901年，法国人Tarry证明了$n = 6$时Euler猜想的正确性。然而，在1960年前后，Bose，Parker，Shrikhande相继证明了
\begin{theorem}
    如果$n \neq 2, 6$，则必然存在一对$n$阶正交拉丁方。
\end{theorem}

\subsection{幻方}
观察这样一组正交拉丁方：
\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|c|}
        \hline
        0 & 1 & 2 & 3\\
        \hline
        1 & 0 & 3 & 2\\
        \hline
        2 & 3 & 0 & 1\\
        \hline
        3 & 2 & 1 & 0\\
        \hline
    \end{tabular}
    \hspace{2cm}
    \begin{tabular}{|c|c|c|c|}
        \hline
        0 & 1 & 2 & 3\\
        \hline
        3 & 2 & 1 & 0\\
        \hline
        0 & 1 & 2 & 3\\
        \hline
        2 & 3 & 0 & 1\\
        \hline
    \end{tabular}
\end{table}
将其合在一起我们得到
\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|c|}
        \hline
        00 & 11 & 22 & 33\\
        \hline
        13 & 02 & 31 & 20\\
        \hline
        21 & 31 & 03 & 12\\
        \hline
        32 & 23 & 10 & 01\\
        \hline
    \end{tabular}
\end{table}

如果我们把表格中的每个数都看作一个两位的四进制数，再将它们转写回十进制，就有
将其合在一起我们得到
\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|c|}
        \hline
        0 & 5 & 10 & 15\\
        \hline
        7 & 2 & 13 & 8\\
        \hline
        9 & 12 & 3 & 6\\
        \hline
        14 & 11 & 4 & 1\\
        \hline
    \end{tabular}
\end{table}

它每一行的和与每一列的和都是定值。这样的数表称为幻方（弱幻方）。如果每一列、每一行、对角线的和都相等，就是强幻方，例如下面这个幻方。

\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|}
        \hline
        4 & 9 & 2\\
        \hline
        3 & 5 & 7\\
        \hline
        8 & 1 & 6\\
        \hline
    \end{tabular}
\end{table}

有限几何与拉丁方也有着联系。例如：

\begin{figure}[H]
    \centering
    \begin{tikzpicture}
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a1) at (0,0) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a2) at (2,0) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (a3) at (4,0) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b1) at (0,2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b2) at (2,2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (b3) at (4,2) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c1) at (0,4) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c2) at (2,4) {};
        \node[draw=black, fill=black, circle, inner sep=0, minimum size=8pt] (c3) at (4,4) {};
        
        \node at (0,4.5) {0};
        \node at (2,4.5) {1};
        \node at (4,4.5) {2};
        \draw (a1)--(a3) (b1)--(b3) (c1)--(c3) (a1)--(c1) (a2)--(c2) (a3)--(c3);
        \draw (c1)--(a3) (c2) ..controls (2.4,3.8) and (3.8,3)..(b3).. controls (3.8,1) and (2,0.6)..(a1);
        \draw (c3) ..controls (2,3.4) and (0.2,3).. (b1) .. controls(0.2,1) and (1.6,0.2) ..(a2);
        \draw[dashed] (c1)..controls (2,3.4) and (3.8,3) .. (b3) .. controls (3.8,1) and (2.4,0.2) .. (a2);
        \draw[dashed] (c2)..controls (1.6, 3.8) and (0.2,3) .. (b1) .. controls (0.2,1) and (2,0.6) ..(a3);
        \draw[dashed] (a1)--(c3);
    \end{tikzpicture}
\end{figure}

\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|}
        \hline
        0 & 1 & 2\\
        \hline
        2 & 0 & 1\\
        \hline
        1 & 2 & 0\\
        \hline
    \end{tabular}
    \hspace{1cm}
    \begin{tabular}{|c|c|c|}
        \hline
        0 & 1 & 2\\
        \hline
        1 & 2 & 0\\
        \hline
        2 & 0 & 1\\
        \hline
    \end{tabular}
\end{table}
