1
Ukkonenのアルゴリズムの実行時間はアルファベットサイズにどのように依存しますか?
Ukkonenのアルゴリズムの漸近的な実行時間、おそらく線形(?)時間でサフィックスツリーを構築するための最も一般的なアルゴリズムの問題に関心があります。 これは、ダンガスフィールドによる本「ストリング、ツリー、シーケンスのアルゴリズム」からの引用です(セクション6.5.1)。 "... Aho-Corasick、Weiner、Ukkonen、およびMcCreightアルゴリズムはすべてスペースを必要とするか、O (m )時間境界を最小のO (m log m )およびOに置き換える必要があります(m log |Θ (m | Σ |)Θ(m|Σ|)\Theta(m|\Sigma|)O (m )O(m)O(m)O (m ログm )O(mログm)O(m \log m) "。O (m ログ| Σ | )O(mログ|Σ|)O(m \log|\Sigma|) [ mmmは文字列の長さ、はアルファベットのサイズ]ΣΣ\Sigma なぜそうなのか分かりません。 スペース:まあ、サイズ配列を使用してノードからの分岐を表す場合、実際、Θ (m | Σ |)スペース使用になります。ただし、私の知る限り、ハッシュテーブル(Pythonの辞書など)を使用してブランチを保存することもできます。その後、O (1 )の子ノードにアクセスできる一方で、すべてのハッシュテーブルにΘ (m )ポインターのみを格納します(ツリーにはΘ (m )エッジがあるため)。Θ (| Σ |)Θ(|Σ|)\Theta(|\Sigma|)Θ (m | Σ …