さがす——まっすぐに
いちばん正直なさがし方
ロッカーの番号札が10枚、ならんでいます。この中に「42」はあるでしょうか。
なにも工夫しないなら、手順はひとつです。先頭から1つずつ、順にくらべる。この手順は「まっすぐさがす」——線形探索(せんけいたんさく)と呼ばれます。再生して、くらべた回数を見てください。
1番目は 3。42 ではない
42は6番目にいたので、6回で見つかりました。地味ですが、この手順には良いところがあります。数列がどんな順番でも働くこと、そして手順として完璧に曖昧さがないことです。
運しだいで、回数が変わる
探し物の欄を打ちかえて、遊んでみてください。「3」をさがすと1回で終わります。「91」なら10回かかります。
同じ手順なのに、回数は探し物の居場所しだいで変わる——そこで手順を測るときは、場合を分けて考えます。
- 最良の場合:探し物が先頭にいた。1回
- 最悪の場合:探し物が末尾にいた。10枚なら10回
- ならして言えば、だいたい半分くらいの場所で見つかります
手順の力くらべでふつう使うのは、最悪の場合です。「最悪でもこれだけで済む」は約束にできますが、「運がよければ1回」は約束になりません。
「ない」の値段
今度は、探し物を「50」にしてみてください。数列のどこにもない数です。
10回くらべて、ようやく「ありません」が出ました。ここに、まっすぐさがす手順のいちばん重い性質があります。「ない」と言い切るには、ぜんぶ見るしかないのです。1枚でも見残しがあれば、「そこにあったかもしれない」が消えません。誠実に「ない」と言うことは、見つけることより高くつきます。
手間は、量に比例する
ロッカーが10枚なら最悪10回。1,000枚なら最悪1,000回。10,000枚なら——もう言えますね。
まっすぐさがす手順の手間は、数列の長さにそのまま比例します。長さが10倍になれば、手間も10倍。このコースではこれを、手順のかたちと呼ぶことにします。グラフに描けばまっすぐな直線になる、素直なかたちです。あとのレッスンで、もっと急なかたちや、おどろくほど平らなかたちが出てきます。
✎ 演習:最悪をつくる
実験室の数列と探し物を打ちかえて、次の2つを作ってください。
- くらべた回数がちょうど1回になる探し物
- くらべた回数が最大になる探し物(2通りの作り方があります)
ヒント1(考え方)
1回で終わるのは、探し物がどこにいるときでしょう。最大になるのは「いちばん奥にいる」と、もうひとつ——見つからずに終わる場合を思い出してください。
こたえ
1は先頭の数(はじめの数列なら3)をさがすとき。2は末尾の数(91)をさがすときと、どこにもない数(たとえば50)をさがすとき——どちらも10回です。「最後にいる」と「いない」が同じ値段だというのは、ぜんぶ見ないと「ない」と言えないからです。
このレッスンで分かったこと
- まっすぐさがす(線形探索):先頭から1つずつ。どんな順番の数列でも働く
- 回数は居場所しだい——手順は最悪の場合で測る
- 「ない」と言い切るには、ぜんぶ見るしかない
- 手間は長さに比例する。これがこの手順の「かたち」