2013年11月28日木曜日

AC法をJavaで実装

文献[1]で紹介されているAC法をJavaで実装してみました.

AC法はテキスト内に出現する複数のキーワードを1回走査しただけで検出することができるアルゴリズムです. トライの部分はダブル配列法を使いたいところですが,コード量が多くなるので,今回はTreeMapで済ませました. テストケースの件数が少ないので,もしかするとバグっているかもしれません.

[1] 伊藤 直也, 田中 慎司: Web開発者のための大規模サービス技術入門, 技術評論社, 2010-08

2013年11月17日日曜日

VB CodeをJavaで実装

文献[1]で紹介されているVB CodeをJavaで実装してみました.

また,圧縮の効果も調べてみました. 以下がその結果(一例)です. 140万エントリのID列を想定してランダムに生成した整数列をギャップ列に直して,VC Codeでエンコードしています. 元の整数列が密になる(整数列の長さが増す)ほど,圧縮率が良くなっています. 密になればなるほど,整数間のギャップが小さくなるので,期待通りの結果になりました.

整数列長圧縮前(B)圧縮後(B)圧縮率
1441.00
1040320.80
1004002600.65
1000400019550.49
1000040000140790.35

[1] 伊藤 直也, 田中 慎司: Web開発者のための大規模サービス技術入門, 技術評論社, 2010-08