質問する前に、定義の理解から始めて、混乱を避けるために、背景を説明します。
ハフマンコードは、ハフマンのアルゴリズムによって構築されたバイナリツリーから誘導されたバイナリコードです。
Hu–Tucker Codeは、アルファベット順の検索ツリーから生成されたバイナリコードです。ウィキペディアに
よると(最適なアルファベットの二分木(Hu–Tuckerコーディング)の段落を参照):
標準のハフマンコーディング問題では、任意のコードワードが任意の入力シンボルに対応できると想定されています。アルファベットバージョンでは、入力と出力のアルファベット順は同じでなければなりません。したがって、たとえば、はコード割り当てることができませんでした。ただし、代わりにまたは 。これはHu–Tucker問題としても知られています。TCHuおよびAlan Tuckerの後に、この最適なバイナリアルファベット問題の最初の線形解を提示する論文の著者は、ハフマンアルゴリズムといくつかの類似点を持っていますが、これのバリエーションではありませんアルゴリズム。これらの最適なアルファベット二分木は、二分探索木としてよく使用されます。
私の質問は、そのような木の用途は何ですか?(アルファベットのバイナリツリー)
オンラインで検索しようとしましたが、満足のいく答えが見つかりませんでした。
私はHu&Tuckerの論文の主題に関する紹介も読みました:
Optimal Computer Search TreesとVariable-Length Alphabetical Codeですが、そのようなツリーの使用例を正確に理解することはできませんでした。
最適なツリー(つまり、ハフマンコード)によって引き起こされる、コンパクトで最適なプレフィックスコードの必要性をよく理解できます。これは圧縮に使用できますが、アルファベット順の二分木はどのように使用されますか?