Apakah ada struktur data kata-RAM w-bit dengan O (1) waktu per operasi untuk masalah berikut ?: Memelihara serangkaian bilangan bulat non-negatif w-bit yang mendukung operasi
- add (x): add x ke set
- remove (x): hapus x dari set
- sidik jari (): mengembalikan sidik jari set. Sidik jari w-bit ini memiliki properti yang dua set yang identik memiliki sidik jari yang sama, sedangkan dua set yang berbeda mungkin memiliki sidik jari yang berbeda.
Semua operasi harus berjalan dalam waktu yang konstan.
Skema sidik jari Rabin-Karp, di mana mana p adalah prime w-bit acak hampir berfungsi. Masalahnya dengan waktu pembaruan, karena komputasi 2 ^ x \ bmod p membutuhkan lebih dari waktu yang konstan. Menggunakan kuadrat berulang, ini bisa dilakukan dalam waktu O (log w). Algoritma eksponensial modular tercepat yang dapat saya temukan melakukan sesuatu seperti (log w) / (loglog w) operasi aritmatika.
ds.data-structures
Pat Morin
sumber
sumber
Jawaban:
Jawaban ini agak lamban.
Pilih fungsi seragam secara acak dari himpunan semua fungsi dari kata w-bit ke kata w-bit. Untuk setiap set, pertahankan sidik jari w-bit sebagai berikut:h
Biarkan menjadi dua set bilangan bulat w-bit. Jika sidik jari mereka sama, maka sidik jari , perbedaan simetris dan , adalah 0, yang terjadi dengan probabilitas .S≠ T S△ T S T 2−w
sumber