الهاش التي تم إنشاؤها بواسطة Rabin Karp Rolling Hash لا تعكس النص

StackOverflow https://stackoverflow.com/questions/8868124

سؤال

ملاحظة: الكثير من التكرارات المحتملة ، ولكن لا يبدو أن هناك شيئًا يحل مشكلتي.

أنا أعمل على اكتشاف الانتحال بناءً على MOSS .

بعد التطبيق الناجح لمرشح يزيل كل التفاصيل الضرورية (التعليقات وعلامات الترقيم وما إلى ذلك) ، قمت بتجزئة المحتوى باستخدام تطبيق Rolling Hash (Rabin Karp)

ومع ذلك ، فإن التجزئة التي تتطابق في ملفين نصيين لشفرة المصدر ، تحتوي على نص أساسي مختلف تمامًا (لا يوجد سرقة أدبية ومع ذلك توجد علامات التجزئة نفسها)

الخوارزمية التي طبقتها (روبي) -> (مقتطف جزئي) Genacodicetagpre

هل هناك مشكلة في التنفيذ؟ أو يمكن أن تكون المعلمات التي أحددها على خطأ؟

آخذ الجذر= 34 (لست متأكدًا مما إذا كانت هذه هي القيمة الصحيحة ، أفترض أن النص الذي تم تجريده سيحتوي فقط على أحرف أبجدية + بعض الأحرف الخاصة مثل "+" ، "-" ، "*" ، "/" لذا تقدير تقريبي لإجمالي 34 الشخصيات)

أعتبر q (رئيسًا) ليكون 101

هل هذه مشكلة تصادم أتعامل معها؟ هل توجد أية مؤشرات حول كيفية معالجة المشكلة؟

هل كانت مفيدة؟

المحلول

ألاحظ أنه مع q= 101 ، لا يوجد سوى 101 قيمة تجزئة ممكنة - 0 ، 1 ، 2 ... 100.هل حاولت زيادة س؟هناك طريقة أخرى تتمثل في البحث ومعرفة ما إذا كانت قيم التجزئة تبدو وكأنها قيم تم اختيارها عشوائيًا ضمن القيم المحتملة لـ 0،1..q-1.

يجب عليك بالطبع أيضًا اختبار برنامجك في الحالات التي توجد فيها سلاسل متكررة للبحث عنها - قد يكون هناك فشل من أعراض أي مشكلة تتسبب أيضًا في حدوث تصادمات ، وسيكون من الأسهل العثور عليها وتصحيحها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top