トップ «前の日記(2009-08-09) 最新 次の日記(2009-08-28)» 編集

帰ってきた荒ぶる魂の日記。

mjm4u.netは「江頭2:50のピーピーピーするぞ!」を応援しています。


2009-08-19

_ [] Voronoi分割とクラスタ解析と局所的な結晶構造と。

たとえば、Q6を測るとき、注目する粒子の最近接粒子を取り出す必要がある。「最近接」な粒子の定義は難しい訳だが、曖昧さなく定義するとすれば、Voronoi分割が一番な訳だ。正確にはそのdualである、Delaunay四面体分割をした際の各vertexが最近接粒子に対応する。どうでもよいが、僕はdualtiyというのは非常に心そそられる。が、それはよいとして、しかし、3次元になると、Voronoi分割というのは、ややこしくてかなわん。3次元空間中の2点の2等分面と、それが切り取る領域うんぬんかんぬんなんて、想像するだけで発狂しそうだ。これをアルゴリズムに落とし込むなんて、狂気の沙汰ではないか、と思いたくもなるのだが、パズーの親方の言う通り、「落ち着いてやりゃあできる」のだ、たぶん。しかし、僕にはそれでも自力で作ることは、到底できなかったので、一時期は外国人が作ったゲーム用ライブラリを使っていたこともある。Voronoi分割は修士の頃からの懸案事項であった訳だ。当時、その手の計算幾何学を扱う研究室にいた(?)bay-ma氏にもいろいろとMSNメッセンジャ越しに教えてもらったのをよく覚えている。

しかし、Q6のバルクでの平均を取るくらいなら、そんなややこしいことをしなくてもいい。最近接の定義をもう少しナイーブにして、動径分布関数の第一ピークの落ち込む部分の距離以内の粒子をそれとみなせば、話が早い。誤差は微々たるものだろうし。近年はそうやってきた。件のゲーム用ライブラリのオーバヘッドがあまりに大きくて、計算も重くなるので。自分で組む気が発火するに至らなかったことが残念だが。

ところで、粒子系の中の局所的な結晶構造を取り出すためのアルゴリズムは既に提案されていて、これは既に僕も使ったことがある。実際、結晶構造中の「欠陥」を抽出した結果を、M2の終わりの春の学会で話した。というのも、「欠陥」と「結晶」はdualだからだ。裏を取っただけの話。最近の研究では、この局所的な「結晶」を組んでいる部分の動力学に着目していて、局所「結晶」クラスタがどう生まれ、死んでいくのかをつぶさに見ることが重要になってきている。局所「結晶」構造を取り出すためのアルゴリズムというのは、かいつまんでいうと、最近接粒子同士の局所Q6の相関を見ると言うような話になるのだが、ナイーブな方法だと何だか変なのは薄々感付いていて、これは時期が来たかな、という感じになっていた。ちなみに、前述のdualityはこれから大事になってきそうな予感。

折しも、クラスタ解析をするため(これは今までやったことはなかった)に、Rapaport氏のMD本をパラパラ読んでいたら、3次元でのVoronoi分割の話とクラスタ解析の話が仲良く並んでいるではないか。。。やれやれだ。ここはマサルさんの教えに従おう。「男なら『やってやれ』だ!(キュピーン)」と言う訳で、今日は半日消費して、絵を書きつつ、コードを書いた。コードが載っているので、丸写しをすれば簡単じゃん!とか思って、昨日はほくそ笑んでいたのだけど、もうなんていうか、そんなところでグローバル変数を使わないで下さい、とか、半泣きになりながら、気がつけば、結構な時間が経っていたという話。もう動径分布関数からの定義で良いことにしようよ、とか何度も思ったけど、絵を描きながら理解して、コードを書いて、最終的にEulerの多面体定理を満たし、全てのDelaunay四面体の総和がシミュレーション系の体積に一致したことを確認した時は、頭の中でファンファーレが響いたね。マサル会議終了のお知らせみたいな。

まあ、そんな訳で、また一つきちっとした道具ができた。面倒なことを避けるのはやめよう。というか、これは数年前にやっとくべきだったな。


トップ «前の日記(2009-08-09) 最新 次の日記(2009-08-28)» 編集