साहचर्य हैश मिश्रण


14

विशुद्ध रूप से कार्यात्मक सेटिंग में नीच एकल-लिंक की गई सूची पर विचार करें। इसकी प्रशंसा पहाड़ की चोटी से गाई गई है और इसे गाया जाता रहेगा। यहाँ मैं इसकी कई खूबियों और पेड़ों के आधार पर विशुद्ध रूप से कार्यात्मक अनुक्रमों के व्यापक वर्ग तक कैसे बढ़ाया जा सकता है, इस सवाल को संबोधित करूंगा।

समस्या निम्नलिखित है: आप मजबूत हैशिंग के माध्यम से ओ (1) समय में लगभग निश्चित संरचनात्मक समानता के लिए परीक्षण करना चाहते हैं। यदि हैश फ़ंक्शन संरचनात्मक रूप से पुनरावर्ती है, तो हैश (एक्स: एक्सएस) = मिक्स एक्स (हैश एक्सएस), तो आप सूचियों पर हैश मूल्यों को पारदर्शी रूप से कैश कर सकते हैं और उन्हें ओ (1) समय में अपडेट कर सकते हैं जब कोई तत्व किसी मौजूदा सूची पर सहमति व्यक्त करता है। । हैशिंग सूचियों के लिए अधिकांश एल्गोरिदम संरचनात्मक रूप से पुनरावर्ती हैं, इसलिए यह दृष्टिकोण व्यावहारिक रूप से प्रयोग करने योग्य है।

लेकिन मान लीजिए कि एक-सी लिस्ट के बजाय आपके पास ट्री-बेस्ड सीक्वेंस हैं, जो O (लॉग एन) समय में लंबाई O (n) के दो सीक्वेंस को सपोर्ट करते हैं। यहां काम करने के लिए हैश कैशिंग के लिए, हैश मिक्सिंग फंक्शन साहचर्य होना चाहिए ताकि एक ही रैखिक अनुक्रम का प्रतिनिधित्व करने में एक पेड़ की स्वतंत्रता की डिग्री का सम्मान किया जा सके। मिक्सर को उपप्रकार के हैश मान लेना चाहिए और पूरे पेड़ के हैश मान की गणना करनी चाहिए।

यह वह जगह है जहां मैं छह महीने पहले था जब मैंने इस समस्या पर एक दिन का समय बिताया था। ऐसा लगता है कि डेटा संरचनाओं पर साहित्य में कोई ध्यान नहीं दिया गया है। मैं क्रिप्टोग्राफी से टिलिच-ज़मोर हैशिंग एल्गोरिथ्म में आया था। यह 2x2 मैट्रिक्स गुणन पर निर्भर करता है (जो साहचर्य है) जहां बिट्स 0 और 1 एक गैलोज क्षेत्र में प्रविष्टियों के साथ एक सबलेजेब्रा के दो जनरेटर के अनुरूप है।

मेरा सवाल है, मैंने क्या याद किया है? क्रिप्टोग्राफी और डेटा संरचनाओं पर दोनों साहित्य में प्रासंगिकता के कागजात होने चाहिए जो मैं अपनी खोज में खोजने में विफल रहा। इस समस्या पर किसी भी टिप्पणी और संभावित स्थानों का पता लगाने के लिए बहुत सराहना की जाएगी।

संपादित करें: मैं स्पेक्ट्रम के नरम और क्रिप्टोग्राफिक रूप से मजबूत दोनों छोरों पर इस सवाल में दिलचस्पी रखता हूं। नरम पक्ष पर इसका उपयोग हैश तालिकाओं के लिए किया जा सकता है जहां टकराव से बचा जाना चाहिए, लेकिन आपत्तिजनक नहीं हैं। मजबूत पक्ष पर इसका उपयोग समानता परीक्षण के लिए किया जा सकता है।

जवाबों:


2

जोड़ा गया : पेर की टिप्पणियों को पढ़ने के बाद, मुझे लगता है कि यह जवाब टिलिच-ज़ेमोर हैशिंग एल्गोरिथ्म का सिर्फ एक (खराब) रूपांतर है जो पहले से ही प्रश्न में उल्लिखित है। मैं इस उत्तर को वापस लेता हूं, लेकिन मैं यह उम्मीद करना छोड़ देता हूं कि यह (और टिप्पणियां) कुछ पाठकों के लिए जानकारीपूर्ण हो सकती हैं।


संपादित करें : इस उत्तर के पहले संशोधन में [ m ] पर एक मोनॉइड ऑपरेशन का उपयोग करने का सुझाव दिया गया था , लेकिन जैसा कि एक टिप्पणी में बताया गया है, एक समूह ऑपरेशन का उपयोग करना वांछनीय है।

यह उत्तर हैश तालिकाओं के लिए हैश फ़ंक्शन के निर्माण के बारे में है, जो लागू करना आसान है। गुणवत्ता पर एक सिद्ध गारंटी अपेक्षित नहीं है।

यह मानते हुए कि आपके पास अनुक्रम के प्रत्येक तत्व के लिए पहले से ही एक परिमित सेट [ m ] = {1,…, m } के लिए एक हैश फ़ंक्शन है , एक परिमित समूह में एक तत्व के रूप में [ m ] के प्रत्येक तत्व की व्याख्या कैसे करें और G का उपयोग कर रहे हैं जी पर समूह संचालन ? आप [ m ] से G तक किसी भी मैपिंग का उपयोग कर सकते हैं , लेकिन यह वांछनीय है कि मैपिंग इंजेक्टिव हो ताकि हम प्रत्येक तत्व के हैश मान में जानकारी न खोएं। यह भी वांछनीय है कि समूह सराहनीय न हो ताकि हैश फ़ंक्शन किसी अनुक्रम में तत्वों के क्रम में अंतर को पकड़ सके।

मैं परिमित समूहों के बारे में ज्यादा नहीं जानता हूं जो तेजी से संचालन की अनुमति देते हैं, लेकिन मुझे लगता है कि ऐसे समूहों को कोडिंग सिद्धांत में जाना जाता है। कम से कम मी क्रम के सममित समूह का उपयोग करना इतना बुरा नहीं हो सकता है।


1
हाँ, टिलिच-ज़ेमोर हैशिंग भी मैट्रिक्स गुणन का उपयोग करते हैं। आप जो सुझाव देते हैं वह आगे के संशोधनों के बिना काम नहीं कर सकता है। उदाहरण के लिए, आपको विलक्षण मैट्रिक्स से बचना चाहिए या हैश के आँकड़ों को बर्बाद करते हुए 0 पर संचय प्राप्त करना चाहिए। टिलिच-ज़ेमोर एक गैलोज़ क्षेत्र में काम करता है; उनके एल्गोरिथ्म के एक पुराने संस्करण में समस्याएं थीं क्योंकि उन्होंने एक उत्पन्न बहुपद का उपयोग किया था जिसमें उप-दलीय आँकड़े थे, इसलिए विशेष रूप से गैलोज़ क्षेत्र बहुत महत्वपूर्ण हो सकता है।
प्रति सोग्न

@Per: मैं देख रहा हूँ। समझाने के लिए धन्यवाद। फिर किसी भी परिमित समूहों का उपयोग करने के बारे में क्या? मैंने इसका उत्तर संशोधित कर दिया।
त्सुयोशी इतो

मैं सहमत हूँ। समूहों के अनंत परिवारों को उत्पन्न करने का सबसे अच्छा तरीका मैट्रिक्स समूहों के साथ परिमित क्षेत्रों (cf. वर्गीकरण प्रमेय के लिए सरल समूहों) पर है, इसलिए ऐसा लगता है कि इस फॉर्म के एल्गोरिदम टिलिच-ज़ेमोर प्रकार के होंगे।
प्रति सोग्न

@Per: मैं समूह सिद्धांत से परिचित नहीं हूं, और मैं यह नहीं देख सकता कि परिमित क्षेत्रों के मैट्रिक्स समूह इस संदर्भ में सममित समूहों से बेहतर क्यों हैं। क्या आप इसके बारे में विस्तार से बता सकते हैं?
त्सुयोशी इतो

1
कारणों की एक जोड़ी है। एक के लिए, आप बड़े सममित समूहों में कुशलता से गणना नहीं कर सकते हैं, और आपको कोलेजन प्रतिरोध के लिए 2 ^ 128 के आदेश पर समूहों की आवश्यकता है। इसके विपरीत, आप मैट्रिसेस के साथ विशेषता 2 परिमित क्षेत्रों पर बहुत कुशलता से गणना कर सकते हैं, खासकर यदि आप एक विरल जनरेटर बहुपद लेते हैं; यह सिर्फ बिट जोड़तोड़ का एक गुच्छा है।
प्रति सोग्न

1

हैश कार्यों के लगभग सार्वभौमिक परिवार

{ha(x)=aiximodp:aZp}

यहाँ एक अच्छी संपत्ति है: , जहां " " को दर्शाता है। यदि आप प्रत्येक पेड़ के मूल मान और उसके दोनों हैश मान पर कैश करते हैं , तो आप पर संचालन में दो पेड़ों के के हैश की गणना कर सकते हैं। ।ha(x)+a|x|ha(y)=ha(xy)a|x|O(1)Zp

यह साहचर्य और बहुत तेज दोनों है। की टक्कर संभावना है । CLRS या डाइटज़फेलबिंगर एट अल को "पोलीनोमियल हैश फंक्शंस विश्वसनीय हैं" देखें।xyO(min(|x|,|y|)/p)


1

एक उपाय है मर्कल हैशिंग का उपयोग करना। एक अपरिवर्तनीय / लगातार बाइनरी ट्री डेटा संरचना का उपयोग करें। उस पत्ती के भीतर निहित डेटा के हैश के साथ प्रत्येक पत्ती नोड को एनोटेट करें। अपने दो बच्चों पर हैश के हैश के साथ प्रत्येक आंतरिक नोड का उल्लेख करें। दूसरे शब्दों में, यदि बच्चों साथ एक आंतरिक नोड है , और उन्हें हैश मान साथ एनोटेट किया गया है , तो आपको आंतरिक नोड को हैश मान साथ एनोटेट करना चाहिए। , जहां एक हैश फ़ंक्शन है। यह सभी पेड़ों के संचालन के लिए बनाई गई प्रति नोड केवल अतिरिक्त काम जोड़ता है । उदाहरण के लिए, आप समय में दो पेड़ों के विलय का समर्थन कर सकते हैं ।nn,ny,yny=H(y,y)HO(1)O(lgn)

एक अन्य दृष्टिकोण एक कम्यूटेटिव, साहचर्य हैश का उपयोग करना है। साथ पेड़ की जड़ को लेबल करें , जहां पेड़ की पत्तियों पर मूल्यों का प्रतिनिधित्व करते हैं । फिर, /crypto//q/11420/351 पर सुझाए गए हैश फ़ंक्शन निर्माणों में से एक का उपयोग करें ताकि यह सुनिश्चित हो सके कि इसमें कम्यूटेटिव, साहचर्य गुण है। अब दो पेड़ दिए गए हैं, आप उन्हें मर्ज कर सकते हैं और कुशलता से उनकी जड़ पर हैश मूल्य का निर्माण कर सकते हैं।एक्स 1 , , एक्स एम एमH(x1,,xm)x1,,xmm

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.