以直向、橫向、斜向磁磚鋪滿 m × n 矩形的研究
台北市立建國高級中學 江誠敏 指導老師 沈朋裕
Abstract
The purpose of this research is to study a tiling problem: Given an m× n chessboard, how many ways are there to tile the chessboard with 1× 2 dominoes and also ”diagonal” dominoes (display in the picture below). First we use a transfer- matrix method and recursive method to calculate the answer. Then we try to use a similar method given out by a research in 2001 to find out the formula of the tiling number.
1 摘 摘 摘要 要 要
我們的主題是研究使用直向、橫向與斜向磁磚不交疊地鋪滿 m × n 的長方形的方法總 數. 磁磚總共有如下圖中間所列出的四種(其中著上藍色和綠色兩者統稱為「斜向的」
磁磚), 並且斜向磁磚不能夠有最右圖所顯示的交疊的情形.
在 1961 年的論文中給出了只使用直向、橫向磁磚鋪滿 2m × 2n 的長方形的方法數的 一個漂亮的公式, 而 2001 年的論文以一個較簡單的方法證明了這個結果. [1–3]
4mn
∏m i=1
∏n j=1
(
cos2 iπ
2m + 1 + cos2 jπ 2n + 1
)
而我們先從固定 m 尋找遞迴式的方法出發, 接著用 m 的結果推出 m + 1, 最後期望能找 出與論文一樣的一個漂亮的一般通式.
2 研 研 研究 究 究簡 簡 簡介 介 介
2.1 研 研 研究 究 究動 動 動機 機 機
原本研究動機其實是從一個遊戲轉化而成了一個鋪磁磚的問題, 一般我們都只使用直向與 橫向兩種磁磚來鋪, 但如果加上其他種類的磁磚, 會發生甚麼事呢? 這觸發了我們對於以 下推廣問題的研究: 如果除了使用直向、橫向的磁磚, 再加上「斜向的」磁磚來鋪滿一個 矩形, 會與只使用直向、橫向的磁磚的鋪法有哪些方面的相同或相異?
此次研究的內容, 與矩陣、遞迴數列相關.
2.2 研 研 研究 究 究目 目 目的 的 的
找出鋪磁磚的方法數與矩形的長度、寬度的關聯.
3 研 研 研究 究 究內 內 內容 容 容-轉 轉 轉移 移 移矩 矩 矩陣 陣 陣方 方 方法 法 法
3.1 符 符 符號 號 號說 說 說明 明 明
我們用 Rectm,n表示 m × n 的矩形區域.
在討論鋪磁磚的過程中, 我們由左至右依序鋪上磁磚, 此時我們定義一個「狀態」: 當我 們由左至右依序鋪上磁磚後, 若恰好將前面 i 行完全鋪滿了, 即 1, 2, ..., i 行上的所有格子 都被磁磚所覆蓋時, 我們就稱目前 i + 1 行上的格子是否被磁磚填滿的狀況為一個「狀 態」.
如上圖所示為撲滿第 4 行的情況, 而此時的狀態如下圖所示.
為了方便我們將給每種狀態一個標號的方式. 對於一個狀態, 我們從上到下如果格子已被 填滿則記為 1, 否則為 0, 這樣每一個狀態會對應到一個 01 字串, 我們把這個01 字串的值 當作狀態的編號.
n
m
如上圖為例, 這個狀態對應到的 01 字串為 (0101), 而後面會用字串的 2 進位值來排序.
3.2 Rect
2,n的 的 的遞 遞 遞迴 迴 迴關 關 關係 係 係
我們先計算 Rect2,n 的遞迴關係, 詳細的計算過程如下:
注意到狀態中如果出現連續的 11, 由於狀態的定義, 不容許用直的磁磚排. 因此我們可以 列出如下的轉移矩陣
(00) (01) (10) (11)
(00) 1 0 0 1
(01) 0 1 1 0
(10) 0 1 1 0
(11) 1 0 0 0
定義矩陣 T2=
1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0
令 an, bn, cn, dn 分別表示鋪滿 Rect2,n 且使最右邊是 (00), (01), (10), (11) 狀態的方法 數. 從轉移矩陣我們會有以下等式
an+1
bn+1
cn+1
dn+1
=
1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0
an
bn
cn
dn
事實上我們可以將 1 的個數為偶數的狀態挑出來以簡化運算 [an+1
dn+1 ]
= T2′ [an
dn ]
= [1 1
1 0 ] [an
dn ]
而初始值為 a(0) = 1, d(0) = 0, 特徵多項式為 P (x) = x2− x − 1, 根據 Cayley-Hamilton 定理有 P (T2′) = O2,2,則對於 n ≥ 2, 有 T2n = T2n−1+ T2n−2. 我們得到 an= an−1+ an−2. 事實上當 Rect2,n 時是無法放置斜向的磁磚的, 因此方法數相當於用直向和橫向鋪滿 Rect2,n的方法數, 而這即是 Fibonacci 數列, 遞迴式與我們的結果相符.
3.3 從 從 從 Rect
m,n到 到 到 Rect
m+1,n現在我們希望能利用 Rectm,n的轉移矩陣推出 Rectm+1,n 的轉移矩陣. 例如: m = 2 的 狀態 (00), (01), (10), (11), 推到 m = 3 的狀態 (000), (001), (010), (011), (100), (101), (110), (111). 事實上對於每一個 m = k 時的狀態 (s), 當我們要推至 m = k + 1 時, 只需 要考慮兩種情況, (0s) 和 (1s).
k
(s)
k+ 1
(0s)
k+ 1
(1s)
因此鋪滿 Rectm+1,n的轉移矩陣的長和寬都會是原來 Rectm,n轉移矩陣的2 倍. 令 S1
代表鋪滿 Rectm,n 時的所有狀態的集合, S2 代表Rectm+1,n 時的所有狀態的集合, 可知 S2={(0s), (1s) : s ∈ S}, 若鋪滿 Rectm,n的轉移矩陣型態如下:
(S)
(S)
則鋪滿 Rectm+1,n的轉移矩陣即如下:
(0S) (1S)
(0S)
(1S)
我們有以下定理:
定定定理理理 1. 假假假設 Rectm,n 轉移矩陣為 Tm,且其中 A00, A10, A01, A11 為將 Tm 切成 4 個相 等大小的 block. 即
Tm=
[A00 A10
A A
]
而將 Rectm+1,n 轉移矩陣 Tm+1表示成
Tm+1=
[B00 B10
B01 B11
] .
其中 B00, B10, B01, B11 為將 Tm+1 切成 4 個相等大小的 block. 則我們可以證明會有以 下關係式:
B01= B10= Tm=
[A00 A10
A01 A11
]
B11=
[A10 0 A11 0 ]
B00=
[ A10 0 A00+ A11 A10
]
證證證明明明. (1) B01= Tm
由我們定義的轉移矩陣可以知道 B01 代表從(0S1)轉移到(1S2)的方法數, 即未轉移前 的最右上角的區域是還沒有被填滿的, 而轉移後最右上角的區域必須是被填滿的, 如 圖所示:
(0S1)→(1S2)
(S1)→(S2)
可以知道綠色的部分一定要放置橫的磁磚, 因此方法數相當於忽略最右上角的區域而 只看下面的方法數, 即為 (S1)轉移到 (S2)的方法數可用轉移矩陣 Tm表示.
(2) B10= Tm
B10 代表從(1S1)轉移到(0S2)的方法數, 即未轉移前的最右上角的區域是已被填滿的, 而轉移後最右上角的區域必須是沒有填滿的, 如圖所示:
(1S1)→(0S2)
(S1)→(S2)
可以知道最上面無法放置磁磚, 因此方法數相當於忽略第一列只看下面的方法數, 即 (S1)轉移到 (S2)的方法數可用轉移矩陣 Tm表示.
(3) B11=
[A10 0 A11 0 ]
B11 代表從(1S1) 轉移到(1S2)的方法數, 即未轉移前最右上角的區域已被填滿的, 而 轉移後最右上角的區域必須是沒有填滿的, 此時我們分兩種情況討論.
假設起始的狀態集為 (1S1),轉移後的狀態集為 (1S2).
(i) S1= (1S′1)
即未轉移前的第二格也必須是已被填滿的.
(11S1′)→(1S2)
上圖為 (11S′1) 轉移到 (10S2′) 的例子, 可以知道綠色的格子無法放置磁磚, 而 (11S1′)轉移到 (11S2′)為同樣的狀況, 因此沒有方法可以填滿, 故方法數 = 0.
即
(1S′1) [ ] (0S2′) 0 (1S2′) 0 .
(ii) S1= (0S′1)
即未轉移前的第二格必須是未被填滿的.
(10S1′)→(1S2)
(1S1′)→(S2)
上圖為 (10S1′)轉移到 (10S2′)的例子, 可以知道綠色的格子必須放置斜的磁磚, 而 (10S1′)轉移到 (11S2′)為同樣的狀況, 因此方法數相當於先把轉移前的第二格 方塊填滿的轉移方法數, 即 (1S1′)轉移到 (S2) 的方法數, 也就是 (1S1′)轉移到
(S2)的方法數,
(0S1′) [ ] (0S2′) A10
(1S2′) A11
.
綜合以上兩點, 有: B11=
(0S1′) (1S1′)
[ ]
(0S2′) A10 0 (1S2′) A11 0 =
[A10 0 A11 0 ]
(4) B00=
[ A10 0 A00+ A11 A10
]
B00代表從(0S1)轉移到(0S2)的方法數, 即未轉移前最右上角的區域已被填滿的, 而轉 移後最右上角的區域必須是沒有填滿的, 此時我們分四種情況討論.
假設起始的狀態集為 (0S1),轉移後的狀態集為 (0S2).
(i) S1= (0S′1), S2= (0S2′)
即未轉移前和轉移後的第二列也必須是沒有被填滿的.
(00S1′)→(00S2′)
(1S1′)→(0S2′)
可以知道綠色的格子一定要放置直向的磁磚, 因此方法數相當於先把轉移前的 第二列方塊填滿的轉移方法數, 即 (1S1′)轉移到 (S2)的方法數, 也就是 (1S1′)轉 移到 (0S2′)的方法數可用矩陣 A10 表示.
(ii) S1= (0S′1), S2= (1S2′)
即未轉移前的第二列必須是未被填滿的, 而轉移後的第二列是被填滿的, 此狀況 有兩種擺法.
(00S1′)→(01S2′)
(1S1′)→(1S2′)
如果放置直的磁磚, 方法數相當於先把轉移前的第二列方格填滿的轉移方法數, 即 (1S1′)轉移到 (S2) 的方法數, 也就是 (1S1′) 轉移到 (1S2′)的方法數可用 A11
表示.
(00S1′)→(01S2′)
(0S1′)→(0S2′)
如果放置斜向的磁磚, 方法數相當於先把轉移後的第二列方格先填滿的轉移方 法數, 即 (S1)轉移到 (0S2′)的方法數, 也就是 (0S1′)轉移到 (0S2′)的方法數可用 A00表示.
因此方法數為兩種擺法的總和, 即可以用矩陣 A00+ A11表示.
(iii) S1= (1S′1), S2= (0S2′)
即未轉移前的第二列必須是已被填滿的, 而轉移後的第二列是未被填滿的.
(01S1′)→(00S2′)
可以知道綠色的格子無法放置磁磚, 因此沒有方法可以填滿, 故方法數 = 0.
(iv) S1= (1S′1), S2= (1S2′)
即未轉移前和轉移後的第二列也必須都是被填滿的.
(01S1′)→(01S2′)
(1S1′)→(0S2′)
可以知道綠色的格子一定要放置斜向的磁磚, 因此方法數相當於先把轉移後的 第二列方格填滿的轉移方法數, 即 (S1)轉移到 (0S2′)的方法數, 也就是 (1S1′)轉 移到 (0S2′)的方法數可用矩陣 A10 表示.
綜合以上四點, 有: B11=
(0S1′) (1S1′)
[ ]
(0S2′) A10 0 (1S2′) A00+ A11 A10 =
[ A10 0 A00+ A11 A10
]
由定理 1 我們可以得出以下推論:
推推推論論論 1. 令 an 為用直向、橫向和斜向撲滿 Rect4,n 的方法數, 則有遞迴式 an = 5an−1+ 4an−2− 12an−3+ 9an−4+ 7an−5− 14an−6+ 5an−7.
證證證明明明. 首先由轉移矩陣的性質, 可以知道若令
u =[
1 0 0 · · · 0] , v =
1 0 0 ... 0
則 an = uT4nv.
我們先從 Rect2,n的轉移矩陣出發
T2=
1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0
依據我們找到的規則, Rect3,n 的轉移矩陣
T3=
0 1 2 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0
再繼續做下 Rect4,n 的轉移矩陣
T4=
1 0 0 1 0 2 3 0 0 1 2 0 1 0 0 1 0 1 1 0 2 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
現在我們可以把與 1 和 0 的個數皆為偶數的狀態相關的行與列挑出來.
T4′ =
(0000) (0011) (0101) (0110) (1001) (1010) (1100) (1111)
(0000) 1 1 2 3 1 2 1 1
(0011) 1 0 0 1 0 1 1 0
(0101) 0 0 1 1 1 1 1 0
(0110) 0 0 1 1 1 1 0 0
(1001) 1 1 1 1 1 1 1 0
(1010) 0 1 1 1 1 1 0 0
(1100) 1 1 1 1 0 0 0 0
(1111) 1 0 0 0 0 0 0 0
此為 Rect4,n轉移到 Rect4,n+1 的簡化轉移矩陣, 其特徵多項式為 P (x) = x8− 5x7− 4x6+ 12x5− 9x4− 7x3+ 14x2− 5x
這是使用 wolfram alpha [5]計算的. 根據 Cayley-Hamilton 定理有 p(T4′) = O8,8 則對於 n≥ 7, 有
T4′n= 5T4′n−1+ 4T4′n−2− 12T4′
n−3+ 9T4′n−4+ 7T4′n−5− 14T4′
n−6+ 5T4′n−7. 我們將等號兩邊同乘 u 和 v
uT4′nv = 5uT4′n−1v + 4uT4′n−2v− 12uT4′
n−3v + 9uT4′n−4v +7uT4′n−5v− 14uT4′
n−6v + 5uT4′n−7v.
即 an = 5an−1+ 4an−2− 12an−3+ 9an−4+ 7an−5− 14an−6+ 5an−7. 根據推論 1, 我們計算出以下的結果.
n an
0 1
1 1
2 5
3 25
4 139
5 751
6 4051
7 21849
8 117877
9 635969
10 3431155 11 18511575 12 99872603
我們用同樣的方法計算只用直和橫的磁磚鋪滿 Rectm,n 的方法數. 我們先列出只用直和
橫的磁磚時 Rect2,n 到 Rect2,n+1 的轉移矩陣 τ2 =
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0
並且用同樣的方法小
心推斷, 我們會得出類似從 Tm到 Tm+1的遞推關係, 即以下定理.
定定定理理理 2. 假設 Rectm,n 轉移矩陣 τm如下
τm=
[A00 A10
A01 A11
]
其中 A00, A10, A01, A11 為將 τm 切成 4 個相等大小的矩陣.
而 Rectm+1,n 轉移矩陣 τm+1 如下
τm+1=
[B00 B10 B01 B11 ]
其中 B00, B10, B01, B11 為將 τm切成 4 個相等大小的矩陣.
則會有以下關係式:
B01= B10= τm=
[A00 A10 A01 A11 ]
B11= 0 B00=
[A10 0 A11 0 ]
證證證明明明. (1) B01= τm
由我們定義的轉移矩陣可以知道 B01 代表從(0S1)轉移到(1S2)的方法數, 即未轉移前 的最右上角的區域還沒有被填滿的, 而轉移後最右上角的區域必須是被填滿的, 如圖 所示:
(0S1)→(1S2)
(S1)→(S2)
可以知道綠色的部分一定要放置橫的磁磚, 因此方法數相當於忽略第一格只看下面的 方法數, 即 (S1)轉移到 (S2)的方法數可以 τm表示.
(2) B10= τm
B10 代表從(1S1)轉移到(0S2)的方法數, 即未轉移前的最右上角的區域是已被填滿的, 而轉移後最右上角的區域必須是沒有填滿的, 如圖所示:
(1S1)→(0S2)
(S1)→(S2)
可以知道最上面無法放置磁磚, 因此方法數相當於忽略第一列只看下面的方法數, 即 (S1)轉移到 (S2)的方法數可用矩陣 τm表示.
(3) B11= 0
B10 代表從(1S1)轉移到(1S2)的方法數, 即未轉移前的最右上角的區域是已被填滿的, 而轉移後最右上角的區域也必須是填滿的, 如圖所示:
(11S1′)→(1S2)
可以知道綠色的格子無法放置磁磚, 因此沒有方法可以填滿, 故方法數 = 0.
(4) B00=
[A10 0 A11 0 ]
B00 代表從(0S1)轉移到(0S2)的方法數, 即未轉移前的最上面一格是未被填滿的, 而轉 移後最上面一格也必須是未填滿的, 此時我們分兩種情況討論.
假設起始的狀態集為 (0S1),轉移後的狀態集為 (0S2).
(i) S1= (1S′1)
即未轉移前的第二格也必須是已被填滿的.
(01S1′)→(0S2)
上圖為 (01S′1) 轉移到 (00S2′) 的例子, 可以知道綠色的格子無法放置磁磚, 而 (01S1′)轉移到 (01S2′)為同樣的狀況, 因此沒有方法可以填滿, 故方法數 = 0.
即
(1S′1) [ ] (0S2′) 0 (1S2′) 0 . (ii) S1= (0S′1)
即未轉移前的第二格必須是未被填滿的.
(00S1′)→(0S2)
(1S1′)→(S2)
上圖為 (00S1′)轉移到 (00S2′)的例子, 可以知道方法數相當於先把轉移前的第二 格方塊填滿的轉移方法數, 而 (00S1′) 轉移到 (01S2′)為同樣的狀況, 因此方法數 即 (1S1′)轉移到 (S2)的方法數, 也就是 (1S1′)轉移到 (S2)的方法數.
(0S1′) [ ] (0S2′) A10 (1S2′) A11
.
綜合以上兩點, 有: B00=
(0S1′) (1S1′)
[ ]
(0S2′) A10 0 (1S2′) A11 0 =
[A10 0 A11 0 ]
同樣的依據定理 2 我們可以得出以下推論:
推推推論論論 2. 令 bn 為用只用直向和橫向撲滿 Rect4,n 的方法數, 則有遞迴式 bn = bn−1+ 7bn−2− bn−3− 12bn−4− bn−5+ 7bn−6+ bn−7− bn−8. 證證證明明明. 由轉移矩陣的性質, 可以知道若令
u =[
1 0 0 · · · 0] , v =
1 0 0 ... 0
則 bn= uτ4nv.
首先以 τ2 求出 τ3, τ4
τ3=
0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
τ4=
1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
現在我們可以把與 1 和 0 的個數皆為偶數的狀態相關的行與列挑出來.
τ4′ =
(0000) (0011) (0101) (0110) (1001) (1010) (1100) (1111)
(0000) 1 1 0 0 1 0 1 1
(0011) 1 0 0 0 0 0 1 0
(0101) 0 0 0 0 0 1 0 0
(0110) 0 0 0 0 1 0 0 0
(1001) 1 0 0 1 0 0 0 0
(1010) 0 0 1 0 0 0 0 0
(1100) 1 1 0 0 0 0 0 0
(1111) 1 0 0 0 0 0 0 0
此為 Rect4,n轉移到 Rect4,n+1 的簡化轉移矩陣, 其特徵多項式為 P (x) = x8− x7− 7x6+ x5+ 12x4+ x3− 7x2− x + 1 根據 Cayley-Hamilton 定理有 p(M) = O8,8 則對於 n >= 8, 有
τ4′n= τ4′n−1+ 7τ4′n−2− τ4′
n−3− 12τ4′
n−4− τ4′
n−5+ 7τ4′n−6+ τ4′n−7− τ4′ n−8. 等號兩邊同乘 u 和 v
uτ4′n= uτ4′n−1v + 7uτ4′n−2v− uτ4′
n−3v− 12uτ4′ n−4v
−uτ4′
n−5v + 7uτ4′n−6v + uτ4′n−7v− uτ4′ n−8v.
即
bn = bn−1+ 7bn−2− bn−3− 12bn−4− bn−5+ 7bn−6+ bn−7− bn−8.
將 m = 2 帶入已被證明的公式 [1]. 當 n = 2k 時帶入公式且定義表示 4 × n 且 n 為 偶數的矩形以水平與垂直的磁磚鋪滿的方法總數.
wn = 16k
∏2 i=1
∏k j=1
( cos2iπ
5 + cos2 jπ 2k + 1
)
我們用此公式計算到 n = 12, 並與我們的結果比較.
n bn wn
0 1 1
1 1 -
2 5 5
3 11 -
4 36 36
5 95 -
6 281 281
7 781 -
8 2245 2245
9 6636 -
10 18061 18061
11 51205 -
12 145601 145601
4 研 研 研究 究 究內 內 內容 容 容-路 路 路徑 徑 徑方 方 方法 法 法
這裡我們想要參考 2001 年的論文 [3]中所使用的方法, 來求得加入斜向方塊後的鋪法數, 因此以下 4.1 至 5.3 主要是整理該論文之內容.
4.1 路 路 路徑 徑 徑對 對 對應 應 應
在這裡我們將矩形放置在座標軸上, 我們將矩形的右下角對齊座標原點, 並將矩形的單位 格長度當作是座標的單位長, 如圖所示.
y
x
對於任何一種在 Rect2m,2n 的合法鋪法, 我們都可以對映到一個有 m 條路徑且路徑互不 相交的路徑組. 對映的方式如下.
• 第 i 條路徑的起點為 (0, 2i − 1.5), 其中 1 ≤ i ≤ m.
• 假設現在的座標為 (x, y), 如果現在碰到了一個水平磁磚的左端, 則前進到 (x + 2, y).
• 如果現在碰到了一個垂直磁磚上面一格的左端, 則前進到 (x + 1, y + 1).
• 如果現在碰到了一個垂直磁磚下面一格的左端, 則前進到 (x + 1, y − 1).
• 當 x = 2n 則結束.
以下圖片為舉例, 可以看出這種路徑走法其實是蠻直觀的.
我們把所有可能走到的點和邊畫出來就成了下圖.
(圖二)
令人驚訝的, 有以下的引理:
引引引理理理 1. 合法的舖法會一對一對映到路徑互不相交的路徑組, 而路徑互不相交的路徑組也 會一對一對映到合法的舖法.
證證證明明明.
(1) 合法的舖法會一對一對映到路徑互不重複的路徑組:
觀察(圖二), 可以發現最終路徑一定會到達某一個終點, 因此我們只需要說明路徑不 會相交即可, 而這是顯然的, 我們找兩條路徑第一個相交的點, 可以知道其對映的舖 法一定會有磁磚重疊的情況發生.
(2) 路徑互不相交的路徑組也會一對一對映到合法的舖法:
定義一個磁磚是「在邊上的」, 代表這個磁磚剛好被(圖二)的某條邊完整地穿過, 如 下圖中紅色的磁磚都是在邊上的, 而藍色的磁磚不是.
觀察容易知道所有直向的磁磚不論在任何位置皆是在邊上的, 事實上假設直向磁磚 左下頂點為 (a, b), 右上頂點為 (a + 1, b + 2), 如果 2 | a + b 他會被 (a, b + 0.5) 到 (a + 1, b + 1.5)的邊通過, 否則會被 (a, b + 1.5) 到 (a + 1, b + 0.5) 的邊通過, 因此只 有橫向的磁磚可能是「不在邊上的」(如上圖藍色的橫向磁磚).
此時注意到對於一種合法舖法, 所有在邊上的磁磚皆會在某條路徑上, 這是因為對於 磁磚所在的邊上, 我們可以依照路徑的規則往兩邊繼續走下去, 而顯然右端一定最終 會到達某個起點, 左端則會到達某個終點.
因此, 對於任意的路徑組, 在這個鋪法中所有「在邊上的」磁磚都已經被決定了, 我 們可以先把他們鋪上去, 而還沒有被鋪道的地方就只能用「不在邊上的」橫向的磁 磚鋪滿了, 因此鋪法肯定是唯一的, 只需要說明最後一定可以用橫向的磁磚鋪滿就可 以了.首先我們將棋盤黑白塗色, 如下圖.
如果最後沒有辦法填滿, 代表最後有某幾格是空的, 假設某格白色的格子是空的, 注 意到藍色框起來的白色格子因為是路徑的起點, 所以不可能是空的. 假設紅色框起來 的白色那一格是空的, 現在我們考慮他右邊的黑色格子. 如果他是已經填滿的, 觀察 圖形可以知道不管他被直的或是橫的磁磚所覆蓋, 覆蓋他的那塊磁磚都會是「在邊 上的」, 即是在某條路徑上, 而因為白色的格子的右界上恰好有一個邊的交點, 所以 通過黑色格子的那條路徑也會通過這白色的格子, 矛盾. 因此黑色的格子就必須是 空的, 此時我們便可以用一個「不在邊上的」橫向的磁磚覆蓋這兩格.
如果空的格子是黑色的同理, 因此最後一定可以撲滿整個矩形.
由上述的討論, 我們可以知道撲滿 Rect2m,2n 的方法數 k2m,2n 就相當於有多少種符 合條件的 m 重路徑組. 令 s1, s2, . . ., sm分別表示 m 個起點, 令 t1, t2, . . ., tm分別 表示 m 個起點, 而我們要求的即是有多少不同的路徑組 (p1, p2, ..., pm)使得 pi 是 一條從 si 到 ti 的路徑, 且任兩條路徑都不相交.
由 Lindstrm’s theorem [6]可以知道:
k2m,2n = det
h1,1 h1,2 · · · h1,m
h2,1 h2,2 · · · h2,m
... ... . .. ... hm,1 hm,2 · · · hm,m
其中 hi,j 代表在新的圖上從 si 走到 tj 不同路徑的個數. 我們把這個矩陣記作 Hm,n.
5 延 延 延伸 伸 伸路 路 路徑 徑 徑
為了計算方便, 我們要將原本的路徑延長, 如下圖.
s1(¯s1) s2
s3 t3
t2
t1
¯ s2
¯ s3
¯t1
¯ t2
¯t3
在延長的圖中, 新的起點和終點分別計為 ¯s1, ¯s2, . . ., ¯sm和 ¯t1, ¯t2, . . ., ¯tm,可以知道不 同的路徑組 (¯p1, ¯p2, ..., ¯pm) 使得 ¯pi 是一條從 ¯si 到 ¯ti 的路徑, 且任兩條路徑都不相交的 個數就等於在原來的圖上不相交的路徑組的個數, 這是因為如果要在新的圖上路徑互不相 交, 那對從任何新起點 ¯si 開始的路徑一定要一直往右上方走到 si 為止, 終點處同理, 因此 由 Lindstrm’s theorem 可以知道
k2m,2n= det
¯h1,1 ¯h1,2 · · · ¯h1,m
¯h2,1 ¯h2,2 · · · ¯h2,m
... ... . .. ...
¯hm,1 ¯hm,2 · · · ¯hm,m
其中 ¯hi,j 代表在新的圖上從 ¯si 走到 ¯tj 不同路徑的個數. 我們把這個矩陣記作 ¯Hm,n.
5.1 路 路 路徑 徑 徑表 表 表示 示 示
對於任何一條從 ¯si 到 ¯tj 的合法路徑, 我們可以用一對正整序列 (A, B) 來表示, 其中 A = a1, a2, ..., ak, B = b1, b2, ...bh,表示的方法如下.
• A 代表這條路徑中往正右方走的邊有 k 條, 並且依序是在 x = ai− 1 的時候通過這 條邊, 通過後 x = ai+ 1.
• B 代表這條路徑中往右下方走的邊有 h 條, 並且依序是在 y = bi− 0.5 的時候通過 這條邊, 通過後 y = bi+ 0.5. 如下圖舉例的路徑可以用 ((1, 4, 6), (3, 3, 2)) 表示.
¯ s1
¯ s2
¯ s3
¯t1
¯ t2
¯t3
1 4 6
3 3
2
可以知道對於一條合法的路徑, 他的路徑表示是唯一的. 觀察後可以知道一條合法路徑 的路徑表示 (A, B) 會有以下性質.
• |A| + |B| = k + h = n + i − j, 這可以由計算得知.
• 1 ≤ ai≤ 2n − 1.
• ai+1≥ ai+ 2,這是因為 ai 表示你已經從 x = ai− 1 走到 x = ai+ 1了, 由於路徑 的 x 座標遞增, 可以知道 ai+1 必須大於等於 ai+ 2.
• 1 ≤ bi≤ 2m − 1.
• bi+1 ≥ bi− 1, 這是因為每次往右下走一次, y 座標只會減少 1, 如果繼續往右下走的 話 bi+1= bi− 1, 而如果到下一次往右下走之間曾向右上走過, 顯然 bi+1≥ bi− 1.
巧妙的是如果一個路徑表示 (A, B) 滿足以上條件, 他就會唯一對映到一條合法路徑.
令 fk,h 表示滿足 1 ≤ ai≤ 2k − 1, ai+1 ≥ ai+ 2,且 |A| = h 不同的序列 A 的個數, gk,h
表示滿足 1 ≤ b ≤ 2k − 1, b ≥ b − 1, 且 |B| = h 不同的序列 B 的個數.
有了上述性質, 就可以推得在 Rect∑ 2m,2n 的情況時從 ¯si 到 ¯tj 的不同路徑數 ¯hi,j =
0≤k≤n+i−j
fn,k× gm,(n+i−j−k),即原本的矩陣 ¯Hm,n可以表示成兩個矩陣的乘積.
H¯m,n= Fm,n· Gtm,n
其中
Fm,n=
fn,0 fn,1 · · · fn,n+m−1
fn,−1 fn,0 · · · fn,n+m−2
... ... . .. ... fn,−m fm,−m+1 · · · fm,n
Gm,n=
gm,n gm,n−1 · · · gm,−m+1
gm,n+1 gm,n · · · gm,−m+2
... ... . .. ... gm,n+m−1 gm,n+m−2 · · · gm,0
Fm,n 和 Gm,n皆為 m × (m + n) 的矩陣. 注意到一些 fi,j 或 gi,j 顯然是不合理的, 此時 應等於 0.
5.2 路 路 路徑 徑 徑對 對 對偶 偶 偶
由上一節的討論我們可以知道 km,n= det( ¯Hm,n) = det(Fm,n·Gtm,n). 再由 Binet–Cauchy 公式, 可以知道
det(Fm,n· Gtm,n) = ∑
J∈([n+m]m )
det (Fm,n(1, ..., m|J)) · det(Gm,n(1, ..., m|J))
在這裡, 我們考慮一種特殊的圖 Φm,n,他的構造如下.
• 由上到下分別有 m + n 條水平線, 水平線的左端為起點, 右端為終點, 第 i 條水平線 的起點和終點分別為 ui, vi.
• 任兩個相鄰的水平線間都會有 2n − 1 條垂直線段連接兩條水平線, 並且任兩個相鄰 的水平線間的任何一條垂直線段到他右邊的垂直線段的間距都一樣.
• 第 i 條水平線和第 i + 1 條水平線間由左到右的第 1 條垂直線段的水平位置會在第 i− 1 條水平線和第 i 條水平線間由左到右的第 2 和第 3 條垂直線段之間.
以下為 Φ3,4 的圖示.
u1 v
1
u2 v2
u3 v3
u4 v
4
u5 v
5
u6 v
6
u7 v7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
而我們可以在這張圖上找到 F 矩陣和 G 矩陣中的元素的意義! 令 F (i, j) 代表 F 矩陣 第 i 列第 j 行的元素, G 矩陣同樣, 有 F (i, j) = fn,j−i, 即表示滿足 1 ≤ ai ≤ 2n − 1,
ak+1≥ ak+ 2,且 |A| = j − i 不同的序列 A 的個數, 而每一種符合的 A 序列都可以看作 是在 Φm,n一條從 ui 走到 vj 且只往右方和下方走的路徑過程中所依序經過的數字.
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
u7 v7
u6 v6
u5 v5
u4 v4
u3 v3
u2 v2
u1 v1
A = (1, 4, 6)
而由 Lindstrm’s theorem, det(Fm,n(1, ..., m|J)), J ∈
([n + m]
m )
就會變成是從 (u1, u2, ..., um)到 (vJ (1), vJ (2), ..., vJ (m))互不相交的路徑組的個數了!
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
u7 v7
u6 v6
u5 v5
u4 v4
u3 v3
u2 v2
u1 v1
J = (2, 5, 6)
相同的有 G(i, j) = gm,n+i−j,即表示滿足 1 ≤ bi≤ 2m−1 ,bk+1≥ bk−1, 且 |B| = n+i−j 不同的序列 B 的個數, 而每一種符合的 B 序列都可以看作是在 Φn,m 一條從 un+i 走到 vj 且只往右方和上方走的路徑過程中所依序經過的數字.
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
u7 v7
u6 v6
u5 v5
u4 v4
u3 v3
u2 v2
u1 v1
B = (4, 3, 5, 5)
同樣的由 Lindstrm’s theorem, det(Gm,n(1, ..., m|J)), J ∈
([n + m]
m )
就會變成是從 (un+1, un+2, ..., un+m)到 (vJ (1), vJ (2), ..., vJ (m))互不相交的路徑組的個數了.
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
u7 v7
u6 v6
u5 v5
u4 v4
u3 v3
u2 v2
u1 v1
J = (1, 2, 7)
更進一步的, 對於從 (un+1, un+2, ..., un+m)到 (vJ (1), vJ (2), ..., vJ (m)) 互不相交的路徑組 我們可以將它如圖所示對偶.
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
u7 v7
u6 v6
u5 v5
u4 v4
u3 v3
u2 v2
u1 v1
我們將起點改成 (u1, u2, ..., un),而途中只要碰到在原本路徑組中垂直的邊我們便往下走, 容易知道最後終點會是 [m + n]/J, 且對偶後的路徑組中的路徑都不會相交. 而注意到這 即是 det(Fn,m(1, ..., n|[m + n]/J)), J ∈
([n + m]
m )
,
即 det(Gm,n(1, ..., m|J)) = det(Fn,m(1, ..., n|[m + n]/J)), 我們便可以將原本兩個不同類 型矩陣的子方陣行列式的乘積變成同樣類型的矩陣!
5.3 Resultant
由上一節
det(Fm,n· Gtm,n) = ∑
J∈([n+m]m )
det(Fm,n(1, ..., m|J)) · det(Gm,n(1, ..., m|J))
= ∑
J∈([n+m]m )
det(Fm,n(1, ..., m|J)) · det(Fn,m(1, ..., n|Jc))
= ∑
J∈([n+m]m )
(−1)sum(J )+m(m+1)2 det(Fm,n(1, ..., m|J)) · det(Fn,m′ (1, ..., n|Jc))
= det [ Fm,n
Fn,m′ ]
其中 Fn,m′ 代表將 Fn,m矩陣中第 i 列第 j 行的元素都乘上 (−1)m+n−(i+j), 而第 3 個等 式使用了 Laplace 展開定理.
現在計算 Fm,n裡的元素, 第 i 列第 j 行的元素 F (i, j) = fn,j−i,表示滿足 1 ≤ ai≤ 2n−1, ak+1≥ ak+ 2,且 |A| = j − i 不同的序列A 的個數, 而這相當於從 1, 2, 3, ..., 2n − 2, 2n − 1 中挑出 j − i 個數, 使得挑出來的任兩個數字都不相鄰. 因此 F (i, j) =
(2n− (j − i) j− i
) . 因 此我們可以用組合數寫出矩陣, 為了方便說明我們舉 n = 4, m = 3 作例子.
[ F3,4
F4,3′ ]
=
(8
0
) (
7 1
) (
6 2
) ( 5 3
) ( 4 4
) ( 3 5
) ( 2 6 ) ( 9
−1
) (
8 0
) (
7 1
) ( 6 2
) ( 5 3
) ( 4 4
) ( 3 5 ) (10
−2 ) (
9
−1 ) (
8 0
) ( 7 1
) ( 6 2
) ( 5 3
) ( 4 4 )
− (6
0
) (
5 1 )
− (4
2 ) (
3 3 )
− (2
4 ) (
1 5 )
− (0
6 ) ( 7
−1 )
− (6
0 ) (
5 1 )
− (4
2 ) (
3 3 )
− (2
4 ) (
1 5 )
− ( 8
−2 ) (
7
−1 )
− (6
0 ) (
5 1 )
− (4
2 ) (
3 3 )
− (2
4 ) ( 9
−3 )
− ( 8
−2 ) ( 7
−1 )
− (6
0 ) (
5 1 )
− (4
2 ) (
3 3 )
而如果將顯然為 0 的值先填上去, 如 (x
y )
中 x < 0 和 x > y 的情況.
[ F3,4
F4,3′ ]
=
(8
0 ) (
7 1
) ( 6 2
) ( 5 3
) ( 4 4 )
0 0
0
(8 0
) ( 7 1
) ( 6 2
) ( 5 3
) ( 4 4 )
0
0 0
(8 0
) ( 7 1
) ( 6 2
) ( 5 3
) ( 4 4 )
− (6
0 ) (
5 1 )
− (4
2 ) (
3 3 )
0 0 0
0 − (6
0 ) (
5 1 )
− (4
2 ) (
3 3 )
0 0
0 0 −
(6 0
) ( 5 1 )
− (4
2 ) (
3 3 )
0
0 0 0 −
(6 0
) ( 5 1 )
− (4
2 ) (3
3 )
出現了一個 Sylvester 矩陣的結構.
令 fn(t) =
∑n k=0
(n + k n− k )
tk. 這個函數和 Chebychev 第二類多項式有以下關聯
fn(t) = (−1)nU2n (i√
t 2
)
這可以由帶入驗證得知, Chebychev 第二類多項式為 U2n(t) =
∑n
(−1)n−k (n + k
n− k )
(2t)2k.