アルゴリズムのイメージを擬人化する
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

アルゴリズムのイメージを擬人化する

  • 1,345 views
Uploaded on

CODE FESTIVAL 2014 高橋直大トークライブ ...

CODE FESTIVAL 2014 高橋直大トークライブ
トークテーマ「アルゴリズムのイメージを擬人化する」

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,345
On Slideshare
928
From Embeds
417
Number of Embeds
4

Actions

Shares
Downloads
6
Comments
0
Likes
5

Embeds 417

https://twitter.com 414
https://kcw.kddi.ne.jp 1
http://hashtagsjp.appspot.com 1
https://tweetdeck.twitter.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. アルゴリズムのイメージを 擬人化する AtCoder株式会社 代表取締役 高橋 直大 2014/11/10 1
  • 2. ©AtCoder Inc. All rights reserved. 2 はじめに 2014/11/10
  • 3. 内容について •初心者向きの内容になります。 –ガチ勢は聞いても勉強にならないかも –可愛いキャラが後半に出てくるので、それ目当ても可 •一応教育コンテンツです –擬人化をすることで良いこともあるんです。 •気になった点は即突っ込んでください。 –擬人化、一人でしてもつまらないので、属性追加とか大 歓迎です 2014/11/10 3
  • 4. ©AtCoder Inc. All rights reserved. 4 アルゴリズムをなぜ擬人化するのか? 2014/11/10
  • 5. なぜ擬人化? •アルゴリズムが擬人化出来ない人は、そのアルゴリ ズムを理解しているとは言えない! –アルゴリズムを十分に理解している人は、アルゴリズムの 擬人化が上手 •もちろん、全員が全員擬人化しているわけではありません –逆に、あまり理解していないアルゴリズムは、上手く擬人 化できない •知らないアルゴリズムは擬人化出来ない! 2014/11/10 5
  • 6. 擬人化をしよう! •擬人化をするために必要なことは? –アルゴリズムの特徴を、出来るだけ多く捉える! •特徴が解らないと、安易な擬人化しか出来ません。 –アルゴリズムを、別の視点から見てみる! •こういう入力の時はどう? •ああいう入力の時はどう? •そういった視点から、キャラクターの性格が形成されていく •こうした複数の視点を積極的に探していくことで、アルゴリズム を深く理解し、問題を解く能力が向上する! –競技プログラミングに直結するとは限りません 2014/11/10 6
  • 7. ©AtCoder Inc. All rights reserved. 7 ブルートフォース 2014/11/10
  • 8. あ •あ 2014/11/10 8
  • 9. ブルートフォース •総当たりアルゴリズム –力づくで全部調べる •全てを力で解決する –蟻本さえも丸めて武器にしてしまう •だが、完全な脳筋キャラなのだろうか? 2014/11/10 9
  • 10. ブルートフォース •ブルートフォースは劣ったアルゴリズム? –そんなことはありません! •計算量が問題ないのであれば、最もバグりにくく、 コード量も短くて済むことが多い! •力づくで解決できない問題ももちろんあるが、力づ くで良いのであれば、それが最も楽 2014/11/10 10
  • 11. ブルートフォース •ブルートフォースは、「力づくで解決できる時にだけ 出てくる仕事人!」 –蟻本も持ってるし、脳筋キャラでも勉強してる! –自分の役立つポイントは、彼が一番理解しています。 •もしブルートフォースを組んでTLEしたら、ブルート フォースが悪いのではなく、悪いのはあなたです! 2014/11/10 11
  • 12. ブルートフォース おまけ •なんで女の子じゃないの? –マッチョな女の子とか嬉しくないじゃん!!!! »ほんとは男2女2にしてねって言われたからです。 •女の子としてイメージすると、また違ったキャラ付に 出来るかもしれない! –それはご来場の皆様にお任せします! 2014/11/10 12
  • 13. ©AtCoder Inc. All rights reserved. 13 深さ優先探索 2014/11/10
  • 14. あ •あ 2014/11/10 14
  • 15. 深さ優先探索 •深さ優先探索は勇者である –色々なところに、主人公的な要素が存在する!!! 2014/11/10 15
  • 16. 深さ優先探索 •「解に辿り着いたとしても、その解が最短である保 障がない点」 –とりあえず答えにはたどり着くけど、普段の仕事はいい加 減 •これだけ見ると「決して優等生なキャラクターではない」という部 分が強調される。 •ヒーローの日常は多少不真面目なくらいが良い! 2014/11/10 16
  • 17. 深さ優先探索 •「グラフが膨大でも、解に辿り着けることがある」 –真面目に最短路を探すようなアルゴリズムでは、とても解 に辿り着けないような膨大なグラフでも、解に辿り着ける ことがある。 •例えば、6*6のスライドパズルの探索とか –単純な実装では大抵上手くいかないけれども、ちょっとし た工夫で一気に探索結果が変わるのも魅力的 2014/11/10 17
  • 18. 深さ優先探索 •「たまに空回りする」 –グラフの形によっては、同じところで無限ループを起こし てしまう •ちょっとだめなところがあるのもポイント! –大事な仲間(メモリーちゃん)に覚えてもらうことにより、 空回りを起こさなくなる! •いわゆるメモ化再帰 2014/11/10 18
  • 19. 深さ優先探索 •他にも色々な主人公要素が存在する –初期パーティ •アルゴリズムを学ぶ上で、「探索」は最初に身に着けるツールです。 最初から出てくること程、主人公らしい要素はありません。 –目の前のことを無視できない。 •隣接ノードのうち最も評価が高いものから探索する、というのはよ くおこなわれる手法であり、それをすることにより、遠くの良い解 よりも、近くの解に近づき易くなります。 2014/11/10 19
  • 20. 深さ優先探索 おまけ •もし深さ優先探索が女の子だったら? –ヤンデレっぽい子にした気がします •一人の男性に嵌ると、そこで無限ループを起こして抜け出せない –サークルクラッシャー的な子の可能性もあり •親しくなった男性の友人と次々に親しくなっていく •そういう目で見ると、探索系アルゴリズムは全部真人間ではなく なってしまうので、もうちょっと違った目線で見てあげたほうが良 いと思います>< –もちろん女勇者でも良い 2014/11/10 20
  • 21. ©AtCoder Inc. All rights reserved. 21 幅優先探索 2014/11/10
  • 22. あ •あ 2014/11/10 22
  • 23. 幅優先探索 •委員長タイプの女の子! –真面目!かわいい! 2014/11/10 23
  • 24. 幅優先探索 •委員長タイプの女の子! –全員に対して平等です。 •始点からの距離に対して近い順に探索します。 •偏ったりはしません。 –常にきっちりと仕事をこなします。 •出力される解は必ず最短であることが保障されている 2014/11/10 24
  • 25. 幅優先探索 •やることが増え過ぎちゃうと対応できない –解までが遠いと、絶対に解に辿り着けない •目回してあわあわってなりそうでかわいい –あんまり工夫の余地がない •探索順を弄っても、そんなに探索効率は変わらない –凄く工夫するとダイクストラやA*になるが、これはもはや別物 –融通の利かない感じがかわいい •深さ優先探索と大体正反対! 2014/11/10 25
  • 26. ©AtCoder Inc. All rights reserved. 26 ビームサーチ 2014/11/10
  • 27. あ •あ 2014/11/10 27
  • 28. ビームサーチ •「ビーム」の名が表す通り、魔法少女ちゃん!! –杖からビームを打つよ! 2014/11/10 28
  • 29. ビームサーチ •「ビーム」の名が表す通り、魔法少女ちゃん!! –杖からビームを打つよ! •・・・みたいな設定なわけがないです!!! 2014/11/10 29
  • 30. ビームサーチ •そもそもビームサーチってどういうアルゴリズム? –良い状態を上位K個まで保持する •貪欲法だと、「最も良いものを選ぶ」 •ビームサーチは、「上からK個を残す」 –何が嬉しいの? •貪欲法だと上手くいかない問題はたくさんある •でも、貪欲法だと「ある程度上手くいく」問題もたくさんある •だったら、貪欲法で候補になるのをたくさん持っておけば、もっと 上手くいきやすいよね!って発想 2014/11/10 30
  • 31. ビームサーチ •ビームサーチって地味じゃない? –「ビーム」は、探索のループ毎に、「常にK個のノードを探索 する」→「幅が一定」だからビームって呼ばれてるだけ •それなのに、「ビームサーチ」とかかっこいい名前がつ いてる こんなかっこいい ビームは打てない! 2014/11/10 31
  • 32. ビームサーチ •結論:ビームサーチはコスプレ少女である –ビームなんて打てない!魔法も使えない! –コスプレしているだけ! 2014/11/10 32
  • 33. ビームサーチ •では、ビームサーチちゃんは本当はどんな子なの か? –ビームサーチちゃんは、地方から出てきて都会に出てきた、 一人暮らしの大学1年生である! •書いて貰った段階では高校生だったんだけど、なんとなく大学1 年生にしました 2014/11/10 33
  • 34. ビームサーチ •一人暮らしの貧乏な女の子 –狭い部屋に一人で住んでる –お金がないので、コスプレ衣装を自分で作っている •前に作ったコスプレ衣装を参考に、改良したものを新たに作る –狭い部屋に住んでいるので、ものがあまり置けない •お気に入りの上位K着だけを残して、残りは捨ててしまう •地味なのに頑張ってるのが可愛い! •幸薄っぽいのが可愛い!!! 2014/11/10 34
  • 35. ©AtCoder Inc. All rights reserved. 35 最後に 2014/11/10
  • 36. 今回のまとめ •ブルートフォースくん –力づくで押し切るのが得意です。使い方は考えましょう •深さ優先探索くん –とりあえずチューニングすればなんとかしてくれます。最 適解とかを出したい時は無理だけど •幅優先探索ちゃん –きっちりしてるけど、探索空間が膨大な時に注意しよう •ビームサーチちゃん –かわいい!地味かわいい! –意外と単純、簡単なアルゴリズムです!こわくないよ! •魔法使いだって考えると怖いけど、所詮コスプレ少女だよ! 2014/11/10 36
  • 37. さいごに •今回の擬人化の説明は、「イラストにあった特徴」だ けを取り出しています。 –よって、アルゴリズムの全ての特徴が生かせているわけで はない •例えば、深さ優先探索は、「辞書順最小」とかは見つけられる •一人が擬人化するだけでは、全ての特徴を列挙出 来ない –一部の特徴は、擬人化することでむしろ見えなくなってし まう •これを解決するには、みんなでそれぞれアルゴリズム を擬人化し、共有すれば良い! 2014/11/10 37