問題タブ [burrows-wheeler-transform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1008 参照

compression - bzip2 の最大ブロックサイズが 900k なのはなぜですか?

bzip2(つまり、Julian Seward によるこのプログラム) は、100k から 900k の間の利用可能なブロックサイズをリストしています:

この数値は、圧縮ファイルのヘッダーhundred_k_blocksizeに書き込まれる値に対応します。

documentationから、メモリ要件は次のとおりです。

元のプログラムが作成された時点 (1996 年) には、7.6M (400k + 8 * 900k) というメモリはコンピューター上でかなりの量だったかもしれないと思いますが、今日のマシンではそんなことはありません。

私の質問は2つの部分です:

1) ブロック サイズを大きくすると、圧縮率が向上しますか? (単純に、私はイエスだと思います)。大きなブロックを使用しない理由はありますか? 圧縮の CPU 時間は、ブロックのサイズに応じてどのように変化しますか?

2) 実際には、より大きなブロックサイズを可能にする bzip2 コード (または代替実装) のフォークはありますか? これには、ソース コードの大幅な修正が必要ですか?

ファイル形式は、これを処理するのに十分な柔軟性があるようです。たとえば...hundred_k_blocksizeブロックサイズを示す8ビット文字を保持しているため、ASCIIテーブルを下に拡張して、より大きなブロックサイズを示すことができます(例':'= x3A=> 1000k';'= x3B=> 1100k'<'= x3C=> 1200k、...) .

0 投票する
1 に答える
63 参照

c++ - リバース文字列パターンをキーと値のペアに保存しようとしても機能しない (Burrows Wheeler Rotation)

ここに画像の説明を入力

したがって、このインデックス (int) とデータ (文字列) を、上記の型のインデックスとデータを取る Dictionary クラスに変換しようとしています。これが私のコードです:

このコードは 10KiB 未満の小さなテキスト ファイルでは問題なく動作しますが、大きなテキスト ファイルを入力すると、ループが永遠に続くように見えます。メモリ全体が使用されるまで実行され続け、IDE がクラッシュします。ここで何が間違っていますか、またはこのプロセスを最適化する方法はありますか?

編集: ここで、サイズ変数は input.length() を参照します。