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

More Related Content

PDF
ウェーブレット木の世界
PPTX
Chokudai search
PDF
最適化超入門
PDF
君はyarn.lockをコミットしているか?
PDF
最小カットを使って「燃やす埋める問題」を解く
PPTX
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
PDF
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
PDF
線形計画法入門
ウェーブレット木の世界
Chokudai search
最適化超入門
君はyarn.lockをコミットしているか?
最小カットを使って「燃やす埋める問題」を解く
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
(2020.10) 分子のグラフ表現と機械学習: Graph Neural Networks (GNNs) とは?
線形計画法入門

What's hot (20)

PDF
明日使えないすごいビット演算
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
PDF
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
PDF
プログラミングコンテストでの動的計画法
PDF
ダブル配列の実装方法
PDF
勉強か?趣味か?人生か?―プログラミングコンテストとは
PDF
失敗から学ぶ機械学習応用
PPTX
5分で分かる自己組織化マップ
PDF
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
PDF
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
PDF
組み込み関数(intrinsic)によるSIMD入門
PDF
Union find(素集合データ構造)
PDF
直交領域探索
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
PDF
グラフィカル Lasso を用いた異常検知
PPTX
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
PPTX
[DL輪読会]GQNと関連研究,世界モデルとの関係について
PDF
条件付き確率場の推論と学習
PDF
様々な全域木問題
明日使えないすごいビット演算
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
プログラミングコンテストでの動的計画法
ダブル配列の実装方法
勉強か?趣味か?人生か?―プログラミングコンテストとは
失敗から学ぶ機械学習応用
5分で分かる自己組織化マップ
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
組み込み関数(intrinsic)によるSIMD入門
Union find(素集合データ構造)
直交領域探索
プログラミングコンテストでのデータ構造 2 ~動的木編~
グラフィカル Lasso を用いた異常検知
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
[DL輪読会]GQNと関連研究,世界モデルとの関係について
条件付き確率場の推論と学習
様々な全域木問題
Ad

Similar to アルゴリズムのイメージを擬人化する (20)

PDF
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
PPTX
NUPSC招待講演:アルゴリズムで広がる世界
PDF
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
PDF
AtCoder Beginner Contest 011 解説
PDF
JOI春季ステップアップセミナー 2021 講義スライド
PDF
A sequential recommendation approach for interactive personalized story gener...
PDF
AtCoder Beginner Contest 010 解説
KEY
Algebraic DP: 動的計画法を書きやすく
PPTX
みんな大好き機械学習
PPTX
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習入門
PPTX
AtCoder Beginner Contest 004 解説
PDF
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
PPTX
AtCoder Beginner Contest 012 解説
PDF
ZDD入門-お姉さんを救う方法
PDF
AtCoder Beginner Contest 006 解説
PDF
実用Brainf*ckプログラミング
PDF
どたばたかいぎ成果発表
PPTX
人が神姫ん感(原文ママ)を感じるコンピュータ
PPTX
ゲームづくりで短期間でフロンドエンドのスキルアップ
PPT
アルゴリズムとデータ構造15
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
NUPSC招待講演:アルゴリズムで広がる世界
『問題解決力を鍛える!アルゴリズムとデータ構造』出版記念講演
AtCoder Beginner Contest 011 解説
JOI春季ステップアップセミナー 2021 講義スライド
A sequential recommendation approach for interactive personalized story gener...
AtCoder Beginner Contest 010 解説
Algebraic DP: 動的計画法を書きやすく
みんな大好き機械学習
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習入門
AtCoder Beginner Contest 004 解説
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Beginner Contest 012 解説
ZDD入門-お姉さんを救う方法
AtCoder Beginner Contest 006 解説
実用Brainf*ckプログラミング
どたばたかいぎ成果発表
人が神姫ん感(原文ママ)を感じるコンピュータ
ゲームづくりで短期間でフロンドエンドのスキルアップ
アルゴリズムとデータ構造15
Ad

More from AtCoder Inc. (20)

PPTX
TCO2017R1
PPTX
AtCoderに毎回参加したくなる仕組み
PDF
Square869120 contest #2
PDF
AtCoder Beginner Contest 035 解説
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
PDF
Chokudai Contest 001
PDF
AtCoder Regular Contest 049 解説
PPTX
AtCoder Beginner Contest 034 解説
PDF
AtCoder Regular Contest 048
PDF
MUJINプログラミングチャレンジ2016 解説
PDF
AtCoder Beginner Contest 033 解説
PDF
DDPC 2016 予選 解説
PDF
arc047
PDF
abc032
PDF
CODE FESTIVAL 2015 沖縄ツアー 解説
PDF
AtCoder Regular Contest 046
PDF
abc031
PDF
CODE FESTIVAL 2015 解説
PDF
CODE FESTIVAL 2015 予選B 解説
PDF
AtCoder Beginner Contest 030 解説
TCO2017R1
AtCoderに毎回参加したくなる仕組み
Square869120 contest #2
AtCoder Beginner Contest 035 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Chokudai Contest 001
AtCoder Regular Contest 049 解説
AtCoder Beginner Contest 034 解説
AtCoder Regular Contest 048
MUJINプログラミングチャレンジ2016 解説
AtCoder Beginner Contest 033 解説
DDPC 2016 予選 解説
arc047
abc032
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Regular Contest 046
abc031
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Beginner Contest 030 解説

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