問題タブ [lzw]

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 投票する
2 に答える
807 参照

java - Java LZW Compress の動作が非常に遅く、3MB で 20 秒かかる

これが私のコードです:

{

}

私は記事から作業しました: http://marknelson.us/2011/11/08/lzw-revisited/

この方法は素朴で非常に遅いという記事をいくつか読みました: https://code.google.com/p/algorithms-and-datastructures-course/source/browse/trunk/AD_exercise_4/src/ad_exercise_4/controller/LZWNaive .java?r=38

アルゴリズムを高速化するにはどうすればよいですか。現時点では、3MB を圧縮するのに 21 秒かかります。より迅速な結果を得るために従うべき疑似コードを誰かが提供してくれませんか。たとえば、3MB を圧縮するには 1 ~ 2 秒かかります。

!HashMap.containsKey() は非常に時間がかかる行だと思います。21秒中16秒。

よろしく。

0 投票する
3 に答える
1765 参照

java - Java でブロックを使用して大きなファイルを圧縮する

2 つの圧縮アルゴリズムを連続して適用して、Java で 2GB を超えるファイルを圧縮しています。1 つは LZ ベース、もう 1 つはハフマン ベースです。(これは DEFLATE に似ています)。

2GB はバッファに保持するには大きすぎるため、一時ファイルを出力する 1 つのアルゴリズムにファイルを渡し、次に最終ファイルを出力する 2 番目のアルゴリズムにその一時ファイルを渡す必要があります。

別の方法として、ファイルを 8MB ブロック (メモリ不足エラーが発生しないサイズ) に圧縮することもできますが、ファイル全体の冗長性を十分に活用できません。

これらの操作をより適切に実行する方法についてのアイデア。一時ファイルがなく、ブロックで圧縮されていませんか? ブロック単位で圧縮する他の圧縮ツールはありますか? 彼らはこの問題にどのように対処しますか? よろしく

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

compression - LZ77 および LZW 辞書ベースの圧縮アルゴリズムを適用するソフトウェア

辞書ベースの圧縮アルゴリズム (LZ77 および LZW) を実行する優れたアプリケーション (ソフトウェア) はありますか。また、アプリケーションが次のように表示されている場合は、より良い結果が得られます: 圧縮率、圧縮および解凍時間。テキストファイルに圧縮を適用し、圧縮後のファイルの内容の変化を確認したいと考えています。

ありがとう

0 投票する
2 に答える
144 参照

python - パターン検索 LZW python

LZW アルゴリズムは、入力シンボル間のパターンを見つけるために使用されます。しかし、言葉の中からパターンを探ることができるでしょうか?私はアルファベットのインデックスがシンボルではなく、例えば入力の単語であることを意味します:

次のような出力が得られます。

または、トリックを行う圧縮アルゴリズムはありますか?

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

php - ASCII テキスト ファイルでの LZW の実装についてサポートが必要

LZW を実装して ASCII ベースのテキスト ファイルを圧縮しようとしていますが、助けが必要です。

「BABAABAAAA」と書かれたテキスト ファイルがあり、コードを使用して LZW アルゴリズムを使用して圧縮するとします。結果の出力はテキスト ファイルに書き込まれます。

問題は、各コードを単一の整数としてカウントするのではなく、コードの各文字を単一の文字としてカウントするため、圧縮ファイルのサイズが元のファイルよりも大きくなることです。したがって、65 を 01000001 として読み取る代わりに、65 を 00110110 (6) 00110101 (5) である 2 つの ascii char と見なします。そして、それはマーカー ('|') もカウントしていません。

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

algorithm - LZW 圧縮が正しく機能していないようです

このコードが正しく機能するように努力していますが、エンコードしようとすると、正常に機能しないようです。60 バイトのテキスト ファイルがあります。私はそれをエンコードし、出力ファイルは 100 バイトです。そのファイルをデコードすると、65バイトのようになります。正しくデコードされますが、ファイル サイズがオリジナルよりも大きくなります。jpg をエンコードしようとしましたが、ファイル サイズは小さくなりましたが、後でファイルを開くことができませんでした。jpg ファイルをデコードしようとしましたが、うまくいきませんでした。cmd がフリーズしたようです。これは私が使用しようとしていたコードです。

どんな助けにも感謝します。ありがとう。

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

java - LZW - Compression rate

Well, I have to make a PPM image compressor using the LZW algorithm, the algorithm and the code I understand and have implemented a version for strings (in Java,for tests).

The big problem is in compression, because if I have:

Input: ABCDABCDABCDABCD

Output: 65 66 67 68 256 258 260 259 257 68

as for my input I have 16 characters, if I just save my output as a text file, no compression because there are 34 characters. So I thought I'd save as binary file and then burn each field in a byte of my file, but there is the problem of fields >= 256. I also thought the idea of ​​putting some fields set to occur when a value greater than 255 , something like that. :

(in this case I would remove the 255 field and 0 in my dictionary)

 65 66 67 68 256 258 , would be:

 65 66 67 68 255 1 0 255 3 0

then every field equal to 255 indicate an occurrence of consecutive bytes and sum would be the elements to be added; byte 0 indicates the end of sum.

The problem is that even so my output would be greater than the input and compression does not make sense. Then I would ask you if there is a way around this.