Pertimbangkan daftar yang hanya terhubung sendiri dalam pengaturan fungsional murni. Pujiannya telah dinyanyikan dari puncak gunung dan akan terus dinyanyikan. Di sini saya akan membahas satu di antara banyak kekuatannya dan pertanyaan tentang bagaimana ia dapat diperluas ke kelas yang lebih luas dari rangkaian fungsional murni berdasarkan pohon.
Masalahnya adalah sebagai berikut: Anda ingin menguji kesetaraan struktural yang hampir pasti dalam waktu O (1) dengan hashing yang kuat. Jika fungsi hash secara struktural bersifat rekursif, yaitu hash (x: xs) = mix x (hash xs), maka Anda dapat secara tembolok meng-cache nilai hash pada daftar dan memperbaruinya dalam waktu O (1) ketika sebuah elemen dimasukkan ke dalam daftar yang ada . Sebagian besar algoritma untuk daftar hashing secara struktural bersifat rekursif, sehingga pendekatan ini sangat dapat digunakan dalam praktiknya.
Tetapi anggaplah alih-alih daftar yang terhubung secara tunggal Anda memiliki urutan berbasis pohon yang mendukung gabungan dua urutan panjang O (n) dalam waktu O (log n). Agar caching hash berfungsi di sini, fungsi pencampuran hash harus asosiatif untuk menghormati derajat kebebasan yang dimiliki pohon dalam merepresentasikan urutan linier yang sama. Mixer harus mengambil nilai hash dari sub pohon dan menghitung nilai hash dari seluruh pohon.
Di sinilah saya enam bulan lalu ketika saya menghabiskan satu hari untuk merenungkan dan meneliti masalah ini. Tampaknya tidak mendapat perhatian dalam literatur tentang struktur data. Saya memang menemukan algoritma hashing Tillich-Zemor dari kriptografi. Ini bergantung pada perkalian matriks 2x2 (yang asosiatif) di mana bit 0 dan 1 sesuai dengan dua generator subalgebra dengan entri dalam bidang Galois.
Pertanyaan saya adalah, apa yang saya lewatkan? Pasti ada makalah yang relevan dalam literatur tentang kriptografi dan struktur data yang gagal saya temukan dalam pencarian saya. Setiap komentar tentang masalah ini dan tempat yang mungkin untuk dijelajahi akan sangat dihargai.
Sunting: Saya tertarik dengan pertanyaan ini tentang ujung spektrum yang lembut dan kuat secara kriptografis. Di sisi yang lebih lunak dapat digunakan untuk tabel hash di mana tabrakan harus dihindari tetapi tidak menimbulkan bencana. Di sisi yang lebih kuat dapat digunakan untuk pengujian kesetaraan.