misc-question/main.typ
2023-05-18 14:23:22 +08:00

778 lines
31 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#import "template.typ": *
#import "lib.typ": *
#show: project.with(
title: "杂题选讲",
)
#pagebreak()
#align(center,
table(
columns: 6,
stroke: none,
..for (name, fig) in (
"组合": combinatorics_icon,
"代数": algebra_icon,
"分析": analysis_icon,
"数论": number_thoery_icon,
"几何": geometry_icon,
"数理逻辑": logic_icon
) {
(stack(dir:ttb, fig, box[
#set text(10pt)
#name
], spacing: 4pt),)
}
)
)
#let problem_type = state("problem_type", ())
#show heading.where(level: 1): it => {
problem_id.step()
footer_title.update(it.body)
block(width: 100%)[
#place(
right + top,
dx: -5pt,
dy: -5pt,
stack(
dir: ltr,
spacing: 4pt,
..for t in problem_type.at(it.location()) {
(t,)
}
)
)
#set text(font: cnfont)
#block[
#set text(weight: "extralight", 40pt)
\##problem_id.display("1")
]
#block(stroke: (bottom: 15pt + rgb("B3E5FC"),), inset: -2pt)[
#set text(weight: "light", 30pt)
#h(10pt)
#it.body
]
#v(20pt)
]}
#pagebreak_until_odd()
#[] <MainStarted>
#problem_type.update((combinatorics_icon,))
= 随机游走的左端点
#identp 一个长度为 $n$ 的由 $-1$ 或 1 构成的序列 $a$,其中 1 的个数为 $c$ 个。我们称一个子区间合法是指该子区间的数的和大于等于 0。求证所有合法子区间的左端点的数量不超过 $2c$ 个。
== 提示
#identp 子区间是指序列中连续的一段,形式化地说,问题是求证:
$ abs(lr({l in NN[1..n] : exists l in NN[l..n],(sum_(k=l)^r a_k)>=0}))<=2c $
举个例子,若 $n=8,c=3$,序列 $a$ 为
$ -1,1,1,-1,-1,1,-1,-1 $
那么序列 $a$ 中所有合法子区间的左端点共有 5 个,为下面括号的位置
$ (-1),(1),(1),-1,(-1),(1),-1,-1 $
#pagebreak()
== 解答
#identp 对于某个序列 $a$,记 $S(a)$ 表示序列 $a$ 中所有合法子区间的左端点的数量。
#identp 如果 $a$ 存在一个 $-1$ 在一个 1 的后面,即存在下标 $i,j$ 满足 $i<j$ 且 $a_i=1,a_j=-1$,那么交换 $i,j$ 位置上的值后,得到一个新序列 $a'$,显然 $a'$ 中 1 的数量也为 $c$。
#lemma_icon 进行上述变换后所有合法子区间的左端点的数量不降,即 $S(a)<= S(a')$ 一定成立。
#identp 假设上述引理成立,那么我们就只需要论证由 $n-c$ $-1$ 开头,然后 $c$ 1 组成的序列 $b$ 满足 $S(b)<= 2c$,这是显然的。而对于任何其他序列,它们都可以通过有限次上述变换得到序列 $b$
#identp 下面我们证明该引理成立,考虑序列 $a$ 的前缀和序列 $p$
$ p_k=sum_(i=1)^k a_i $
那么左开右闭区间 $(l..r]$ 合法等价于 $p_r-p_l>=0$。设我们要交换序列 $a$ 中的 $i,j$ 位置,由于 $a_i=1$,所以 $p_(i-1)=p_i-1$ 。若某个位置 $k<i$ 本来某个合法区间的左端点,而交换 $i,j$ 位置上的值后它就不是了,那么一定有 $p_k=p_i$
#identp 那么找出 $i$ 前面第一个 $p_k=p_i$ 的位置(如果有)后,$k$ 以前的左端点都不会改变,因为 $p_k=p_i$ 说明 $i,k$ 位置是等价的。这说明 $S(a)<= S(a')$
#pagebreak_until_odd()
#problem_type.update((combinatorics_icon,))
= 取完全部球的时间
#identp 有 $n$ 种不同颜色,每种颜色各 $m$ 个球,一共 $n m$ 个彩色小球。现在每次均匀地随机取出一个小球(取出之后不放回去),则期望上取出多少个球后可以取完某种颜色的球?
== 提示
#identp 容易发现相同颜色的球是否视为一样对答案没有影响。
#identp 在这个问题中,当有 2 种颜色,每种颜色有 3 个球时(即 $n=2,m=3$),符合题目要求的取球方案共 20 种,枚举如下:
#let colored_circle_stack(colors, size: 10pt, numbered: false, active_number: none) = box(
width: if numbered { (size * 2.5) * colors.len() - size / 2 } else {size * (1 + colors.len())},
height: size * 2,
for i in range(colors.len()) {
place(
left + top,
dx: if numbered { 2.5 * i * size } else { i * size },
circle(
radius: size,
stroke: if i + 1 == active_number {
2pt + theme_black
} else {
1pt + theme_border
},
fill: if colors.at(i) == "r" {
theme_red
} else if colors.at(i) == "b" {
theme_blue
} else {
black
},
if numbered {
[
#set align(center + horizon)
#set text(font: cnfont, white)
#(i + 1)
]
}
)
)
}
)
#figure(
table(
columns: 2,
align: center + horizon,
[3], {
colored_circle_stack("rrrbbb")
h(10pt)
colored_circle_stack("bbbrrr")
},
[4], {
colored_circle_stack("rrbrbb")
h(10pt)
colored_circle_stack("rbrrbb")
h(10pt)
colored_circle_stack("rbbbrr")
linebreak()
colored_circle_stack("brrrbb")
h(10pt)
colored_circle_stack("brbbrr")
h(10pt)
colored_circle_stack("bbrbrr")
},
[5], {
colored_circle_stack("rrbbrb")
h(10pt)
colored_circle_stack("rrbbbr")
h(10pt)
colored_circle_stack("rbrbrb")
h(10pt)
colored_circle_stack("rbrbbr")
linebreak()
colored_circle_stack("rbbrrb")
h(10pt)
colored_circle_stack("rbbrbr")
h(10pt)
colored_circle_stack("brrbrb")
h(10pt)
colored_circle_stack("brrbbr")
linebreak()
colored_circle_stack("brbrrb")
h(10pt)
colored_circle_stack("brbrbr")
h(10pt)
colored_circle_stack("bbrrrb")
h(10pt)
colored_circle_stack("bbrrbr")
}
),
caption: [枚举 2 种颜色,每种 3 个球时所有可能的 20 种情况]
)
容易看出,其中取出 3 个球后可以取完某种颜色的球的方案 2 种,取出 4 个球的方案 6 种,取出 5 个球的方案 12 种,故 $n=2,m=3$ 时的答案为
$ 2/20 times 3+6/20 times 4+12/20 times 5=9/2 $
#pagebreak()
== 解答
#identp 我们用记号 $bf(E)(a)$ 表示随机试验中变量 $a$ 的数学期望。已经取出的球的数量简称为时刻,例如“取出某种颜色全部球的时刻”的意思是“取出某种颜色全部球时已经取出的球的数量”。
#identp 我们考虑给同种颜色的球编上 1 到 $n$ 的编号,这样这 $n m$ 个球各不相同,显然是否编号这对答案没有影响。按某种顺序取出这 $n m$ 个球全部取出,有 $(n m)!$ 种取法。
#identp 考虑把取球序列翻转过来,则原问题可以转化为 *第一次取出每种颜色的球至少一个的时刻*。举个例子,若 $n=2,m=3$,考虑下面取出球的序列:
#figure(colored_circle_stack("rbrrbb", numbered: true, active_number: 4))
#identp 如图,在第 4 次操作后(图中加粗位置),红色的球被全部取出了,此时把取球序列翻转就得到:
#figure(colored_circle_stack("bbrrbr", numbered: true, active_number: 3))
#identp 如图,在第 3 次操作后,全部颜色的球都被取出了至少一次,注意到这里的第 3 个球就是反转前的第 4 个球(由于翻转位置发生了改变,具体而言位置 $p$ 会变到位置 $n m+1-p$)。
#identp $S$ 表示每种颜色首次出现的时刻的可重集合,现在就是要求 $bf(E)(max S)$ 的值。根据容斥原理min-max容斥
#[
#show: math_numbering
$ bf(E)(max S)=sum_(T subset.eq S,T eq.not nothing)(-1)^(abs(T)-1)bf(E)(min T) $ <P2EqEmaxS1>
]
考虑 $bf(E)(min T)$ 的组合意义,可以看出它表示“首次出现 $T$ 集合中的任意一种颜色的球的时刻”,枚举这个时刻,得到
$ bf(E)(min T)=sum_(t\geq 0)(binom((n-abs(T))m,t)t!)/(binom(n m,t)t!)(t+1)(abs(T)m)/(n m-t) $
注意到这个式子只与集合 $T$ 的大小有关,而与 $T$ 中具体包含那些元素无关,因此考虑记
$ f(k)=sum_(t\geq 0)(binom((n-k)m,t)t!)/(binom(n m,t)t!)(t+1)(k m)/(n m-t) $
于是 $ bf(E)(min T)=f(abs(T)) $,代入@P2EqEmaxS1 得到,
#[
#show: math_numbering
$ bf(E)(max S)=sum_(T subset.eq S,T eq.not nothing)(-1)^(abs(T)-1) f(abs(T)) $ <P2EqEmaxS2>
]
我们首先专注于解出 $f(k)$ 的简化形式,展开二项式系数并通分,得到 $f(k)=sum_(t>=0)w_t$,其中
$ w_t=(((n-k)m)!(n m-t)!)/(((n-k)m-t)!(n m)!)(t+1)(k m)/(n m-t) $
,其相邻两项的比值由
$ (w_(t+1))/(w_t)&=((t+2) (m n-t) (m n-t-1)! (m (n-k)-t)!)/((t+1) (m n-t-1) (m n-t)! (m (n-k)-t-1)!)
\ &=((t+2)(t+k m-n m))/((t+1-n m)(t+1)) $
给出,这个比值可以看成关于 $t$ 的有理函数,因此可以将原式写作超几何函数的形式:
$ f(k)=k/n #hypergeometric-func($2, k m - n m$, $1 - n m$, 1) $
由组合意义可知,一定有 $k m-n m>=0$,因此可以应用范德蒙德卷积恒等式对其进行化简:
$ f(k)&=k/n (Gamma(- 1 - k m)Gamma(1 - n m))/(Gamma(- 1 - n m)Gamma(1 - k m))
\ &= (n m+1)/(k m+1) $
把这个化简后的结果代回@P2EqEmaxS2,然后再次转化为超几何函数并使用德蒙德卷积恒等式化简,可以解出
$ bf(E)(max S)&=sum_(T subset.eq S,T eq.not nothing) (-1)^(abs(T)-1) (n m+1)/(abs(T)m+1)
\ &= sum_(k=1)^n (-1)^(k-1) binom(n,k)(n m+1)/(k m+1)
\ &= (1 + n m) - (1 + n m) #hypergeometric-func($1 + k m, k - n$, $1 + m + k m$, 1)
\ &= n m + 1 - ((1 / m - 1)!n!)/((n+1/m - 1)!) $
注意,这个式子给出的是翻转过后的期望时刻,转化为原来问题才能得到最终答案:
$ bf(E)=((1 / m - 1)!n!)/((n+1/m - 1)!) $
#pagebreak_until_odd()
#problem_type.update((algebra_icon,))
= 社团数量的上限
#identp 现在有 $n$ 个人要成立若干个社团(一个人可以属于多个社团)满足:
- 每个社团的人数均为奇数;
- 任意两个不同的社团所共有的成员数量为偶数。
求证:所能成立的社团数量不超过 $n$ 个。
== 提示
#identp 形式化地说,记 $U={1,2,dots,n}$,已知集簇 $S subset.eq 2^U$ 满足对于任意 $A,B in S$$abs(A sect B)$ 为奇数当且仅当 $A=B$。求证 $abs(S)<= n$。
#identp 容易发现,只要每个人均成立一个只包含自己的社团,就可以成立恰好 $n$ 个社团满足每个社团的人数均为奇数1 个任意两个不同的社团所共有的成员数量为偶数0 个)。
#pagebreak()
== 解答
#identp 假设已经确定了某种成立 $m$ 个社团的方案,第 $i(1<= i<= m)$ 个社团包含的成员的集合记作 $C_i$
#identp $bb(Z)_2$,包含 ${0,1}$ 两个元素,在域上定义模 2 意义下的加法和乘法:
#[
#let cell_size = 30pt
#figure(stack(
dir: ltr,
spacing: cell_size,
table(
align: center + horizon,
columns: (cell_size, cell_size, cell_size),
rows: (cell_size, cell_size, cell_size),
$ + $, $ 0 $, $ 1 $,
$ 0 $, $ 0 $, $ 1 $,
$ 1 $, $ 1 $, $ 0 $,
),
table(
align: center + horizon,
columns: (cell_size, cell_size, cell_size),
rows: (cell_size, cell_size, cell_size),
$ times $, $ 0 $, $ 1 $,
$ 0 $, $ 0 $, $ 0 $,
$ 1 $, $ 0 $, $ 1 $,
)
), caption: [ $bb(Z)_2$ 上的加法和乘法 ])
]
#identp 构造 $ bb(Z)_2^(m times n)$ 上的矩阵 $A$,满足
$ A_(i,j)=cases(1 quad& j in C_i
\ 0 & j in.not C_i) $
考虑 $A A^transpose$ 这两个矩阵的乘积,是一个 $m times m$ 的矩阵,根据其第 $i$ 行第 $j$ 列的值所代表的实际意义,容易看出
$ (A A^transpose)_(i,j)=cases(1 quad& abs(C_i sect C_j) mtext("是奇数")
\ 0 & abs(C_i sect C_j) mtext("是偶数")) $
#identp 根据题目的约束条件,$abs(C_i sect C_j)$ 是奇数当且仅当 $i=j$,所以对角线上的数均为 1其余位置的数均为 0于是
#[
#show: math_numbering
$ A A^transpose= bf(I)_m $ <P2eq1>
其中 $bf(I)_m$ 表示 $m$ 阶单位矩阵。
#identp 我们用 $dim V$ 表示线性空间 $V$ 的维数,$frange T$ 表示线性变换 $T$ 的值域。由于 $A$ 是 $bb(Z)_2^n->bb(Z)_2^m$ 的线性变换,其值域的维数一定满足@P2inq1[不等式]。由于 $bf(I)_m$ 是 $bb(Z)_2^m->bb(Z)_2^m$ 的线性变换,其值域的维数一定满足@P2inq2[等式]
$ dimrange A<= n $ <P2inq1>
$ dimrange bf(I)_m=m $ <P2inq2>
#identp 另一方面,因为 $frange A A^transpose subset.eq frange A$,所以
#show: math_numbering
$ dimrange A A^transpose<=dimrange A $ <P2inq3>
]
联立上面的@P2eq1、@P2inq1、@P2inq2、@P2inq3就立即给出了我们欲证的结果
$ m=dimrange bf(I)=dimrange A A^transpose<=dimrange A<=n $
这表明 $m<= n$ 始终成立,原命题得证。
#pagebreak_until_odd()
#problem_type.update((combinatorics_icon,analysis_icon,))
= 不含三元环的最大边数
#identp 已知无向图 $G$ 由 $n$ 个点组成,且不包含三元环,求 $G$ 边数的最大值。
== 提示
#identp 设 $G=(V,E)$ 是一个无向图。我们称图 $G$ 中的一个“三元环”是指图 $G$ 中的三个点 $a,b,c$,满足 ${(a,b),(b,c),(a,c)} subset.eq E$。
#identp 例如当 $n=5$ 时,下面是一个不包含三元环的图的例子:
#figure(image(
"./assets/p4-explain.svg",
width: 80%
), caption: [一个没有三元环的示例图])
该图包含 5 个点和 6 条边,可以证明所有没有三元环的由 5 个点构成的无向图的边均不超过 6 条。
#pagebreak()
== 解答
#identp 对于这种求最大值的问题,我们可以首先尝试给出一种可行的构造,再证明它是最优的。
#identp 把图中的 $n$ 个点分为 2 个大小尽可能的集合 $A$ 和 $B$(即大小分别为 $floor(n/2)$ 和 $ceil(n/2)$),然后对于每对点 $a in A,b in B$,在点 $a$ 和点 $b$ 之间连一条边,并且不连接其他的任何边。这样得到的图中一共连接了 $floor(n^2/4)$ 条边,且由于任意两个属于同一个集合的点之间都没有连边,这个图中不包含任何三元环。这样的图被称为“完全二分图”。
#figure(image(
"./assets/p4-bipart.svg",
width: 60%
), caption: [7 个点的完全二分图,包含 12 条边])
#identp 下面我们要证明这个构造是最优的构造,即任何由 $n$ 个点组成,不包含三元环的无向图的边数都不可能超过 $floor(n^2/4)$。这里将给出 3 种不同的证明。
=== 证明 A
#[
#let dd = {$upright(d)$}
#identp 设 $G=(V,E)$ 是某个无向图,包含 $n$ 个点 $m$ 条边。点 $v$ 的度数是指连接点 $v$ 的边的数量,记作 $dd(v)$。于是有
#[
#show: math_numbering
$ sum_(x in V)dd(x)=2m $ <P4prove1eq1>
$ sum_(x in V)dd^2(x)=sum_((x,y)in E)dd(x)+dd(y) $ <P4prove1eq2>
]
#identp 现在假设 $G$ 不包含三元环。若 $(x,y)$ 是图 $G$ 的边,那么对于任意一个点 $v$,一定有 $(x,v)in.not E$ 或 $(y,v)in.not E$,这说明
$ dd(x)+dd(y)<= n $
#identp 将这个性质代入@P4prove1eq2得到
#[
#show: math_numbering
$ sum_((x,y)in E)dd(x)+dd(y)<= n m $ <P4prove1eq3>
另一方面,对@P4prove1eq1 使用柯西-施瓦茨不等式得到
$ sum_(x in V)dd^2(x)>=1/n lr((sum_(x in V)dd(x)))^2=(4m^2)/n $ <P4prove1eq4>
]
联立@P4prove1eq2、@P4prove1eq3、@P4prove1eq4得到
$ (4m^2)/n<=sum_(x in V)dd^2(x)=sum_((x,y)in E)dd(x)+dd(y)<=n m $
整理得到 $m<= n^2slash 4$,注意到 $n$ 为整数,于是 $m<=floor(n^2slash 4)$,命题得证。
=== 证明 B
#identp 设 $G=(V,E)$ 是某个不包含三元环的无向图,包含 $n$ 个点 $m$ 条边。两个点 $a,b in V$ 之间有连边,则称这两个点是“相邻的”,与点 $a$ 相邻的所有点构成的集合记作 $N(a)$。
#identp 由于 $G$ 不包含三元环,所以对于图中的任意一个点 $a$,与 $a$ 的相邻的点构成的集合 $N(a)$ 一定是独立集,即 $N(a)$ 中的任意两个都不是相邻的。
#identp 设 $A subset.eq V$ 是图 $G$ 中的一个最大独立集,那么对于任意一个点 $x$,一定有
#[
#show: math_numbering
$ dd(x)<=abs(A) $ <P4prove2eq1>
]
#identp 令 $B=V without A$。由于 $A$ 是独立集,所以 $G$ 中的每条边都至少有一个端点包含在 $B$ 中。于是
$ m<=sum_(x in B)dd(x)<=sum_(x in B)abs(A)=abs(A)abs(B)<=((abs(A)+abs(B))/2)^2=(n^2)/4 $
其中第二个不等号使用了@P4prove2eq1第三个不等号使用了均值不等式。注意到 $n$ 为整数,于是 $m<=floor(n^2slash 4)$,命题得证。
=== 证明 C
#identp 设 $G=(V,E)$ 是某个不包含三元环的无向图,包含 $n$ 个点 $m$ 条边。考虑一个随机均匀的排列顶点排列 $sigma$,令
$ X={v in V:v mtext("与") sigma mtext("中所有早于") v mtext("出现的顶点相邻")} $
#identp 由于排列是均匀随机选择的,以及一个顶点 $x in X$ 当且仅当它出现在其所有不相邻的顶点之前,我们有
#[
#show: math_numbering
$ bf(P)(v in X)=1/(n-dd(v)) $ <P4prove3eq>
]
其中 $bf(P)(e)$ 表示事件 $e$ 发生的概率。另一方面,考虑 $X$ 的组合意义,注意到 $X$ 中的顶点集合形成一个团(图 $G$ 的子图,并且是完全图),所以一定有 $abs(X)<=2$,这给出
$ 2>=bf(E)(abs(X))=sum_(v in V)bf(P)(v in X)=sum_(v in V)1/(n-dd(v))>=n/(n-2m slash n) $
其中 $bf(E)(a)$ 表示随机试验中变量 $a$ 的数学期望。第一个等号使用了数学期望的定义,第二个等号使用了@P4prove3eq第二个不等号利用了函数的凸性也即琴生不等式。这个式子整理得到 $m<=n^2 slash 4$,原命题得证。
#identp 这个证明使用了现代组合学中的一种名为“概率方法”的技术。在这种方法中,人们以一种巧妙的方式向确定性问题中引入随机性来得到一个确定性的结果。
]
#pagebreak_until_odd()
#problem_type.update((geometry_icon,))
= 无交点的匹配方案
#identp 平面上有红色点和蓝色点各 $n$ 个,且这 $2n$ 个点没有三个点共线。我们称一种红蓝点之间的配对方案合法,是指在每对点之间用线段连接后,得到的 $n$ 条线段没有交点。求证:一定存在一种合法的配对方案。
== 提示
#identp 形式化地说,设 $U={1,2,dots,n}$,红色点分别为 $p_1,dots,p_n$,蓝色点分别为 $q_1,dots,q_n$。一种配对方案是指 $U -> U$ 的一个双射 $f$。一种配对方案合法当且仅当线段集合 ${(p_k,q_{f(k)}):k in U}$ 中任意两条线段均不相交。
#identp 举个例子,对于红蓝各 3 个点的一种情况,下图为一种合法的配对方案,
#align(center,
stack(
dir: ltr,
figure(image(
"./assets/p5-explain-ok.svg",
width: 40%,
), caption: [一种合法方案]),
figure(image(
"./assets/p5-explain-bad.svg",
width: 40%
), caption: [一种不合法方案]),
)
)
#pagebreak()
== 解答
#identp 红蓝各 1 个点的情况的情况是平凡的,下面均假设 $n>=2$。
#identp (反证法,无穷递降法)假设不存在一种合法的配对方案。从全部配对可能的方案中选出连接的线段长度之和最短的一种方案之一,根据反证假设一定存在两条线段相交。如图,设相交的两条线段的红色端点分别为点 $A$ 和点 $B$,蓝色端点分别为点 $C$ 和点 $D$$A$ 和 $C$ 配对,$B$ 和 $D$ 配对,$A C$ 和 $B D$ 的交点为 $E$。
#figure(image(
"./assets/p5-intersect.svg",
width: 40%
), caption: [交点示意图])
#identp 根据三角形不等式(由于没有三点共线,等号一定不成立),一定有
#[
#show: math_numbering
$ abs(A D)&<abs(A E)+abs(D E) $ <P5eq1>
$ abs(B C)&<abs(B E)+abs(E C) $ <P5eq2>
]
将@P5eq1 和@P5eq2 相加,得到
$ abs(A D)+abs(B C)<abs(A C)+abs(B D) $
#identp 这说明,将 $A$ 和 $D$、$B$ 和 $C$ 配对的方案一定比将 $A$ 和 $B$、$C$ 和 $D$ 配对的方案的线段长度之和更短,这与反正假设矛盾,故假设不成立。于是合法方案一定存在,命题得证。
#pagebreak_until_odd()
#problem_type.update((algebra_icon, geometry_icon,))
= 距离为奇整数的点
#identp 求证:在平面上不存在 4 个点,使得任意一对点之间的距离均为某个奇整数。
== 提示
#identp 这里所说的距离是指欧几里得距离,即点 $(x_1,y_1)$ 和 $(x_2,y_2)$ 之间的距离由
$ sqrt((x_1-x_2)^2+(y_1-y_2)^2) $
给出。
#identp 容易发现,平面上 3 个点两两之间的距离均为奇整数是可能的(边长为 1 的等边三角形)。
#pagebreak()
== 解答
#identp (反证法)假设存在四个点两两之间的距离均为奇数。不妨设其中一个点为的向量 $bf(0)$,另外三个点的向量分别为 $a,b,c$。用记号 $inprod(u,v)$ 表示向量 $u$ 和向量 $v$ 的点积(又称“内积”),记号 $abs(v)$ 表示向量 $v$ 的模长(又称“绝对值”)。根据距离的定义,它们之间的关系由@P6eq1 给出。
#[
#show: math_numbering
$ abs(v)=sqrt(inprod(v,v)) $ <P6eq1>
#identp 根据反证假设,有 $abs(a)$、$abs(b)$、$abs(c)$、$abs(a-b)$、$abs(b-c)$ 以及 $abs(c-a)$ 均为奇整数。
#identp 考虑定义了模 8 意义下的加法和乘法整数域 $bb(Z)_8$,容易发现其中任意一个奇数的平方一定为 1。据此根据余弦定理和@P6eq1得到
$ 2 inprod(a,b)=abs(a)^2+abs(b)^2-abs(a-b)^2=1 $ <P6odd1>
类似的,有
$ 2 inprod(a,c)=1 $ <P6odd2>
$ 2 inprod(b,c)=1 $ <P6odd3>
]
#identp 构造 $bb(Z)_8^(3 times 3)$ 上的矩阵 $B$
$ B=mat(delim: "[",
inprod(a,a),inprod(a,b),inprod(a,c);
inprod(b,a),inprod(b,b),inprod(b,c);
inprod(c,a),inprod(c,b),inprod(c,c)) $
根据@P6eq1、@P6odd1、@P6odd2 与@P6odd3
$ 2B=mat(delim: "[",
2,1,1;
1,2,1;
1,1,2) $
#identp 我们用 $dim V$ 表示线性空间 $V$ 的维数,$frange T$ 表示线性变换 $T$ 的值域,$fnull T$ 表示线性变换 $T$ 的零空间(经过 $T$ 变为 $bf(0)$ 的向量构成的子空间)。容易验证 $dimrange 2B=3$,于是
#[
#show: math_numbering
$ dimrange B=3 $ <P6eq2>
]
#identp 另一方面,构造 $bb(Z)_8^(3 times 2)$ 上的矩阵 $A$,满足
$ A=mat(delim: "[",
a_1,b_1,c_1;
a_2,b_2,c_2) $
容易验证 $B=A^transpose A$,于是 $frange B subset.eq frange A^transpose$,另一方面,根据线性变换基本定理,有
$ dim bb(Z)_8^2=dimrange A^transpose+dimnull A^transpose $
这说明,$dimrange A^transpose<=2$,与@P6eq2 联立,得到
$ 3=dimrange B<=dimrange A^transpose<=2 $
这给出了 $3<=2$ 这样的错误的结果,故假设不成立,原命题得证。
#pagebreak_until_odd()
#problem_type.update((geometry_icon,number_thoery_icon,algebra_icon))
= 格点正多边形
#identp 求证:如果一个正多边形的每个顶点的横纵坐标均为整数,那么它一定是一个正方形。
== 提示
#identp 每个顶点的横纵坐标均为整数的多边形常常被称为“格点多边形”。
#identp 这里所说的正 $k(k>=3)$ 边形是指一个有恰好 $k$ 条边(以及 $k$ 个顶点)的凸多边形,使得每一条边的长度都相等。一般而言,我们把正三边形叫做“等边三角形”,把正四边形叫做“正方形”。
#align(center,
stack(dir: ltr,
figure(image(
"./assets/p7-triangle.svg",
width: 30%,
), caption: [等边三角形]),
figure(image(
"./assets/p7-square.svg",
width: 30%
), caption: [正方形]),
figure(image(
"./assets/p7-pentagon.svg",
width: 30%
), caption: [正五边形])
)
)
#identp 事实上,题目中的整数也可以换成有理数,因为一个每个顶点的横纵坐标均为有理数的图形只要恰当放大一个比例就一定可以得到一个每个顶点的横纵坐标均为整数的图形。
#identp 显然存在许多正方形,满足每个顶点的横纵坐标均为整数。
#pagebreak()
== 解答 A
#identp 我们将给出两种不同的解答,在这个解答里,我们会使用“无穷递降法”来说明这个问题。
#identp 下面首先分类讨论对于等边三角形的情况,不妨设等边三角形的三个顶点分别为 $A(0,0)$、$B(b_1,b_2)$ 和 $C(c_1,c_2)$。于是根据勾股定理,有
$ cases(b_1^2+b_2^2=c_1^2+c_2^2,b_1^2+b_2^2=(c_1-b_1)^2+(c_2-b_2)^2) $
把 $b_1$ 和 $b_2$ 看做常数,$c_1$ 和 $c_2$ 看做未知数,这组方程解得
$ cases(c_1=1/2 (b_1 - sqrt(3) b_2),c_2=1/2 (sqrt(3) b_1+b_2)) #tab #mtext("或") #tab cases(c_1=1/2 (b_1 + sqrt(3) b_2),c_2=1/2 (-sqrt(3) b_1+b_2)) $
#identp 由于 $sqrt(3)$ 是无理数,当 $b_1$ 和 $b_2$ 均为整数时,$c_1$ 和 $c_2$ 必定都是无理数,也即不是整数。因此,每个顶点的横纵坐标均为整数的等边三角形不存在。
#identp 在说明一般情况之前,我们首先要引入如下引理:
#lemma_icon 一个横纵坐标均为整数的点绕着另一个横纵坐标均为整数的点旋转 $90 degree$ 后得到的点仍然是一个横纵坐标均为整数的点。(算出旋转后的点的坐标即可完成证明,读者自行验证该引理。)
#identp 下面说明一般情况,(反证法,无穷递降法)假设存在格点正 $k(k>=5)$ 边形。从所有的格点正 $k$ 边形中找出面积最小的一个,设它的顶点按逆时针顺序依次为 $P_1,dots,P_k$。对于每个顶点 $P_i$,把它绕点 $P_(i-1)$(特别地,点 $P_1$ 绕点 $P_k$)逆时针旋转 $90 deg$,得到点 $Q_i$(如@P7fig1
#align(center, stack(dir: ltr, spacing: 5%,
[#figure(image(
"./assets/p7-solA-hexagon.svg",
width: 40%,
), caption: [旋转后的得到的点]) <P7fig1>],
[#figure(image(
"./assets/p7-solA-hexagon2.svg",
width: 40%,
), caption: [连接辅助线]) <P7fig2>]
))
#identp 下面我们证明 $Q_1 dots.c Q_k $ 也是一个正 $k$ 边形(为了方便描述,我们给出 $Q_1 Q_2=Q_2 Q_3$ 的证明,其它的边之间的相等关系是同理可证的)。如@P7fig2连接 $P_1 Q_1$、$P_1 Q_2$、$P_2 Q_2$、$P_2 Q_3$ 以及 $P_3 Q_3$ 五条线段。由于正多边的每个内角和每条边都相等,在 $trig P_1 P_2 Q_2$ 和 $trig P_2 P_3 Q_3$ 中,我们有
$ cases(P_1 P_2=P_2 P_3,angle P_1 P_2 Q_2=angle P_2 P_3 Q_3,P_2 Q_2=P_3 Q_3) $
所以 $trig P_1 P_2 Q_2 tilde.eqq trig P_2 P_3 Q_3$SAS于是 $P_1 Q_2=P_2 Q_3$ 以及 $angle Q_2 P_1 Q_1=angle Q_3 P_2 Q_2$。类似的,在 $trig Q_2 P_1 Q_1$ 和 $trig Q_3 P_2 Q_2$ 中,
$ cases(P_1 Q_2=P_2 Q_3,angle Q_2 P_1 Q_1=angle Q_3 P_2 Q_2,P_1 Q_1=P_2 Q_2) $
所以 $trig Q_2 P_1 Q_1 tilde.eqq trig Q_3 P_2 Q_2$SAS这说明 $Q_1 Q_2=Q_2 Q_3$,于是 $Q_1 dots.c Q_k$ 也是一个正 $k$ 边形。因为 $k>=5$,正 $k$ 边形的每个内角均大于 $90 degree$,故点 $Q_1,dots,Q_k$ 均在多边形 $P_1 dots.c P_k$ 的内部,即多边形 $Q_1 dots.c Q_k$ 的面积小于多边形 $P_1 dots.c P_k$ 的面积,矛盾,故假设不成立。
#identp 综上所述,不存在格点等边三角形,也不存在格点正 $k$ 边形(其中 $k>=5$),故只可能存在格点正方形,原命题得证。
== 解答 B
#identp 设格点三角形的三个顶点分别为 $A(0,0)$、$B(b_1,b_2)$ 和 $C(c_1,c_2)$。通过平行四边形割补,不难得出 $trig A B C$ 的面积
#[
#show: math_numbering
$ S_(trig A B C)=1/2 abs(b_1 c_2 - b_2 c_1) $ <P7solBeq1>
]
是一个有理数,而任意格点多边形都可以划分为若干个不相交的格点三角形。于是我们得出了这样一个引理:
#lemma_icon 任意一个格点多边形的面积均为有理数。
#identp 另一方面,我们容易推导出正多边形的面积公式是
$ S=(n a^2)/(4 tan pi/n) $
其中 $n$ 表示该正多边形的边数,$a$ 表示正多边形的边长。若该正多边形至少有一条边的两个端点的横纵坐标均为整数,则 $a^2$ 一定是一个有理数,故正多边形的面积 $S$ 是有理数当且仅当 $tan pi/n$ 是有理数。
#identp 由@P7solBeq1 我们知道,一个格点多边形的面积一定是一个有理数,因此我们只需说明“对于任意整数 $n>=3$$n=4$ 当且仅当 $tan pi/n$ 是有理数”,即可完成对原命题的论证。这个命题可以很容易地使用抽象代数中关于“首一多项式”和“代数整数”的相关理论证明,下面则给出一个较为繁琐的初等方法。
#identp 我们首先用反证法说明奇整数 $n>=5$ 时,$cos^2 pi/n$ 的值为无理数。假设 $n>=3$ 是某个奇整数,且 $cos^2 pi/n$ 的值为有理数,不妨设为 $p/q$,其中 $q>0$,且整数 $p,q$ 互质。于是
#[
#show: math_numbering
$ cos pi/n=sqrt(p/q) #tab sin pi/n=sqrt(1-p/q) $ <P7solBabasic>
]
#identp 考虑对欧拉公式 $(cos pi/n+ii sin pi/n)^n=-1$ 使用二项式定理展开,得到
#[
#show: math_numbering
$ sum_(k=0)^n binom(n,k) ii^k sin^k pi/n cos^(n-k)pi/n=-1 $ <P7solBaexpand>
]
取出@P7solBaexpand 两边的实数部分,并代入@P7solBabasic得到
#[
#show: math_numbering
$ sum_(k=0)^(floor(n\/2)) binom(n,2k)(-1)^k (1-p/q)^k (p/q)^(n/2-k)=-1 $ <P7solBareal>
]
我们知道 $q != 0$,于是我们可以在@P7solBareal 两边同时乘以 $sqrt(q^n p)$,这给出
#[
#show: math_numbering
$ sum_(k=0)^(floor(n\/2)) binom(n,2k)(-1)^k (q-p)^k p^((n+1)/2-k)=-sqrt(q^n p) $ <PgirdsolBafinal>
]
#identp 当 $0<=k<=floor(n\/2)$ 时,由于我们假设 $n$ 为奇整数,故一定有 $(n+1)/2-k>=1$,同时 $binom(n,2k)$、$(-1)^k$ 与 $(q-p)^k$ 这三项一定均为整数,于是@PgirdsolBafinal 中左边的和式中的每一项都一定是 $p$ 的整数倍,于是 $sqrt(q^n p)$ 一定是 $p$ 的整数倍,也即 $gcd(p,q)=p$,又因为 $p,q$ 互质,于是一定有 $p=1$,也即 $cos^2 pi/n=1/q$。
#identp 至此,我们论证了对于每个奇整数 $n>=3$,要么 $cos^2 pi/n$ 是无理数,要么存在正整数 $q$ 使得 $cos^2 pi/n=1/q$ 。对于每个 $n>=5$,一定有
$ 1>cos^2 pi/n>=cos^2 pi/5=1/16 (1+sqrt(5))^2>1/3 $
于是不存在一个正整数 $q$ 使得 $cos^2 pi/n=1/q$。
#identp 综上所述,对于每个奇整数 $n>=5$,一定有 $cos^2 pi/n$ 是无理数。更进一步地,有 $cos pi/n$ 也是无理数。
#identp 对于一个整数 $n>=4$,我们可以把它写成 $n=p 2^k$ 的形式,其中 $p$ 是一个奇整数,$k$ 是一个自然数。下面我们对 $k$ 使用数学归纳法以证明“对于每个 $n>=4$ 均有 $cos pi/4$ 为无理数”。
#identp 具体地说,用 $P(k)$ 表示关于自然数 $k$ 的命题模式“对于任意奇整数 $p$ 满足 $p 2^k>=4$,均有 $cos pi/(p 2^k)$ 是无理数”。显然 $P(0)$ 我们前面已经证明过的奇数情况,故 $P(0)$ 成立。
#identp 现在假设 $P(k)$ 成立,目标是证明 $P(k+1)$ 也成立。根据余弦函数的倍角公式(也称“升幂/降幂公式”)$cos 2alpha=2cos^2alpha-1$,于是
$ cos pi/n=2cos^2 pi/(2n)-1 $
因此如果 $cos pi/n$ 是无理数,那么 $cos pi/(2n)$ 也是无理数。当 $p 2^k>=4$ 时,向这个结论代入 $n=p 2^(k+1)$:根据归纳假设有 $cos pi/(p 2^k)$ 是无理数,于是 $cos pi/(p 2^(k+1))$ 也是无理数。而当 $p 2^k<4$ 但是 $p 2^(k+1)>=4$ 时,显然 $p 2^(k+1)$ 的值只能为 4 或 6并且容易发现
$ cos pi/4 = sqrt(2)/2 #tab cos pi/6=sqrt(3)/2 $
亦均为无理数,于是 $P(k+1)$ 成立。
#identp 根据数学归纳原理,对于任意自然数 $k$$P(k)$ 成立。也就是说,我们证明了对于任意的 $n>=4$,均有 $cos pi/n$ 为无理数。
#identp 下面我们开始说明对于除了 1,2 和 4 之外的正整数 $n$$tan pi/n$ 都是无理数。首先,根据正切函数的余弦方程(中文语境也称“万能公式”)$cos 2alpha=(1-tan^2 alpha)/(1+tan^2 alpha)$,有
$ cos pi/n=(1-tan^2 pi\/2n)/(1+tan^2 pi\/2n) $
因此对于每个偶整数 $n>=8$,均有 $tan pi/n$ 为无理数。
#identp 另一方面,根据正切的余弦表达式 $tan^2 alpha=1\/cos^2 alpha-1$,有
$ tan^2 pi/n=1/(cos^2 pi/n)-1 $
而我们之前已经证明了当 $n>=5$ 是奇整数时,$cos^2 pi/n$ 是无理数,故对于任意奇整数 $n>=5$$tan pi/n$ 都是无理数。
#identp 最后,容易发现
$ tan pi/3=sqrt(3) #tab tan pi/6=sqrt(3)/3 $
亦均为无理数。
#identp 综上所述,对于除了 1,2 和 4 之外的正整数 $n$$tan pi/n$ 都是无理数。