Location : Home > Languages > Perl > Package Title : Algorithm::InversionList |
![]() |
Algorithm::InversionList - ビット列からインバージョンリストを生成
use Algorithm::InversionList; my $data = "Random data here"; my $inv = invlist($data); print "The inversion list is: @$inv\n"; my $out = data_from_invlist($inv); print "From data [$data] we reconstructed [$out]\n";
インバージョンリスト(Inversion lists)は0と1のビット列においてそれぞれの位置を格納するデータ構造のことである。データ "111111100" はインバージョンリストで表現すると 0, 7 という数値のリストになる。本モジュールは1から始まり、もし最初の2ビットが0なら、リストの最初の数字は(1が最初に立つビットである)2になる。最後の数値は文字列の長さを示し、それがどこで終わるかを知る。
インバージョンリストはきわめて有効である。Perl でスカラーやリストを格納する方法や Perl がポートする様々なデータ構造のために、インバージョンリストが有効になるのに要請される正確なビット列長に対する決定的な規則はない。一般的に、0または1の繰り返しの長いビット列を扱うのであればインバージョンリストを用いるのが適切だろう。
本モジュールは、検索が速く、2つのリストに対してブール演算が簡単に施せるなどいくつかのよい機能をもったオフセット形式(an offset-based format)で格納している。
エクスポート
invlist($DATA):
スカラーのデータ列からインバージョンリストを生成する。
data_from_invlist(@LIST):
インバージョンリストから元データを生成する。
Teodor Zlatanov, <tzz@lifelogs.com>
perl
【訳注と解説】
![]() |
Updated : 2006/06/24 |