釣りタイトルを付けたかったのですがさっぱり思いつかないのでもう諦めました。徳永です。 今回はCentroid Path Decomposition(以下CPD)についての話を書きます。直訳すると重心パス分解となるでしょうか。Trieを実現するためのテクニック(普通のツリーにも使えるのかな?なかなか難しそうですが…)の一つです。CPDは一年前の弊社岡野原の記事に出てきますが、私のような素人にはあれだけでは理解できない部分があったので、今回はちょっと論文を読んでみました。 Trieの実装によくある問題 Trieを実現するためのデータ構造というとダブル配列とかが挙げられますが、こういった高速なデータ構造にも、ランダムアクセスが多いという弱点があります。メモリはHDDなどと比べるとランダムアクセスに耐えうる記憶媒体ですが、とは言えランダムアクセスは避けられるに越したことはありません。CPDを使うこ
![Centroid Path Decompositionを使ったトライでダブル配列と勝負してみた - Preferred Networks Research & Development](https://cdn-ak-scissors.b.st-hatena.com/image/square/eee5f1732dfc3219efd9335bb20b0b020f47e37b/height=288;version=1;width=512/https%3A%2F%2Ftech.preferred.jp%2Fwp-content%2Fuploads%2F2012%2F06%2Ftrie.png)