Empreinte digitale pour les ensembles dynamiques

10

Existe-t-il une structure de données de mots-RAM de w bits avec O (1) temps par opération pour le problème suivant?: Maintenir un ensemble d'entiers non négatifs de w bits qui prend en charge les opérations

  • add (x): ajoutez x à l'ensemble
  • remove (x): supprime x de l'ensemble
  • fingerprint (): retourne une empreinte digitale de l'ensemble. Cette empreinte numérique w-bit a la propriété que deux ensembles identiques ont la même empreinte digitale tandis que deux ensembles différents ont probablement des empreintes digitales différentes

Toutes les opérations doivent s'exécuter en temps constant.

F(S)=(XS2X)modp
2Xmodp
Pat Morin
la source
3
Je vois qu'une question similaire a déjà été publiée ici , mais aucune solution à temps constant n'a été donnée.
Pat Morin

Réponses:

1

Cette réponse est un peu vague.

Sélectionnez une fonction uniformément au hasard dans l'ensemble de toutes les fonctions, des mots w-bit aux mots w-bit. Pour chaque ensemble, conservez une empreinte digitale w-bit comme suit:h

  1. L'ensemble vide a l'empreinte digitale 0.
  2. ajouter (x) et supprimer (x) mettre à jour une empreinte digitale à f h ( x ) , où est xor.FFh(X)

Soit deux ensembles d'entiers w bits. Si leurs empreintes digitales sont les mêmes, alors l'empreinte digitale de S T , la différence symétrique de S et T , est 0, ce qui se produit avec la probabilité 2 - w .STSTST2-w

jbapple
la source
h