互いに素な整数区間のセットがあり、特定の整数がこれらの区間の1つにあるかどうかを確認したいと思います。もちろん、これは対数時間での二分探索によって達成できます。ただし、クエリの大部分は戻りfalse
ます。つまり、任意の間隔に存在する整数はごくわずかです。アプリケーションを高速化するために、与えられた整数が間違いなくないか、あるいは間隔内にあるかどうかを教えてくれる確率的で一定時間のアルゴリズム(ある種のハッシュ関数)を探しています。これは、目的のアルゴリズムのスケッチです。ここでは、にmagic_data_structure
格納されている間隔で初期化されtree
ます。
x = some_integer;
if(!magic_data_structure.find(x))
return false; // definitely not in any interval
return tree.find(x); // binary search on tree
文学のアイデアやヒントはありますか?よろしくお願いします!
PS:(上記のものとは異なり)他の区間を含む可能性のある重複しない区間の区間木の改善を知っている人はいますか?