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
RIG#2-1
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
RIG
October 01, 2019
Technology
0
58
RIG#2-1
2019/10/01に実施されたRIGの第2回勉強会で使用した発表資料「Barnes-Hutのアルゴリズムを用いた多体問題シミュレータ」です.
RIG
October 01, 2019
Tweet
Share
More Decks by RIG
See All by RIG
RIG#3-1
sfcrig
0
78
RIG#2-3
sfcrig
0
100
RIG#1-2
sfcrig
0
230
Other Decks in Technology
See All in Technology
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
コンテキスト・ハーネスエンジニアリングの現在
hirosatogamo
PRO
6
680
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
Phase08_クイックウィン実装
overflowinc
0
560
AWSの資格って役に立つの?
tk3fftk
2
370
事例から紐解くSHIFT流QA支援 ~大規模プロジェクトの品質管理支援、QA組織立ち上げ~ / 20260320 Nozomu Koketsu
shift_evolve
PRO
0
110
プラットフォームエンジニアリングはAI時代の開発者をどう救うのか
jacopen
8
4.1k
Astro Islandsの 内部実装を 「日本で一番わかりやすく」 ざっくり解説!
knj
0
100
Copilot 宇宙へ 〜生成AIで「専門データの壁」を壊す方法〜
nakasho
0
130
Phase03_ドキュメント管理
overflowinc
0
840
AWS CDK「読めるけど書けない」を脱却するファーストステップ
smt7174
3
210
スピンアウト講座05_実践活用事例
overflowinc
0
370
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
The untapped power of vector embeddings
frankvandijk
2
1.6k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Raft: Consensus for Rubyists
vanstee
141
7.4k
Docker and Python
trallard
47
3.8k
Facilitating Awesome Meetings
lara
57
6.8k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Unsuck your backbone
ammeep
672
58k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Transcript
Barnes-Hutのアルゴリズムを用いた 多体問題シミュレータ RIG#2-3 (2019/10/01) martian
多体問題 (N-body Problem) とは? • 互いに相互作用する3体以上からなる系を扱う問題 ◦ 恒星と惑星が万有引力により相互作用し合う場合の惑星運行 ◦ 電子の電子状態を求める、量子多体問題
• 今回は天体間の重力の相互作用をシミュレーションする
多体問題をシミュレートするために • 一般に多体問題では解析的な解 (厳密解) を求めることができない ◦ 制限三体問題などの特定の条件下では解析的な解が存在する • でもシミュレートしたい ◦
数値解 (近似解) を求めたいが,計算量が膨大 ◦ 計算を省略して計算量を削減するしかないが,誤差を増やしたくない ◦ 誤差の大きさに応じて計算を省略する程度を決定するアルゴリズムが必要 • Barnes-Hutのアルゴリズム ◦ * Barnes-Hutのアルゴリズムは上の要件に合致しているが,計算があまり厳密でないため精 度の要求される多体問題シミュレーションでは他の手法が用いられる.
多体問題の計算量 • 定義通りに解くと,物体から2つ選ぶ組み合わせについて全ての関係を計算 しなければならない→計算量はO(N^2)! 4 物体の数: 6個 物体の数: 12個
Barnes-Hutのアルゴリズムとは? • 多体問題のシミュレーションに用いられるアルゴリズム • 空間を1つの範囲内に1つの物体のみが存在する状況となるまで再帰的に等分 割し,木構造を生成 (次項で解説).生成された木構造から多体問題の数値解 を計算していく.
空間分割とBarnes-Hut Treeの構築 1. 空間を4等分割し(3次元空間であれば8等分割),そ れを元に4分木を生成. NW NE SW SE root
SW SE NE NW
空間分割とBarnes-Hut Treeの構築 1. 空間を4等分割し(3次元空間であれば8等分割),そ れを元に4分木を生成. 2. 4等分割した空間の中に,物体を1つしか含まない ものがあれば,その空間のノードに物体を割り当 てる. NW
NE SW SE root SW SE NE NW
空間分割とBarnes-Hut Treeの構築 1. 空間を4等分割し(3次元空間であれば8等分割),そ れを元に4分木を生成. 2. 4等分割した空間の中に,物体を1つしか含まない ものがあれば,その空間のノードに物体を割り当 てる. 3.
4等分割した空間の中に,物体が2つ以上存在する 空間があれば,その空間について1. から再びこの ルーティンを実行する. NW NE SW SE root SW SE NE NW NW NE SE SW NE SW NW SE
ノードに働く力の近似 ノード に働く力を求める rootの各象限から再帰的に以下の操作を行う 1. 子ノードが「子ノードを持つ象限を示すノード」であれ ば,該当象限を構成する辺の長さsをノードとの距離dで 割り,”s/d < 任意の閾値(θ)”
について a. 真であれば,その象限を1つの物体として捉え に及ぼす力を計算 b. 偽であれば,その象限内で1~の処理を再帰的 に実行 NW NE SW SE root SW SE NE NW NW NE SE SW NE SW NW SE
ノードに働く力の近似 ノード に働く力を求める rootの各象限から再帰的に以下の操作を行う 1. 子ノードが,「子ノードを持つ象限を示すノード」であ れば... 2. 物体を示すノードであれば,その物体が に及ぼす力を
計算する. NW NE SW SE root SW SE NE NW NW NE SE SW NE SW NW SE
ノードに働く力の近似 ノード に働く力を求める rootの各象限から再帰的に以下の操作を行う 1. 子ノードが,「子ノードを持つ象限を示すノード」であ れば... 2. 物体を示すノードであれば,その物体が に及ぼす力を
計算する. 3. 子ノードを持たない象限を示すノードであれば,無視す る. NW NE SW SE root SW SE NE NW NW NE SE SW NE SW NW SE
None
問題点 粒子同士の力の働きが非対称なので系全体の重心が移動する • このような問題において系全体の重心が不変であることは証明可能 • c.f.https://hannan-u.repo.nii.ac.jp/?action=repository_action_common_downloa d&item_id=522&item_no=1&attribute_id=18&file_no=1 遅い • 計算量はO(nlogn)だがオーバーヘッド
(木構造の生成) が大きい • 最悪の場合,総当たりするよりも計算回数が多くなることがある
知見 • 厳密解の存在しない問題→対処不可能ではない • 様々なアルゴリズムを使用することで数値解を求められる
参考文献 • 多体問題 -Wikipedia Retrieved 2019/09/30, from https://ja.wikipedia.org/wiki/%E5%A4%9A%E4%BD%93%E5%95%8F%E9%A1%8C • N-body
simulation -Wikipedia Retrieved 2019/09/30, from https://en.wikipedia.org/wiki/N-body_simulation • N-body simulations (gravitational) -Scholarpedia Retrieved 2019/09/30, from http://www.scholarpedia.org/article/N-body_simulations_(gravitational) • The Barnes-Hut Algorithm Retrieved 2019/09/30, from http://arborjs.org/docs/barnes-hut