私はLempel-Ziv圧縮を実装しています。辞書に含まれる最も長いプレフィックスを見つける
「辞書」と文字列を指定します。私は辞書に含まれている文字列の最長接頭語を計算できるようにしたい。
与えられた文字列:
0 : AABB
1 : ABA
2 : AAAB
とクエリ文字列「AABBABA」私は返す検索を行うことができるようにしたいと思います「0」これは、の長さに時間線形に行われる必要があります接頭辞。
次は、新しいプレフィックス 'AABBAB'を一定時間内に辞書に追加したいと考えています。
これを行うための標準的で簡単な方法/アルゴリズムはありますか?
私の元のアイデアは、ポインタのリストでスタンドアールのn-wayツリーを作成し、これを検索することでしたか?
「線形時間」は、辞書検索の複雑さがアルファベットサイズSとは無関係であることを意味しますか?そのサウンドからの「標準的なnウェイ」ツリーは、ノードごとにS個の出力エッジを持つことができます。 – jogojapan
@ jogojapan:あなたは正しいです、私は長さに関して線形を意味します。アルファベットの平均線形の場合定数: –