الهاش التي تم إنشاؤها بواسطة Rabin Karp Rolling Hash لا تعكس النص
-
28-10-2019 - |
سؤال
ملاحظة: الكثير من التكرارات المحتملة ، ولكن لا يبدو أن هناك شيئًا يحل مشكلتي.
أنا أعمل على اكتشاف الانتحال بناءً على MOSS .
بعد التطبيق الناجح لمرشح يزيل كل التفاصيل الضرورية (التعليقات وعلامات الترقيم وما إلى ذلك) ، قمت بتجزئة المحتوى باستخدام تطبيق Rolling Hash (Rabin Karp)
ومع ذلك ، فإن التجزئة التي تتطابق في ملفين نصيين لشفرة المصدر ، تحتوي على نص أساسي مختلف تمامًا (لا يوجد سرقة أدبية ومع ذلك توجد علامات التجزئة نفسها)
الخوارزمية التي طبقتها (روبي) -> (مقتطف جزئي) Genacodicetagpre
هل هناك مشكلة في التنفيذ؟ أو يمكن أن تكون المعلمات التي أحددها على خطأ؟
آخذ الجذر= 34 (لست متأكدًا مما إذا كانت هذه هي القيمة الصحيحة ، أفترض أن النص الذي تم تجريده سيحتوي فقط على أحرف أبجدية + بعض الأحرف الخاصة مثل "+" ، "-" ، "*" ، "/" لذا تقدير تقريبي لإجمالي 34 الشخصيات)
أعتبر q (رئيسًا) ليكون 101
هل هذه مشكلة تصادم أتعامل معها؟ هل توجد أية مؤشرات حول كيفية معالجة المشكلة؟
المحلول
ألاحظ أنه مع q= 101 ، لا يوجد سوى 101 قيمة تجزئة ممكنة - 0 ، 1 ، 2 ... 100.هل حاولت زيادة س؟هناك طريقة أخرى تتمثل في البحث ومعرفة ما إذا كانت قيم التجزئة تبدو وكأنها قيم تم اختيارها عشوائيًا ضمن القيم المحتملة لـ 0،1..q-1.
يجب عليك بالطبع أيضًا اختبار برنامجك في الحالات التي توجد فيها سلاسل متكررة للبحث عنها - قد يكون هناك فشل من أعراض أي مشكلة تتسبب أيضًا في حدوث تصادمات ، وسيكون من الأسهل العثور عليها وتصحيحها.