Menyimpan sedikit vektor dalam memori yang tidak diinisialisasi dan ruang minimal

8

Trik yang terkenal untuk menyimpan vektor bit menggunakan memori yang tidak diinisialisasi dapat mengalokasikan sedikit vektor ukuran di mana semua bit diatur ke 0 dengan mengalokasikan ( 2 n + 1 ) lg n bit memori dan menginisialisasi hanya lg n dari mereka. Representasi ini mendukung pengaturan dan penghapusan bit dalam waktu konstan.n0(2n+1)lgnlgn

Ini berasal dari buku "Alfred Aho, John Hopcroft, dan Jeffrey Ullman 1974, Desain dan Analisis Algoritma Komputer ... Bab 2, latihan 2.12", "Buku Pemrograman Mutiara Jon Bentley 1986 ... Kolom 1, latihan 8; latihan 9 dalam Edisi Kedua ", dan " makalah Preston Briggs dan Linda Torczon tahun 1993, 'Representasi yang Efisien untuk Perangkat Jarang' " .

"Changing Base without Losing Space" Dodis dkk. Menurunkan persyaratan ruang sedikit ke bit, meskipun algoritma ini membutuhkan perhitungan awal konstanta Θ ( lg n ) dengan Θ ( lg n ) masing-masing bit.(2n+1)lgn+1Θ(lgn)Θ(lgn)

Berapa banyak ruang yang bisa dihemat? Apakah ada representasi vektor bit di mana

  • Bit bisa set atau tidak diset di waktuO(1)
  • Menginisialisasi vektor bit baru s menggunakan o ( n lg n ) bit memori yang tidak diinisialisasi dan O ( lg n ) memori yang diinisialisasi0o(nlgn)O(lgn)
jbapple
sumber

Jawaban:

2

k(2n+1)lgn+kn

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

O(1)Θ(lgn)

jbapple
sumber