C语言代码抄袭检测:基于后缀语法树的相似性计算方法

需积分: 10 9 下载量 166 浏览量 更新于2024-08-10 收藏 2.29MB PDF 举报
"基于后缀语法树的代码抄袭检测方法通过构建语法树字符串序列来比较程序代码的相似性,以此判断是否存在抄袭行为。这种方法通过固定token长度、多项式哈希函数和后缀语法树来优化匹配过程,提高了检测效率。在C语言环境中,由于函数是代码的基本单元,因此以函数为单位构建语法树,降低匹配复杂度,体现程序结构信息。在计算相似度时,使用最大匹配集合(tiles)和覆盖率函数,通过计算相似度值来量化代码的相似程度,判断抄袭可能性。相似度越高,抄袭嫌疑越大;相似度越低,抄袭可能性越小。" 本文探讨的是在信息技术背景下,代码抄袭检测的重要性和紧迫性。现有的研究表明,代码抄袭现象在学生中非常普遍,对教学质量和学术诚信造成威胁。为此,文章提出了基于后缀语法树的C语言代码抄袭检测方法。首先,通过ANTLR工具生成C语言的文法文件,然后利用该文法构建每个函数的后缀语法树,形成字符串序列。在处理过程中,为了减少计算量,采用固定长度的token和跳跃字符的方式来计算子串的哈希值,这使得算法在时间和空间效率上有所提升。 接下来,算法会寻找所有不小于最小匹配长度(MML)的最长匹配子串,形成tiles集合。通过对这个集合中所有子串的长度求和,应用覆盖率函数计算两程序的相似度。这个函数返回的值在0到1之间,表示代码的相似程度。高相似度值指示可能存在抄袭,而低相似度则表明代码差异较大,抄袭的可能性较低。 此外,论文还包含了原创性声明和论文使用授权的说明,表明作者对论文内容的原创性承诺以及同意学校对论文的使用和分发权利。整个研究旨在为抑制学术不端行为提供有效工具,保护教学环境的公正性。