過去ログ

uchinyan
#26194の問題
>問題 平面上に点を100個とります。片側に50個の点があるような
>直線を引くことができることを示せ。
昨夜、一応考えてみたのですが、どうもうまい方法が思いつかず、他の方に譲ろうと思ったものの、
どなたも書き込まないようなので、一応、拙い、泥臭い、証明を。見落としがあるかもしれません (^^;

まず、平面に適当な直交座標系を導入し、各点に座標を与えます。
その座標で y 座標の値が一番大きいものから順番に、y 座標の値が等しい場合には x 座標の値が小さいものから順番に、
点に番号を振っていき、50 番目の点を P(p,q)、51番目の点を A(x0,y0) とします。
もし、q > y0 ならば、q > c > y0 となる c をとってきて、y = c とすれば、この直線が題意を満たします。
しかし、番号の与え方から、q < y0 はありえませんが、q = y0 は可能です。このときは次のようにします。
点 A と、1 番目、...、50 番目の点とを結んだ直線の傾きを計算し、傾きに正の値があればそれらの最小のものを a1 とし、
正の値がなければ a1 = 1 とします。
同様に、点 A と、52 番目、...、100 番目の点とを結んだ直線の傾きを計算し、傾きに正の値があればそれらの最小のものを a2 とし、
正の値がなければ a2 = 1 とします。
そして、a1, a2 のどちらよりも小さな正の値 a をとってきて、直線 y = a * (x - x0) + y0 をつくります。
これが、(両側ではなくて)「片側に50個の点がある」という題意を満たします。
すなわち、1 番目、...、50 番目の点 (x,y) に対しては、y >= y0 なので、
x > x0 ならば、番号の振り方から、y > y0 で、(y - y0)/(x - x0) > a より、y > a * (x - x0) + y0
x = x0 ならば、明らかに、y > y0 = a * (x - x0) + y0
x < x0 ならば、一般に y >= y0 ですが、a > 0 >= (y - y0)/(x - x0) より、y > a * (x - x0) + y0
となり、1 番目 〜 50 番目のすべての点は、直線 y = a * (x - x0) + y0 より上にあります。
また、52 番目、...、100 番目の点 (x,y) に対しては、y <= y0 なので、
x > x0 ならば、一般に y <= y0 ですが、a > 0 >= (y - y0)/(x - x0) より、y < a * (x - x0) + y0
x = x0 ならば、明らかに、y < y0 = a * (x - x0) + y0
x < x0 ならば、番号の振り方から、y < y0 で、a > (y - y0)/(x - x0) より、y < a * (x - x0) + y0
となり、52 番目 〜 100 番目のすべての点は、直線 y = a * (x - x0) + y0 より下にあります。
なお、51 番目は、直線 y = a * (x - x0) + y0 にのっています。
これが気持ち悪い、又は、問題が「直線の両側に 50 個ずつの点がある」の場合でも、1 番目 〜 50 番目のすべての点の y 座標と、
直線 y = a * (x - x0) + y0 で x を 1 番目 〜 50 番目の点の x 座標に一致させたときの y の値との 50 組を比較して、
その「差」の最小を ymin とすると、ymin は 0 ではないので、0 < b < ymin となる b をとることができまず。
そこで、直線 y = a * (x - x0) + (y0 + b) とすれば、51 番目の点はこの直線の下にきて、他は変わらないので、
「直線の両側に 50 個ずつの点がある」の場合でも大丈夫です。

なお、この証明は、非常にナイーブで拙い方法ですが、50 とか 100 とかには依存しません。
したがって、今の証明をそのまま拡張して、一般に、
・平面上に点を n 個とり、片側に m 個の点があるような直線を引くことができる。
・平面上に点を 2n 個とり、両側に n 個ずつの点があるような直線を引くことができる。
など、がいえるものと思います。
ネコの住む家   11月23日(水) 13:46:43   MAIL:uchi@sco.bekkoame.ne.jp   26195

過去問題一覧へ戻る