Ein bekannter Trick zum Speichern von Bitvektoren unter Verwendung eines nicht initialisierten Speichers kann einen Bitvektor der Größe zuweisen, bei dem alle Bits auf 0 gesetzt werden, indem ( 2 n + 1 ) ⌈ lg n ⌉ Speicherbits zugewiesen und nur ⌈ lg initialisiert werden n ⌉ von ihnen. Diese Darstellung unterstützt das Setzen und Deaktivieren von Bits in konstanter Zeit.
Dies geht zurück auf "Alfred Aho, John Hopcroft und Jeffrey Ullmans 1974 erschienenes Buch The Design and Analysis of Computer Algorithms ... Kapitel 2, Übung 2.12", "Jon Bentleys 1986er Buch Programming Pearls ... Spalte 1, Übung 8; Übung 9 in der zweiten Ausgabe "und " Preston Briggs und Linda Torczons 1993 erschienene Arbeit "Eine effiziente Darstellung für spärliche Mengen" " .
Dodis et al. den Platzbedarf geringfügig auf ⌈ ( 2 n + 1 ) lg n ⌉ + 1 Bit, obwohl dieser Algorithmus die Vorberechnung von Θ ( lg n ) -Konstanten mit Θ ( lg n ) jeweils Bits.
Wie viel Platz kann gespart werden? Gibt es eine Darstellung von Bitvektoren, in denen
- Bits können in -Zeit gesetzt oder deaktiviert werden
- Das Initialisieren eines neuen Bitvektors von s verwendet o ( n lg n ) Bits des nicht initialisierten Speichers und des O ( lg n ) initialisierten Speichers