Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scratchからアルゴリズムへ 〜二分探索〜

Avatar for R.K. R.K.
August 17, 2020

Scratchからアルゴリズムへ 〜二分探索〜

Avatar for R.K.

R.K.

August 17, 2020
Tweet

More Decks by R.K.

Other Decks in Programming

Transcript

  1. 解き⽅ • このとき、 = ! " とすれば − = 0の解が得られるというのは

    ⼈間が考えたもの! • コンピュータは指⽰に従って計算してくれるだけである。 • このように、解き⽅の⼿順は⼈間が与えなければならない、こ の⼿順のことをアルゴリズムという。
  2. 半分にできる回数 • ある数を半分にできる回数は、⼤体(数字の桁数-1)に⽐例する ことが知られている • 例:100階で7回の質問、10000階で14回の質問。それぞれの(桁数-1) は2、4であり2倍。質問の回数も2倍である。 • 桁数の上昇はその数に⽐べてとても⼩さい。 •

    1万→1億は1万倍だが、(桁数-1)は2倍しか増えていない。 • ちなみになぜそうなるかという話は、⾼校までのお楽しみ。 • 対数という概念です。数学に興味がある⼈は調べてみてください。
  3. ⽅針 • 最後、4番⽬を開ける。 (0) 1 2 3 4 5 6

    7 8 9 10 (11) ? 10 20• 30▲ 45▪ ? ? ? ? ?
  4. ⽅針 • 30は答えよりも⼤きいので▪を動かす。 (0) 1 2 3 4 5 6

    7 8 9 10 (11) ? 10 20• 30▪ 45 ? ? ? ? ?
  5. 実装例 • 確かに⼩さい順になる。 箱に⼊りうる数 (10〜10 + 9) 0 0〜9 1

    10〜19 2 20〜29 3 30〜39 ⋮ ⋮ 18 180〜189 19 190〜200
  6. 1の位を⽤いる⽅法 • 数の1の位は0〜9なので、 (1の位)番⽬の位置の箱に⼊れる(0は 10番⽬)。 • 例:データが13, 25, 37, 52,

    59のとき、10個の箱を⽤意して以 下のように⼊れる。 1 2 3 4 5 6 7 8 9 10 52 13 25 47 59
  7. 1の位を⽤いる⽅法 • 52を探したい場合 • 52の1の位は2なので2番⽬に⼊っているはずである。 • 2番⽬の箱を開けると⾒つかる。 • 35を探したい場合 •

    35の1の位は5なので5番⽬に⼊っているはずである。 • 5番⽬の箱を開けると25なので⾒つからない。 1 2 3 4 5 6 7 8 9 10 52 13 25 47 59
  8. ハッシュ法の利点・⽋点 • 利点 • とにかく早い • ⼀発で⾒つけられる。 • データを箱に⼊れるのも時間がかからない。 •

    ⽋点 • 衝突 • 同じ1の位を持つ数が複数あるとうまく⾏かない。 • 空の箱が出る • 速さのために無駄なスペースがある。 • 専⾨的な⾔葉で⾔うと「空間計算量が⼤きい」