の要素を格納するためのデータ構造が必要 です。各要素は異なる時間関連付けられてい 。 は変動し、理論的な上限がありますが、これは通常使用されるものよりも桁違いに大きくなります。
私のアプリケーションを通して、私はそれを保証することができます:
挿入された要素は、既存のすべての要素より常に新しいものです。つまり、時間関連付けられた要素が挿入された場合、ます。要素は1つずつ挿入されます。
最も古い要素のみが削除されます。つまり、要素が削除された場合、ます。削除は主に1つずつ行われますが、誤って格納された要素の割合が1未満である限り、要素の削除が遅れても直接的な害はありません。
挿入と削除を除いて、私がする必要がある唯一のことは、、ある時間の2つの隣接する要素を見つけること。言い換えると、t_j <\ tilde {t} <t_kおよび∄l {\ {1、…、n \}:t_j <t_l <t_k となるような2つの要素jと kを見つける必要があります。
データ構造の私の基準は次のとおりです。
- 上記のように要素を見つけることは、可能な限り迅速でなければなりません。
- 挿入と取り外しはすばやく行う必要があります。
- データ構造は比較的簡単に実装できます。
小さな実行時オフセットについて話していない限り、各基準は次の基準よりも優先されます。
これまでの私の調査では、答えはおそらく何らかの自己均衡検索ツリーであることがわかりましたが、片側挿入または片側削除の場合に最適な情報を見つけることができませんでした。私を見つけるのにかなりの時間。また、ツリーの自己組織化の速さと速度(たとえば、AVLツリーは赤黒のツリーよりも厳格に自己組織化する)についての不完全な情報だけを見つけました。