アルゴリズムと計算量の問題
を 以上の整数とする。相異なる 個の実数からなる列 が与えられたとき、 が単調であるかどうか、すなわち「 または 」が成り立つかどうかを判定し、「はい」または「いいえ」を出力する問題を考える。
判定を行うアルゴリズムは決定的であり、入力の値には「2 つの添字 を指定して かどうかを調べる」比較によってのみアクセスできるものとする。どの比較を次に行うか、いつ停止して何を出力するかは、それまでの比較の結果だけから決まる。
この判定を常に正しく行う任意のアルゴリズムに対し、比較を少なくとも 回行う入力が存在すること、すなわち最悪の場合の比較回数が 以上であることを証明せよ。
この問題で使うもの
- ソート・探索の最悪比較回数(説明と入口の問題)
この問題を解けるようになるまで(17 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
特定の入力を 1 つ選び、その入力に対して「必ず比較しなければならない対」が 組あることを示す方針(敵対者論法)で考えましょう。
ヒント 2
入力 を考えます。 と を直接比較しなかったとすると、この 2 つの値を入れ替えた入力と区別できないことを使います。
ヒント 3
対 が比較されなかったと仮定し、値を入れ替えた入力 を作ります。 が単調でないこと( の場合に を使います)と、 以外の比較の結果が変わらないことを確かめましょう。
採点の観点と模範解答
自分で証明を書いてから、採点の観点で見比べてください。
採点の観点を見る
単調な入力 を選び、隣り合う添字の対 が相異なる 組あることを述べている(1 点)
ある対 が比較されないと仮定し、その 2 つの値を入れ替えた入力 を作り、 が増加列でも減少列でもないことを と に分けて( を使って)示している(3 点)
入れ替えた対以外のすべての比較の結果が と で変わらないことを、他の値が と の間にないことから示している(2 点)
決定性から と で比較の列と出力が一致することを帰納的に示し、正しい答えが異なることと矛盾させている(3 点)
1 回の比較で 1 組しか調べられないことから、比較回数が 以上であると結論している(1 点)
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
模範解答を読む
判定を常に正しく行うアルゴリズムを 1 つ固定する。特定の入力を 1 つ選び、その入力に対してアルゴリズムが相異なる 組の添字の対をすべて比較しなければならないことを示す。
入力の選び方. 入力 を とする。値は相異なり、 なので は単調であり、正しい出力は「はい」である。添字の対 は相異なる 組である。
主張. アルゴリズムは入力 に対して、各 について と の比較を少なくとも 1 回行う。
背理法で示す。ある について、入力 での実行中に と の比較が一度も行われなかったと仮定する。入力 を、 の 番目と 番目の値だけを入れ替えたもの、すなわち , , では とする。 の値は と同じ集合なので相異なり、 は正当な入力である。
(i) は単調でないこと: なので は増加列ではない。また減少列でないことを示すため、 となる を見つける。 のときは である。 のときは より が存在し、 である。いずれの場合も は減少列ではない。よって は単調でなく、正しい出力は「いいえ」である。
(ii) 対 以外の比較の結果は と で同じであること: がどちらも と異なるときは , なので結果は同じである。一方だけが または のとき、もう一方の添字 の値 は のどちらとも異なる整数なので、 または である。 なら のどちらでも は 番目・ 番目の値( と )より小さく、 ならどちらでも大きい。よって比較結果は変わらない。
(iii) 実行が同じになること:比較の回数についての帰納法で、 と での実行が一致することを示す。 と で最初の 回の比較が同じ対で同じ結果であるとする( のときは何も比較していないので成り立つ)。アルゴリズムは決定的で、次の動作はそれまでの比較結果だけで決まるので、 回目の動作(次に比較する対、または停止して出力する内容)は と で同じである。それが比較であれば、 での実行では対 は比較されないのでこの対は ではなく、(ii) より結果も同じである。よって と での実行は、比較の列とその結果、および最後の出力まで完全に一致する。
したがってアルゴリズムは と に同じ答えを出力する。ところが正しい出力は では「はい」、 では「いいえ」であるから、どちらか一方で誤った答えを出力する。これはアルゴリズムが常に正しく判定することに反する。よって主張が示された。
結論. 1 回の比較で調べられる添字の対は 1 組だけなので、入力 に対して相異なる 組の対 をすべて比較するには、少なくとも 回の比較が必要である。アルゴリズムは任意だったので、比較だけで単調性を正しく判定する任意のアルゴリズムは、最悪の場合 回以上の比較を行う。