Impronta digitale per set dinamici


10

Esiste una struttura di dati word-RAM w-bit con tempo O (1) per operazione per il seguente problema ?: Mantenere un set di numeri interi non negativi w-bit che supporta le operazioni

  • add (x): aggiunge x all'insieme
  • remove (x): rimuove x dal set
  • fingerprint (): restituisce un'impronta digitale del set. Questa impronta digitale w-bit ha la proprietà che due set identici hanno la stessa impronta digitale mentre due set diversi probabilmente hanno impronte digitali diverse

Tutte le operazioni dovrebbero essere eseguite a tempo costante.

Lo schema di fingerprinting di Rabin-Karp, dove dove p è un numero casuale a bit w quasi funziona. Il problema è con il tempo di aggiornamento, poiché il calcolo di 2 x mod p richiede più di un tempo costante. Usando la quadratura ripetuta, questo può essere fatto in O (log w) tempo. L'algoritmo di esponenziazione modulare più veloce che ho trovato fa qualcosa di simile alle operazioni aritmetiche (log w) / (loglog w).

f(S)=(xS2x)modp
2xmodp

3
Vedo che una domanda simile è già stata pubblicata qui , ma non è stata data una soluzione a tempo costante.
Pat Morin,

Risposte:


1

Questa risposta è un po 'ondulata.

h

  1. Il set vuoto ha l'impronta digitale 0.
  2. ffh(x)

STSTST2w


h
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.