前述のアプローチでは、各セルが、アレイを再初期化する必要がある回数を保持するのに十分な数を保持できる必要があり、これはかなりのスペースのペナルティです。スロットは、合法的に書き込まれることはありません少なくとも一つの値を保持することが可能である場合、一つは追加の費用で、他の(非定数)空間ペナルティを回避することができるO(Wlg(N))
時間のペナルティを、W
数で異なる配列スロットの間に書かれ消去操作でありN
、配列のサイズです。たとえば、-2,147,483,647から2,147,483,647の整数を格納し(ただし、-2,147,483,648は絶対に格納しない)、空の配列項目を0として読み込む必要があるとします。配列に-2,147,483,648を入力することから始めます(その値を呼び出しますB
)。アプリケーションの配列スロットを読み取るとき、値B
としてゼロを報告します。アレイのスロットを書き込む前にI
、それを保持するかどうかをチェックB
し、そうであればI
1より大きい、スロットにゼロを記憶されI/4
(それが保持していた場合、その位置のために同様の検査を行った後B
、I/16
など)。
配列をクリアするI
には、配列のベースに応じて0または1から始めます(説明したアルゴリズムはどちらでも機能します)。次に、次の手順を繰り返します。itemがの場合、インクリメントし、4の倍数になる場合I
はB
、I
4で除算します(除算の値が1の場合は終了します)。アイテムI
がでない場合はB
、B
そこに保存I
して4 倍I
します(ゼロから始まる場合、4倍するとゼロのままになりますが、アイテム0は空白なので、I
インクリメントされます)。
上記の定数「4」を他の数値に置き換えることができることに注意してください。一般に、値が大きいほど作業のタグ付けは少なくなりますが、値が小さいほど作業のクリアは少なくなります。タグ付きのアレイスロットはクリアする必要があるため、3または4の値がほぼ確実に最適です。値4は確かに最適値に近く、2または8よりも優れており、他のどの数値よりも便利であるため、最も合理的な選択と思われます。