これについて自由に利用できる実装はないと思います (商用コードで少なくとも 3 つの同様の構造を作成しましたが、とにかく私が知っているわけではありません)。
アイテムを順番に追加することについてマルセロが行った発言は非常に関連性があります。おそらく、追加時にデータを圧縮したいと思うでしょう-追加されているものとすでに類似しているエントリにすばやくアクセスできると、セット全体で「最適なエントリ」(類似性圧縮に必要)を検索します。
あなたが読みたいと思うかもしれないもう1つのことは、「ロープ」です。これは、私がマルコ・カントゥに少し前に提案した文字列とは概念的に異なるタイプです。「より糸」ごとに次のポインターを犠牲にして (より適切な単語がないため)、重複データを保持せずに文字列の一部を連結できます。主な問題は、元の文字列を表す新しい「ロープ」に結合できるパーツを取得する方法です。この問題が解決されれば、いつでもデータを文字列として再構築できますが、ストレージはコンパクトに保たれます。
「ロープ」ルートに行きたくない場合は、「プレフィックスリダクション」と呼ばれるものを試すこともできます。これは単純な形式の圧縮です-各文字列を前の文字列のインデックスと文字数で始めるだけですこれは、新しい文字列のプレフィックスとして扱われるべきです。これを再帰しすぎると、アクセス速度が大幅に低下することに注意してください。1 つの単純な実装では、mod 16
プレフィックスの削減が開始されたエントリを確立するために、インデックスに対して実行しました。これにより、平均で約 40% のメモリが節約されました (この数値はもちろん完全にデータに依存します)。