Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
競プロに出てきそうなアルゴリズム part3
Search
NearMeの技術発表資料です
PRO
November 18, 2022
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
競プロに出てきそうなアルゴリズム part3
NearMeの技術発表資料です
PRO
November 18, 2022
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
Claude Code × git worktree で並列開発 (続き) -差分のサービスだけを併設する-
nearme_tech
PRO
1
50
Claude Code × git worktree で並列開発 — サブモジュール構成のリポジトリで成立させる —
nearme_tech
PRO
0
54
LLM + 強化学習
nearme_tech
PRO
0
31
PosthogのA/Bテスト機能の紹介
nearme_tech
PRO
1
45
AIフレンドリーなプロダクトに向けて
nearme_tech
PRO
2
65
初めてのLean言語
nearme_tech
PRO
0
100
Apache Airflow Workflow orchestration without turning cron into spaghetti
nearme_tech
PRO
2
37
実務で役立つ幾何学 ボロノイ図の基礎から グラフ・ネットワーク応用まで
nearme_tech
PRO
1
76
SQL/ID抽出タスクから考える 実践的なハルシネーション対策
nearme_tech
PRO
1
88
Other Decks in Programming
See All in Programming
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
0
250
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
170
Press start. Python's next generation.
willingc
PRO
3
320
XHTMLが残したもの
yosuke_furukawa
PRO
2
440
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
0
110
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
880
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
100
スマート反転とウェブアクセシビリティ
camiha
0
140
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
290
The World Runs on Bad Software
bkeepers
PRO
72
12k
My Coaching Mixtape
mlcsv
0
310
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
A designer walks into a library…
pauljervisheath
211
25k
Side Projects
sachag
455
43k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Automating Front-end Workflow
addyosmani
1369
210k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The Invisible Side of Design
smashingmag
301
52k
Transcript
0 竸プロに出てきそうなアルゴリズム part3 2022-11-18 第21回NearMe技術勉強会 Nonaka Yuki
1 目次 1. 動的計画法とは 2. 動的計画法の例題 3. 動的計画法に関する概念 1
2 動的計画法とは • 問題が持つべき性質 • 部分構造最適性 • 与えられた最適化問題の解が、その部分問題の最適解の組み合わせによって得られるこ と。 •
部分問題重複性 • 問題が複数回再利用される部分問題に分割される時、問題の再帰アルゴリズムが同じ部分 問題を生成する時など • 適用される問題例 • ナップサック問題 • スケジューリング問題 • 音声認識パターンマッチング問題 • 隠れマルコフモデル 2
3 動的計画法の例題 ❏ 問題 ❏ 図のようにN個の足場があり、i番目の足場の高さがh i で与えられる。 そして①,②のいずれかの行動を繰り返してN-1番目の足場を目指す。 ①足場iから足場i+1へと移動する(コストは|h
i - h i+1 |) ②足場iから足場i+2へと移動する(コストは|h i - h i+2 |) この時N-1番目の足場に到達するときにかかるコストの総和の最小値を求めよ。 3 7 5 2 8 4 1 i=0 i=1 i=2 i=3 i=4 i=5
4 動的計画法の例題 頂点5に到達するのにかかる最小コストを求めるために、問題を分割していく。 例:dp[ i ]は頂点iに到達するまでにかかる最小コストとする。 dp[ i ] =
min(dp[ i - 1 ] + |h i - h i-1 |, dp[ i - 2 ] + |h i - h i-2 |) dp[0] = 0, dp[1] = |7-1| = 6, dp[2] = min(dp[0] + |5-1|, dp[1] + |5-7|) 4 7 5 2 8 4 1 i=0 i=1 i=2 i=3 i=4 i=5 頂点5に到達するのに かかる最小コストを求 める 頂点3に到達するのに かかる最小コストを求め る 頂点4に到達するのに かかる最小コストを求め る = +
5 動的計画法の例題 dp[2] = min(dp[0] + cost, dp[1] + cost)のようにこの配列dpを更新していき、最終的にdp[5]が求まる。
このように値を更新していくことを「緩和」というらしい。 この「緩和」はベルマン・フォード法やダイクストラ法などでも使われる概念。 5 7 5 2 8 4 1 i=0 i=1 i=2 i=3 i=4 i=5 0 6 Inf Inf Inf Inf 配列 dp
6 動的計画法に関する概念 6 5 4 3 3 2 1 2
2 1 0 1 0 1 0 1 • トップダウン方式 ◦ 問題を部分問題に分解していき、解をメモしながら解いていく。 • ボトムアップ方式 ◦ 前ページの配列dpをdp[0]から埋めていくイメージ
7 参考文献 ・アルゴリズムとデータ構造, 大槻兼資(著), 秋葉拓哉(監修), 講談社, 2020 7
8 Thank you