2013年3月26日下午03:27
Tanya Khovanova和Joel Brewster Lewis
在摩天大楼拼图中,你必须输入一个从1到n个在方形网格的每个单元格中。整数表示建筑物的高度。每一行和每一列都需要填满不同高度的建筑,网格外的数字表示从这个方向可以看到多少建筑。例如,在序列213645中,您可以从左侧(2、3、6)看到3栋建筑,从右侧(5、6)可以看到2栋建筑。
在数学术语中,我们被要求建立一个拉丁方,使每一行是长度的排列n个具有给定数量的从左到右和从右到左最大值。下面的7乘7拼图来自第八届世界拼图锦标赛。
众所周知,拉丁方块很复杂,很难理解,所以我们讨论的不是整个谜题,而是单行的数学。如果你忽略了所有其他信息,你能对一行说什么?首先,让我们告诉你外面的数字必须在1到之间n个。左右数字之和需要介于3和之间n+1我们把证明留作练习。
让我们继续最简单的例子。假设这两个数字是n个和1。在这种情况下,该行已完全定义。只有一种可能性:建筑应该从我们看到所有建筑的一侧按递增顺序排列。
现在我们来谈谈我们感兴趣的问题。给定这两个外部数字,建筑物可能有多少排列?假设网格大小为n个外面的数字是一和b条。让我们用表示置换的总数(f)n个(a、b)。我们假设一在左边b条在右边。
在前面的示例中,我们展示了(f)n个(n,1)=1.当然我们有(f)n个(a,b)=fn个(b、a).
让我们讨论几个其他示例。
首先,我们想讨论边界数之和最小的情况——3。在这种情况下,(f)n个(1,2)是(n−2)!的确,我们需要把最高的建筑放在左边,第二高的放在右边。之后,我们可以随意排列剩余的建筑。
其次,我们想讨论边界数之和最大的情况-n+1在这种情况下(f)n个(a,n+1-a)是(n-1)选择(a-1)的确,最高建筑的位置是独一无二的,它必须采用一-从左边数第个点。然后我们可以选择一组a-1型从最高的建筑向左延伸的建筑,其位置由这组建筑唯一定义。
在进一步讨论之前,让我们看看如果只给出一个最大值会发生什么。让我们用表示克n个(a)的排列数n个你可以看到的建筑物一左边的建筑。如果我们把最短的建筑放在左边,那么剩下的建筑需要安排好,以便你能看到a-1型其中之一。如果最短的建筑不在左边,那么它可以位于n-1个我们仍然需要重新整理剩余的建筑,以便我们能看到一其中之一。我们刚刚证明了函数克n个(a)满足重现性:
事实上克n个(a)是一个众所周知的函数。数字克n个(a)被称为第一类无符号斯特林数(请参见https://oeis.org/A132393); 他们不仅计算具有给定数量的从左到右(或从右到左)最大值的排列,而且还计算具有给定循环数的排列,它们显示为乘积中的系数(x个+ 1)(x个+ 2)(x个+ 3)…(x个+n个)等等。(另一对练习。)
我们现在可以计算(f)n个(1,b).最高的建筑必须在左边,其余的可以安排,这样除了最高的建筑外,b-1级从右边可以看到更多的建筑。就是这样(f)n个(1,b)=克n-1个(b-1).
以下是非零值表(f)n个(1,b).
|
b=2 |
b=3 |
b=4 |
b=5 |
b=6 |
b=7 |
n=2 |
1 |
|
|
|
|
|
n=3 |
1 |
1 |
|
|
|
|
n=4 |
2 |
三 |
1 |
|
|
|
n=5 |
6 |
11 |
6 |
1 |
|
|
n=6 |
24 |
50 |
35 |
10 |
1 |
|
n=7个 |
120 |
274 |
225 |
85 |
15 |
1 |
现在我们有了考虑一般情况所需的一切。在任何长度排列中n个,从左到右的最大值包括n个所有从左到右的最大值都位于其左侧;类似地,从右到左的最大值包括n个所有从右到左的最大值都在它的右边。我们可以用以下公式计算任何排列(f)n个(a、b)并将其分为两部分:如果值n个已就位k+1(千分之一)对于某些0≤k≤n-1,第一个k个值构成一个置换a–1个从左到右的最大值和最后一个n–k–1值构成一个置换b–1个从右向左最大,没有其他限制。因此:
我们坐一张桌子(f)7(a、b),其中我们已经计算了第一行:
|
b=1 |
b=2 |
b=3 |
b=4 |
b=5 |
b=6 |
b=7 |
a=1 |
0 |
120 |
274 |
225 |
85 |
15 |
1 |
a=2 |
120 |
548 |
675 |
340 |
75 |
6 |
0 |
a=3 |
274 |
675 |
510 |
150 |
15 |
0 |
0 |
a=4 |
225 |
340 |
150 |
20 |
0 |
0 |
0 |
a=5 |
85 |
75 |
15 |
0 |
0 |
0 |
0 |
a=6 |
15 |
6 |
0 |
0 |
0 |
0 |
0 |
a=7 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
我们看到,上述谜题的前两行对应于最坏的情况。如果忽略所有其他约束,则有675种方法可以填充前两行中的每一行。顺便说一下,填写最难的行的方法的顺序n个从1到10是:1、1、2、6、22、105、675、4872、40614、403704。最大化对(a、b)是(1,1)、(1,2)、(2,2)、(2,2)、(2,2)、(2,3)、(2,3)、(2,3)、(3,3)。
实际的摩天大楼拼图是为了有一个独特的解决方案而设计的。正是行和列之间的相互作用使得整体解决方案的数量减少到一个。
共享: