実務に活かすアルゴリズム

 実務に活かすアルゴリズム

LabTechスタートアップである弊社(株式会社LabBase)では、様々な分野の研究者・開発者のキャリアを支援しており、同分野の研究・開発に直結する勉強会だけでなく、異分野の研究者・開発者の知見拡大や自己啓発にも繋がる勉強会を開催しております。

AtCoder株式会社代表取締役 高橋 直大氏による、実務に活かすアルゴリズムについての講演を、AIエンジニア・データサイエンティストに特化したスカウト型転職サービス『LabBase転職』主催により開催いたしました。

技術者・研究者に特化した転職サービス【LabBase転職】
https://plus.labbase.jp

Transcript

  1. ⾃⼰紹介 • ⾼橋直⼤ (Twitter: @chokudai) • AtCoder株式会社 代表取締役社⻑ • 競技プログラミングの会社の社⻑

    • Twitterフォロワー 5.8万⼈ • 競技プログラミングガチ勢 • 国際コンテスト個⼈決勝進出回数7回 準優勝2回 • 国際コンテスト団体 優勝6回 準優勝3回 • 去年の戦績:Google Hash Code 2022 世界1位 • ICFPC 2022 世界1位
  2. 問題例 ABC045 A問題 • 問題⽂ • 上底の⻑さが a、下底の⻑さが b、⾼さが h

    の台形があります。 • この台形の⾯積を求めるプログラムを書いてください。 • ⾯積が整数になることは保障されています。 • 1 ≦ a,b,h ≦ 100 • ⼊⼒例 • 3 4 2 • 出⼒例 • 7
  3. Q: AからBに⾏く最短経路は? A B 2 2 1 5 4 3

    7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  4. Q: AからBに⾏く最短経路は? A B 2 2 1 5 4 3

    7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 これはダイクストラで解ける
  5. Q: Xを通ってAに⾏く最短経路は? A X B 2 2 1 5 4

    3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 これはダイクストラで解ける?
  6. まずA→Xを求める 3 2 4 A 7 5 8 8 B

    7 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  7. Xを起点にBまでの経路を求めれば良い 15 14 12 17 9 12 20 19 8

    16 19 10 17 14 16 21 11 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  8. Q: Xのどれかを通ってAに⾏く最短経路は? A X X B X 2 2 1

    5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 これはダイクストラで解ける?
  9. Aからの最短経路を求める 3 2 4 0 7 5 17 16 8

    16 19 10 17 14 19 16 21 7 11 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  10. Bからの最短経路も求める 20 19 17 21 14 17 9 8 13

    7 2 11 6 9 8 5 0 19 10 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  11. それぞれを⾜し合わせる! 2 0 1 9 1 7 2 1 1

    4 1 7 9 8 1 3 7 2 1 1 6 9 8 5 0 1 9 1 0 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 3 2 4 0 7 5 1 7 1 6 8 1 6 1 9 1 0 1 7 1 4 1 9 1 6 2 1 7 1 1 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 左上を通る場合:7+19=26 下のを通る場合:19+8=27 右下を通る場合:17+6=23 つまり右下のXを通ると23で到達可能!
  12. Q: A→X→Y→Bの順に⾏く最短経路は? Y A Y X B X 2 2

    1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  13. 3つに分割しよう! Y A Y X B X 2 2 1

    5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 Y A Y X B X 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 Y A Y X B X 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 XにもYにも到達してない世界 Xにだけ到達した世界 X・Yに到達した世界
  14. Q: AからXとYを通ってBに⾏く最短経路は? Y A Y X B X 2 2

    1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  15. 4つに分割しよう! Y A Y X B X 2 2 1

    5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 Y A Y X B X 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 Y A Y X B X 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 Y A Y X B X 2 2 1 5 4 3 7 8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 9 4 1 2 1 9 9 2 4 8 8 9 8 8 X,Y 未到達 Yだけ 到達 Xだけ 到達 XY 到達
  16. アルゴリズムを学ぶと嬉しいこと • 「すでにあるもの」以外を⽣み出すことが出来る • ロジックを書いて⾃分で⽣み出す • 既存のアルゴリズムでも、適⽤範囲や組み合わせで⾊々作れる • 「出来る」「出来ない」を感覚的に⾝に着けることが出来る •

    デジタル化テーマを⾒つける切り⼝に • 効率の良いプログラムが組めるようになる • 遅い処理・不正確な処理を、⾼速・正確な処理に • プログラムで表現できることの幅が広がる • 「⼈間の代わり」だけではなく「⼈間が出来なかったこと」も
  17. AからBに⾏く A B 2 2 1 5 4 3 7

    8 6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8
  18. Aから全てを辿って帰ってくる A 2 2 1 5 4 3 7 8

    6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 頂点が10万個とか あっても出来る? 魔法? 既に出来る技術? A:魔法 絶対無理 B:まだ無理 C:最近出来るように D:前から出来る E:⼈間でも出来る
  19. Aから全てを辿って帰ってくる A 2 2 1 5 4 3 7 8

    6 5 6 1 3 2 1 9 5 3 2 3 2 7 5 8 9 8 9 4 1 2 1 9 9 2 4 8 8 9 8 8 巡回セールスマン問題と呼 ばれるもの 最短距離:A 不可能 P≠NP予想 (証明出来たら100万ドル) ほぼ最短:D 出来る! 近似解はいくらでも出せる 実⽤上⼗分に利⽤可能
  20. アルゴリズムの適⽤範囲 • コンピュータで計算できる対象は増え続けている • テキストデータ • 意味も含めた解析が可能に • あらゆる作業履歴がコンピュータ上に! •

    画像データ • 物体や⼈物の判別・位置の測定 • ⾳声データ • 意味や何の⾳が鳴っているかの判別 • 機械学習では、これらの判別や解析が出来る • これらを組み合わせるのはアルゴリズム!
  21. 解ける問題って何だろう? • 以下の3要素がはっきりしてるもの! • コンピュータに⼊⼒するもの • コンピュータが出⼒するもの • コンピュータの出⼒に対する評価 •

    これらがはっきりすれば、解けるか解けないかを考えられる • 注:機械学習分野だともうちょっとふわっとしたものも結構ある • とりあえず今回はそれはスルーします
  22. 理想のちょっと⼿前のコンビニ タブレットでサジェストされた ⾁まんをクリックする • ⼊⼒ • 男の⼦の⾏動履歴 • 前⽇までの⾷事とか •

    Webの検索履歴とか • 出⼒ • 男の⼦が⾷べたいそうなもの⼀覧 • 評価 • 実際にアクションに繋がった割合を最 ⼤化 • 購⼊操作とか、タップしたかとか
  23. 理想のちょっと⼿前のコンビニ • ⼊⼒ • 地図データ • リアルタイムGPSデータ • リアルタイムカメラデータ •

    出⼒ • リアルタイムのドローンへの指⽰ • 評価 • 安全に届けられたかどうか • 配送時間 ドローンがコンビニから ⾁まんを届けてくれる
  24. NASA医療物資配分問題 • テーマ • 惑星外探査などの⻑期ミッションにおける医療物資の配分 • 概要 • 宇宙での⻑期ミッションにおいて、⼤量の医療物資が必要となるが、 医療物資の種類も膨⼤で、全ての医療物資を運ぶことは難しい

    • 医療物資の量は膨⼤であるが、「輸送する医療物資を選択する専⾨ 家」なんてもちろんいるはずがない • ここで、プログラミングコンテストを利⽤して、⾃動的に医療物資選 択を⾏うプログラムを作成させ、解決しようとした。 • NASA-TopCoder Challenge 第⼀回
  25. NASA医療物資配分問題:問題定義 • 必要となるデータを全てデータベース化 • 実際の問題より若⼲の簡略化をしてます 医療物資 • 物資ID • 消耗品Flag

    • 体積 • 重量 医療⽤品 • ⽤品ID • 必要物資 • 物資ID • 必要量 ミッション • 危険度 • 必要⽤品 • ⽤品ID • 必要量 200種類 1000種類 100000種 類
  26. NASA医療物資配分問題:評価基準 • 物資配分を決定する • ランダムにミッションを10000個選ぶ • 各ミッションに必要な医療物資がそろっていれば成功 • 失敗した場合、ミッションごとに決められた危険度を⾜す •

    危険度が、ある決められた値p以上になっていなければ、⻑期 ミッションは無事成功! • 医療物資の体積・重量のそれぞれの和から算出されるスコアが与えら れる • Score += 1000/(体積+C*重量) Cは問題に応じて変更される • ⻑期ミッション全体に失敗したら、当然スコアは0点
  27. 評価基準概要 M M M M M M M M M

    M M 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源
  28. 評価基準概要 M M M M M M M M M

    M M 医療⽤品 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 医療⽤品 医療⽤品
  29. 評価基準概要 M M M M M M M M M

    M M 医療⽤品 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 資源 医療⽤品 医療⽤品 -2pt -5pt -1pt 減点が10000以下 なら合格!
  30. まとめ • アルゴリズムの習得はむずかしい! • 〇〇法、を覚えれば良いわけではない • 学びたいならコンテストに出よう! • Algorithm: 毎週やってます!

    • Heuristics: 毎⽉やってます! • 実務で活かすには「増えたデータ」に注⽬しよう! • ⼊⼒・出⼒・評価が⼤切!