共找到 2 题
排序:
组题
本页 2 题去组卷
20计数原理与组合数学★★★★★
在研究并行计算的基本算法时,有以下简单模型问题:用计算机求 nn 个不同的数 v1v_1,v2v_2,⋯\cdots,vnv_n 的和 ∑i=1nvi=v1+v2+⋯+vn\sum_{i=1}^{n}v_i=v_1+v_2+\cdots+v_n,计算开始前,nn 个数存贮在 nn 台由网络连接的计算机中,每台机器存一个数. 计算开始后,在一个单位时间内,每台机器至多到一台其他机器中读数据,并与自己原有数据相加得到新的数据,各台机器可同时完成上述工作. 为了用尽可能少的单位时间,使各台机器都得到 ∑i=1nvi\sum_{i=1}^{n}v_i,方法可用下表表示:
\begin{array}{c} \hline \multirow{2}{*}{机器号} & \multirow{2}{*}{初始时} & \multicolumn{2}{c|}{第一单位时间} & \multicolumn{2}{c|}{第二单位时间} & \multicolumn{2}{c|}{第三单位时间} \\ \cline{3-8} & & 被读机号 & 结果 & 被读机号 & 结果 & 被读机号 & 结果 \\ \hline 1 & $v_1$ & 2 & $v_1+v_2$ & & & & \\ \hline 2 & $v_2$ & 1 & $v_2+v_1$ & & & & \\ \hline \end{array}
(1) 当 n=4n=4 时,至少需要多少个单位时间可完成计算? 把你设计的方法填入下表:
\begin{array}{c} \hline \multirow{2}{*}{机器号} & \multirow{2}{*}{初始时} & \multicolumn{2}{c|}{第一单位时间} & \multicolumn{2}{c|}{第二单位时间} & \multicolumn{2}{c|}{第三单位时间} \\ \cline{3-8} & & 被读机号 & 结果 & 被读机号 & 结果 & 被读机号 & 结果 \\ \hline 1 & $v_1$ & & & & & & \\ \hline 2 & $v_2$ & & & & & & \\ \hline 3 & $v_3$ & & & & & & \\ \hline 4 & $v_4$ & & & & & & \\ \hline \end{array}
(2) 当 n=128n=128 时,要使所有机器都得到 ∑i=1nvi\sum_{i=1}^{n}v_i,至少需要多少个单位时间可完成计算?
\begin{solution} \begin{enumerate} \item 一开始每台机器只含有一个初始数. 一个单位时间内,每台机器至多从一台其他机器读取一次数据,因此经过一个单位时间后,每台机器至多含有两个初始数,不能得到四个初始数的总和. 所以至少需要两个单位时间.
第一单位时间令机器 11 与机器 22 互相读取,机器 33 与机器 44 互相读取,于是四台机器分别得到 v1+v2v_1+v_2、v1+v2v_1+v_2、v3+v4v_3+v_4、v3+v4v_3+v_4. 第二单位时间令机器 11 与机器 33 互相读取,机器 22 与机器 44 互相读取,于是四台机器都得到 v1+v2+v3+v4=∑i=14viv_1+v_2+v_3+v_4=\sum_{i=1}^{4}v_i. 该方法确实在两个单位时间内完成,因此最少需要 22 个单位时间.
对应的填写如下: \begin{center} \begin{tabular}{l|ll|ll|ll} 机器号 & \multicolumn{2}{l|}{第一单位时间} & \multicolumn{2}{l|}{第二单位时间} & \multicolumn{2}{l}{第三单位时间} \ & 被读机号 & 结果 & 被读机号 & 结果 & 被读机号 & 结果 \ \hline 1 & 2 & v1+v2v_1+v_2 & 3 & v1+v2+v3+v4v_1+v_2+v_3+v_4 & & \ 2 & 1 & v2+v1v_2+v_1 & 4 & v1+v2+v3+v4v_1+v_2+v_3+v_4 & & \ 3 & 4 & v3+v4v_3+v_4 & 1 & v1+v2+v3+v4v_1+v_2+v_3+v_4 & & \ 4 & 3 & v4+v3v_4+v_3 & 2 & v1+v2+v3+v4v_1+v_2+v_3+v_4 & & \end{tabular} \end{center}
\item 经过一个单位时间,每台机器所含初始数据的种数至多扩大为原来的两倍. 经过 kk 个单位时间后,每台机器至多含有 2k2^{k} 个初始数. 要使每台机器都含有 128128 个初始数,必须满足 2k⩾128=272^{k}\geqslant128=2^{7},所以至少需要 77 个单位时间. 另一方面,将机器编号为 00,11,…\ldots,127127,在第 jj 个单位时间(j=0j=0,11,…\ldots,66)让编号为 ii 的机器读取编号为 ixor2ji\mathbin{\mathsf{xor}}2^{j} 的机器中的数据,其中 xor\mathsf{xor} 表示按位异或. 每次配对的两台机器互相读取,经过第 j+1j+1 个单位时间后,每台机器所含数据数翻倍. 七个单位时间后所有机器都得到总和. 因此最少需要 77 个单位时间. \end{enumerate} \end{solution}

2002 · 北京 · 秋季 · 理 · 第 20 题 · 解答题

查看答案和解析
21解析几何★★★★★
已知 O(0,0)O(0,0),B(1,0)B(1,0),C(b,c)C(b,c) 是 △OBC\triangle OBC 的三个顶点.
(1) 写出 △OBC\triangle OBC 的重心 GG,外心 FF,垂心 HH 的坐标,并证明 GG,FF,HH 三点共线; (2) 当直线 FHFH 与 OBOB 平行时,求顶点 CC 的轨迹.
\begin{solution} \begin{enumerate} \item 因为三角形的三个顶点为 O=(0,0)O=(0,0)、B=(1,0)B=(1,0)、C=(b,c)C=(b,c),且三点不共线,所以 c≠0c\ne0. 由重心坐标公式,
G=(b+13,c3)G=\left(\frac{b+1}{3},\frac{c}{3}\right)
外心 FF 在边 OBOB 的垂直平分线 x=12x=\frac12 上,设 F=(12,yF)F=\left(\frac12,y_F\right). 由 FO=FCFO=FC,有
(12)2+yF2=(b−12)2+(c−yF)2\left(\frac12\right)^2+y_F^2=\left(b-\frac12\right)^2+(c-y_F)^2
整理得 2cyF=b2+c2−b2cy_F=b^2+c^2-b,所以
F=(12,b2+c2−b2c)F=\left(\frac12,\frac{b^2+c^2-b}{2c}\right)
因为 OBOB 是水平线,过 CC 的高为 x=bx=b. 设垂心为 H=(b,yH)H=(b,y_H),又因 OH⊥BCOH\perp BC,故
(b,yH)⋅(b−1,c)=0(b,y_H)\cdot(b-1,c)=0
即 b(b−1)+cyH=0b(b-1)+cy_H=0,从而
H=(b,b(1−b)c)H=\left(b,\frac{b(1-b)}{c}\right)
再计算得
3G−2F=(b,c−b2+c2−bc)=(b,b(1−b)c)=H3G-2F=\left(b,c-\frac{b^2+c^2-b}{c}\right)=\left(b,\frac{b(1-b)}{c}\right)=H
于是 H−F=3(G−F)H-F=3(G-F),所以 GG、FF、HH 三点共线. \item 由于 OBOB 平行于 xx 轴,且 FHFH 为水平线,必须有
b2+c2−b2c=b(1−b)c\frac{b^2+c^2-b}{2c}=\frac{b(1-b)}{c}
化简得 c2=3b(1−b)c^2=3b(1-b),即
(b−12)2+c23=14\left(b-\frac12\right)^2+\frac{c^2}{3}=\frac14
因此顶点 C(b,c)C(b,c) 的轨迹是椭圆 (b−12)2+c23=14\left(b-\frac12\right)^2+\frac{c^2}{3}=\frac14. 三角形非退化要求 C≠OC\ne O,BB,而在 b=12b=\frac12、c=±32c=\pm\frac{\sqrt{3}}{2} 时三角形为正三角形,恰有 F=HF=H,直线 FHFH 不确定,所以还应去掉这四个点:O=(0,0)O=(0,0)、B=(1,0)B=(1,0)、(12,32)\left(\frac12,\frac{\sqrt{3}}{2}\right)、(12,−32)\left(\frac12,-\frac{\sqrt{3}}{2}\right). \end{enumerate} \end{solution}

2002 · 北京 · 秋季 · 理 · 第 21 题 · 解答题

查看答案和解析