問題タブ [huffman-code]

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

java - 文字列として圧縮された入力文字列

文字列を新しい文字列として圧縮/変換したい。

すなわち:入力文字列:

圧縮後の出力文字列:

解凍後の出力文字列:

この変換にはいくつかの圧縮またはハッシュメソッドがありますか?

私は、Javaまたは基本的なプロセスステップを備えたアルゴリズムを使用したソリューションを好みます。

私はすでにハフマン変換を読んで使用しようとしましたが、圧縮された出力はバイトアウトバウンドUTF-8文字セットで構成されています。

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

c - JPEGハフマンブロックのデコード(表)

次のブロックは、ハフマンブロックマーカーによってネストされています

0084は整数としてのテーブルの長さであり、ここのブロックには含まれていません

JPEG標準によると、最初のアドレスは明らかに宛先0(0x10)のACテーブルになります

どうやらそこから先はハフマンテーブルです。

それで、それはどのようにデコードされますか?

0 投票する
4 に答える
518 参照

c - セグメンテーション違反 - 適応ハフマン ツリー

アダプティブ ハフマン コードを実装しようとしていますが、ツリーを構築しようとしているときに、「currentNYT->lchild = newNYT;」の行でコードを実行すると、セグメンテーション エラーが発生します。addnode() 関数で。

誰か助けてくれませんか?それは私が気づいていない単純なことかもしれません。しばらく C を使用していませんでした。

0 投票する
6 に答える
1330 参照

compression - データ圧縮

どういうわけか株式市場のデータを圧縮するタスクがあります...データは、毎日の株価が1行で示されるファイルにあります...したがって、これは非常に大きなファイルです。

例 :
123.45
234.75
345.678889.56
....。

ここで問題となるのは、ハフマンまたは算術コーディングやLZコーディングなどの標準アルゴリズムを使用してデータを圧縮する(冗長性を減らす)方法です...この種のデータにはどちらのコーディングが最も適していますか?? ...

最初のデータを取得してから、連続する各データ間の差を考慮すると、差の値に多くの繰り返しがあることに気付きました...これは、最初にこれらの差を取得し、それらの頻度、したがって確率を見つけてから、ハフマンコーディングを使用するのが方法でしょうか??...

私は正しいですか?...誰かが私にいくつかの提案をすることができますか?

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

c - ビット形式のファイルを C のファイルに書き込む

ハフマン アルゴリズムを C で実装しています。基本的な機能は、バイナリ コードワードが取得されるところまであります。たとえば、abcd は 100011000 などになります。問題は、このコードをバイナリ形式で圧縮ファイルにどのように書き込むかです。つまり、普通に書いたら1と0がそれぞれ1文字になるので、圧縮はありません。

これらの 1 と 0 をビット形式で書き込む必要があります。Cでそれは可能ですか?

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

huffman-code - 拡張ハフマンコード

私はこの宿題を持っています:与えられたアルファベットの記号のコードワードを見つけること。3つのシンボルのグループにバイナリハフマンを使用する必要があると書かれています。それは正確にはどういう意味ですか?[アルファベット]^3で通常のハフマンを使用しますか?もしそうなら、どうすればグループ内の3つのシンボルの違いを知ることができますか?

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

algorithm - ハフマン木を解読するには?

入力数字0または1に基づいて左または右に移動するよりも良い方法はありますか?

0 投票する
6 に答える
47574 参照

algorithm - ハフマンコーディングの実際のアプリケーションは何ですか?

ハフマン符号化はロスレスデータ圧縮アルゴリズムとして使用されていると言われていますが、実際のデータ圧縮ソフトウェアはハフマン符号化を採用していないと言われています。キーが十分に分散化されていない場合、圧縮ファイルは元のファイルよりもさらに大きくなる可能性があるためです。ファイル。

これは、ハフマン符号化の実際のアプリケーションがあるのだろうかと私に疑問を残します。

0 投票する
6 に答える
27134 参照

c++ - ハフマンコードをすばやくデコードするには?

Windows で純粋なハフマン コードを使用して単純な圧縮プログラムを実装しましたが、圧縮ファイルをすばやくデコードする方法についてはよくわかりません。私の悪いアルゴリズムは次のとおりです。

コード表のすべてのハフマン コードを列挙し、それを圧縮ファイルのビットと比較します。3MB のファイルを解凍するには 6 時間かかるという恐ろしい結果が得られます。

より効率的なアルゴリズムを提供してもらえますか?ハッシュなどを使用する必要がありますか?

更新:友人のリンのアドバイスに基づいて、状態テーブルを使用してデコーダーを実装しました。この方法は、トラベサル ハフマン ツリーよりも優れていると思います。

ありがとう。

0 投票する
5 に答える
1879 参照

javascript - ASCII テキスト文字列の短縮

セキュリティやその性質にはあまり興味がありませんが、文字列を「圧縮」/「解凍」できる関数が必要です。Base64 を試してみましたが、文字列のサイズに大きな問題があり、長くなります。私はこのハフマンのものについても知っていますが、それも長くなるため機能しません(メモリの点では整数です)。

つまり、任意の文字列「djshdjkash」を別の文字列「dhaldhnctu」にエンコードする必要があります。1 つのストリングから別のストリングに移動でき、新しいストリングの長さを元のストリングと同じかそれ以下にすることができます。

これはJavascriptで可能ですか?それはすでに行われていますか?

  • セキュリティは目的ではないと言ったので、文字列を偽装してその長さを維持する(または短くする)だけであることを明確にする必要があります。Base64 は最良の例ですが、文字列が長くなります。ROT13 はきちんとしていますが、すべての ASCII 文字をカバーしているわけではなく、文字だけをカバーしています。