Ich bin neugierig, ob es eine Möglichkeit gibt, einen Hash aus mehreren Ganzzahlen zu speichern, der im Idealfall die folgenden Eigenschaften aufweist:
- Es verwendet O (1) Raum
- Es kann aktualisiert werden, um das Einfügen oder Löschen in O (1) -Zeit wiederzugeben
- Zwei identische Sammlungen (dh Sammlungen, die die gleichen Elemente mit den gleichen Multiplizitäten aufweisen) sollten immer auf den gleichen Wert gehasht werden, und zwei unterschiedliche Sammlungen sollten mit hoher Wahrscheinlichkeit auf verschiedene Werte gehasht werden (dh die Funktion ist unabhängig oder paarweise unabhängig).
Ein erster Versuch dabei wäre, das Produkt modulo in einer zufälligen Primzahl der Hashes der einzelnen Elemente zu speichern. Dies erfüllt 1 und 2, aber es ist nicht klar, ob es oder eine enge Variation 3 erfüllen würde.
Ich habe das ursprünglich auf StackOverflow gepostet .
* Die Eigenschaften 1 und 2 könnten ein wenig gelockert werden, beispielsweise auf O (log n) oder ein kleines sublineares Polynom. Der Punkt ist zu sehen, ob wir Mehrfachmengen identifizieren und die Gleichheit zuverlässig testen können, ohne die Elemente selbst zu speichern.