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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
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の位を持つ数が複数あるとうまく⾏かない。 • 空の箱が出る • 速さのために無駄なスペースがある。 • 専⾨的な⾔葉で⾔うと「空間計算量が⼤きい」