1

このDouble-Array Trie implementationを理解し、使用しようとしています。しかし、私は彼らが提示する理論的な実装とコードの間の類推を理解することができるようです.
正確には、以下が使用される主な Trie 構造です。

struct _Trie {
AlphaMap   *alpha_map;
DArray     *da;
Tail       *tail;

Bool        is_dirty;
};  

誰かがこの実装を使用したことがある場合は、次の構造の使用と、ベース配列とチェック配列に関する double 配列の概念との関係について、高レベルの説明を提供してください。特に AlphaMap。

前もって感謝します、

4

1 に答える 1

0

libdatrieUnicode 文字をコンパクトな内部表現に変換します。トライを作成するときに、許可される範囲のリストを定義する必要があります。alpha_map文字範囲の連結リストです。

daは二重配列構造です。baseおよびcheck配列が含まれています。

tail非分岐接尾辞を格納するために使用されるデータ構造です(「接尾辞圧縮」を参照)。

is_dirtyトライがまだディスクに格納されていない場合、またはディスクからロードした後に変更された場合に TRUE に設定されるフラグです。

于 2012-07-22T07:54:54.233 に答える