Gibt es eine W-Bit-Wort-RAM-Datenstruktur mit O (1) Zeit pro Operation für das folgende Problem?: Behalten Sie einen Satz nicht negativer W-Bit-Ganzzahlen bei, die die Operationen unterstützen
- add (x): füge x zur Menge hinzu
- remove (x): entferne x aus dem Set
- fingerprint (): Gibt einen Fingerabdruck des Sets zurück. Dieser W-Bit-Fingerabdruck hat die Eigenschaft, dass zwei identische Sätze denselben Fingerabdruck haben, während zwei unterschiedliche Sätze wahrscheinlich unterschiedliche Fingerabdrücke haben
Alle Operationen sollten in konstanter Zeit ausgeführt werden.
Das Rabin-Karp-Fingerabdruckschema, bei dem wobei p eine zufällige w-Bit-Primzahl ist, funktioniert fast. Das Problem liegt in der Aktualisierungszeit, da die Berechnung von 2 ^ x \ bmod p mehr als konstante Zeit in Anspruch nimmt. Durch wiederholtes Quadrieren kann dies in O (log w) -Zeit erfolgen. Der schnellste modulare Exponentiationsalgorithmus, den ich finden konnte, führt so etwas wie (log w) / (loglog w) arithmetische Operationen aus.