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
110
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の技術発表資料です
PosthogのA/Bテスト機能の紹介
nearme_tech
PRO
1
21
AIフレンドリーなプロダクトに向けて
nearme_tech
PRO
1
50
初めてのLean言語
nearme_tech
PRO
0
76
Apache Airflow Workflow orchestration without turning cron into spaghetti
nearme_tech
PRO
1
21
実務で役立つ幾何学 ボロノイ図の基礎から グラフ・ネットワーク応用まで
nearme_tech
PRO
1
59
SQL/ID抽出タスクから考える 実践的なハルシネーション対策
nearme_tech
PRO
1
67
OpenCode & Local LLM
nearme_tech
PRO
0
200
OpenCode Introduction
nearme_tech
PRO
0
59
【Browser Automation × AI】 Stagehandを試してみよう
nearme_tech
PRO
0
160
Other Decks in Programming
See All in Programming
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3k
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
150
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
150
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
5.4k
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
360
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
230
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
120
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
150
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2.1k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
240
yield再入門 #phpcon
o0h
PRO
0
740
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
190
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
660
Site-Speed That Sticks
csswizardry
13
1.3k
My Coaching Mixtape
mlcsv
0
180
The World Runs on Bad Software
bkeepers
PRO
72
12k
For a Future-Friendly Web
brad_frost
183
10k
Accessibility Awareness
sabderemane
1
160
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
660
Raft: Consensus for Rubyists
vanstee
141
7.6k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Claude Code のすすめ
schroneko
67
230k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
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