ほとんどの場合、サフィックス配列が推奨されますが、次の場合を除きます。
- 少量のデータのインデックスを作成する場合。
- タンパク質の一致や DNA の突然変異に関する研究を行っていて、非常に高価なコンピューターにアクセスできる場合。
- どうしても必要な場合は、ワイルドカードを使用したエラー検索を使用してください。
サフィックス配列を使用して、サフィックス ツリーを実装できます。つまり、サフィックス ツリーは、サフィックス アレイと、サフィックス ツリーの機能をシミュレートするためのいくつかの追加データ構造にすることができます。
したがって:
- 接尾辞配列が使用するスペースが少ない (はるかに少ない)
- サフィックス ツリーの構築が遅い
- サフィックス ツリーは、パターン マッチング操作の実行が高速です
- サフィックス ツリーはより多くの操作を実行できます。最善の方法は、ワイルドカードを使用したエラー パターン マッチングです (サフィックス配列もパターン マッチングを行いますが、ワイルドカードを使用しません)。
50 メガバイトを超えるような大量のデータにインデックスを付けたい場合。サフィックス ツリーは非常に多くのスペースを使用するため、コンピューターには中央メモリに保持するための十分な RAM がありません。そのため、セカンダリ メモリの使用が開始され、速度が大幅に低下します。(たとえば、人間の DNA は 700 メガバイトを使用し、そのデータの接尾辞ツリーは 40 ギガバイトを「使用できます」 -> * 実装に応じて「可能です * 」)
このため、接尾辞ツリーが実際に使用されることはほとんどありません。実際には、接尾辞配列が使用され、小さな追加のデータ構造により、いくつかの追加機能が提供されます (完全な接尾辞ツリーではありません)。
しかし、それらは異なります。効率的な速度、高速な構築速度、および少ないスペースの使用により、パターン マッチングに純粋な接尾辞配列が適している場合が多くあります。