初期化されていないメモリと最小限のスペースにビットベクトルを格納する


8

初期化されていないメモリを使用して、ビットベクトルを格納するためのよく知られたトリックサイズのビットベクトルに割り当てることができたビットのすべてに設定されている0割り当てることによって2 N + 1 LG N メモリのビットと初期化のみLGをN それらの。この表現は、一定時間でのビットの設定と設定解除をサポートします。n0(2n+1)lgnlgn

これは、「Alfred Aho、John Hopcroft、およびJeffrey Ullmanの1974年の本、The Computer and of Analysis of Computer Algorithms。。。。Chapter 2、演習2.12」、「Jon Bentleyの1986年の本、Programming Pearls。。。.Column 1、演習8、演習にさかのぼります。第2版​​の9」、および「プレストンブリッグスとリンダトルクゾンの1993年のペーパー、「スパースセットの効率的な表現」」

Dodisらの「スペースを失うことなく、ベースを変更する」までわずかにスペース要件をもたらしこのアルゴリズムはの事前計算が必要ですが、ビットΘ LG nはと定数Θ lg n 各ビット。(2n+1)lgn+1Θ(lgn)Θ(lgn)

どのくらいのスペースを節約できますか?ビットベクトルの表現はありますか

  • ビットは時間で設定または設定解除できますO(1)
  • sの新しいビットベクトルを初期化すると、初期化されていないメモリのo n lg n ビットとO lg n )の初期化メモリが使用されます。0o(nlgn)O(lgn)

回答:


2

k(2n+1)lgn+kn

k=lgnklgnn/lgnΘ(n)Θ(lgn)

O(1)Θ(lgn)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.