האם יש אלגוריתם hash שיעזור לך לזהות קבצים או מחרוזות דומות? לדוגמה, החשיש עבור ABC ו- XBC יהיה דומה ולא שונה בתכלית כפי שקורה בדרך כלל. ידוע לי על מידה אחת של דמיון, עריכת מרחק ( http://en.wikipedia.org/wiki/Edit_distance). אך זה לא נותן לך חשיש לכל קלט להשוואה, אלא רק ציון בין שתי קלט.
עדכון
ההערה של אנדן ( hashing רגיש לישוב, LSH) זה מה שחיפשתי. המניע שלי לשאול את השאלה הוא שתהיתי כיצד ניתן להשתמש ב- LSH בסריקת תוכנות זדוניות. האם הוא משמש לזיהוי תוכנות זדוניות? מדוע או מדוע לא?
עדכון
בקנה אחד עם התשובה של טום כרישה, ערכתי בירור משלי. כתבתי תוכנית שתשמור על בתים של קובץ עם תבנית "אקראית" קבועה מראש (הזרע לא השתנה). ואז זה יסכם את סך 1 הביטים. זה יפיק את מרחק ההאמינג מהתבנית האקראית לקובץ. באמת, זה לא היה מדד שימושי במיוחד כיוון שבאופן בסיסי (בממוצע) רק מחצית את גודל הקובץ כדי להגיע למספר.
כמה דוגמאות:
שתי הפעלות קשורות סרקתי ציונים 2684964 ו 2738772 בהפרש של 53808. הם בהחלט קשורים (גרסאות שונות של תוכניות שכתבתי) אך הערך של 53k קרוב למחצית מהפרש גודל הקובץ בסיביות: ~ 128k. אז זה לא מדד שימושי לקביעת הדמיון.
סרקתי שני JPEG בגודל דומה שהיו בהחלט תמונות שונות. הם סרקו כ- 3124915 ו- 3110981 להפרש של 13934. כך שההבדל ביניהם היה "קטן יותר" מההבדל בין ההפעלה הקשורה, למרות שהם אינם קשורים. אז זה גם לא מדד שימושי לקביעת ההבדל.
מסקנה:
כפי שטום ליק אמר, זו בעיה גלויה מסיבה.