2011-01-29 14 views
7

आम तौर पर, हैशिंग का लक्ष्य निरंतर कार्य को एक अलग में बदलना है: इनपुट में एक छोटा सा परिवर्तन आउटपुट में एक बड़ा बदलाव होना चाहिए। हालांकि, क्या कोई हैशिंग एल्गोरिदम है जो (बहुत) मोटे तौर पर बोल रहा है, समान इनपुट के लिए समान लेकिन (अभी भी अलग) हैश करता है?हैशिंग समानता

(इस के उपयोग का एक उदाहरण देखने के लिए कि क्या दो फ़ाइलों "समान" समानता के लिए उनके हैश की जाँच करके कर रहे हैं होगा। बेशक, कुछ विफलता हमेशा स्वीकार्य है।)

+0

आप "समान" को कैसे परिभाषित करते हैं? – thkala

+0

लगभग उसी लंबाई में दो धाराएं और उसी क्रम में लगभग उसी डेटा को समान माना जाएगा। (ध्यान दें कि मुझे यह कहना जरूरी नहीं है कि "क्या ये दो समान हैं?" एक बुलियन के रूप में, बल्कि किसी प्रकार की संख्या-रेटिंग प्रणाली के रूप में। उदाहरण के लिए, [1, 2, 3, 4] अधिक समान हो सकता है [1, 2, 3] से [4, 3, 2, 1] ...) – Mehrdad

+0

हैश फ़ंक्शन का पूरा बिंदु यह सुनिश्चित करना है कि इनपुट के किसी भी बिट में बदलाव का मौका होना चाहिए आउटपुट के * हर * बिट बदल रहा है। – Pointy

उत्तर

10

Locality Sensitive Hashing (LSH) पर देखो । उदाहरण के लिए, किसी दिए गए एक के पास बिंदुओं का एक गुच्छा जल्दी से खोजने का एक संभाव्य तरीका है।

+0

+1 ठीक वही लगता है जो मैं ढूंढ रहा था ... मुझे खोजने के लिए शब्द नहीं पता था; धन्यवाद! :) – Mehrdad

1

एक दूरी समारोह है कि आपको बताता है कि समान या अलग अपने वस्तुओं रहे हैं, आप भी दूरी क्रमपरिवर्तन का उपयोग कर सकते देखते हुए: http://www.computer.org/portal/web/csdl/doi/10.1109/TPAMI.2007.70815 या नमूने: http://obsearch.net

: http://portal.acm.org/citation.cfm?id=1638180

बाद दृष्टिकोण के एक कार्यान्वयन के लिए

संबंधित मुद्दे