注意:可能有很多重复项,但似乎没有什么能解决我的问题。

我正在基于 MOSS 进行a窃检测。

成功实现一个过滤器后,该过滤器会去除所有必要的细节(注释,标点符号等),然后使用滚动哈希实现(Rabin Karp)来哈希内容

但是在源代码的两个文本文件中匹配的哈希具有不同的基础文本(没有抄袭,但哈希相同)

我实现的算法(Ruby)-> (部分摘录) 通用标签

我的实施是否存在问题?还是我指定的参数可能出错?

我取基数= 34 (我不确定这是否是正确的值,我假设剥离的文本将仅包含字母+一些特殊字符,例如'+','-','*','/',因此粗略估算了总计34字符)

我将q(素数)设为101

这是我正在处理的冲突问题吗?关于如何解决该问题的任何指示?

有帮助吗?

解决方案

我注意到q= 101时,只有101个可能的哈希值-0、1、2 ... 100。您是否尝试过增加q?另一种方法是查看并看一下哈希值是否看起来像它们是可能值0,1..q-1中的随机选择值。

当然,您还应该在有重复字符串查找的情况下对程序进行测试-失败的话,任何可能引起冲突的问题都可能会再次出现症状,并且查找和调试起来会更容易。/ p>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top