Dinamik setler için parmak izi


10

Aşağıdaki sorun için işlem başına O (1) zamanı olan bir w-bit word-RAM veri yapısı var mı ?: İşlemleri destekleyen bir w-bit negatif olmayan tamsayılar kümesi

  • add (x): sete x ekle
  • remove (x): x'i setten kaldır
  • fingerprint (): setin parmak izini döndürür. Bu w-bit parmak izi, aynı olan iki setin aynı parmak izine sahip olma özelliğine sahipken, farklı olan iki set muhtemelen farklı parmak izlerine sahip

Tüm işlemler sabit zamanda yapılmalıdır.

Rabin-Karp parmak izi şeması, burada burada p rastgele bir w-bit asaldır neredeyse çalışır. 2 ^ x \ bmod p'nin hesaplanması sabit süreden daha uzun sürdüğü için sorun güncelleme zamanıdır. Tekrarlanan kareler kullanılarak, O (log w) zamanında yapılabilir. Bulabildiğim en hızlı modüler üs alma algoritması (log w) / (loglog w) aritmetik işlemler gibi bir şey yapar.2 x mod p

f(S)=(xS2x)modp
2xmodp

3
Benzer bir sorunun burada zaten gönderildiğini görüyorum , ancak sabit zamanlı bir çözüm verilmedi.
Pat Morin

Yanıtlar:


1

Bu cevap biraz el-dalgadır.

W-bit sözcüklerden w-bit sözcüklere kadar tüm işlevler kümesinden rasgele bir işlev seçin . Her set için bir w-bit parmak izi aşağıdaki gibi olmalıdır:h

  1. Boş sette parmak izi 0 bulunur.
  2. ekleyin (x) ve kaldırma (x) parmak izi güncelleme için , burada XOR.f h ( x ) ffh(x)

Let w-bit tamsayı iki grup olabilir. Parmak izleri aynı ise, parmak izi, ve simetrik farkı 0'dır, bu da olasılığı ile olur .S T S T 2 - wSTSTST2w


Ve pratikte kriptografiden sahte bir işlev (PRF) ile başlatabilirsiniz - örneğin, AES tabanlı bir şey. Çok verimli olmalı ve (kripto kırılmadıkça) işe yarayacağına dair güçlü sözler alıyorsunuz. h
DW
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.