C语言代码抄袭检测:基于后缀语法树的相似性计算方法
需积分: 10 166 浏览量
更新于2024-08-10
收藏 2.29MB PDF 举报
"基于后缀语法树的代码抄袭检测方法通过构建语法树字符串序列来比较程序代码的相似性,以此判断是否存在抄袭行为。这种方法通过固定token长度、多项式哈希函数和后缀语法树来优化匹配过程,提高了检测效率。在C语言环境中,由于函数是代码的基本单元,因此以函数为单位构建语法树,降低匹配复杂度,体现程序结构信息。在计算相似度时,使用最大匹配集合(tiles)和覆盖率函数,通过计算相似度值来量化代码的相似程度,判断抄袭可能性。相似度越高,抄袭嫌疑越大;相似度越低,抄袭可能性越小。"
本文探讨的是在信息技术背景下,代码抄袭检测的重要性和紧迫性。现有的研究表明,代码抄袭现象在学生中非常普遍,对教学质量和学术诚信造成威胁。为此,文章提出了基于后缀语法树的C语言代码抄袭检测方法。首先,通过ANTLR工具生成C语言的文法文件,然后利用该文法构建每个函数的后缀语法树,形成字符串序列。在处理过程中,为了减少计算量,采用固定长度的token和跳跃字符的方式来计算子串的哈希值,这使得算法在时间和空间效率上有所提升。
接下来,算法会寻找所有不小于最小匹配长度(MML)的最长匹配子串,形成tiles集合。通过对这个集合中所有子串的长度求和,应用覆盖率函数计算两程序的相似度。这个函数返回的值在0到1之间,表示代码的相似程度。高相似度值指示可能存在抄袭,而低相似度则表明代码差异较大,抄袭的可能性较低。
此外,论文还包含了原创性声明和论文使用授权的说明,表明作者对论文内容的原创性承诺以及同意学校对论文的使用和分发权利。整个研究旨在为抑制学术不端行为提供有效工具,保护教学环境的公正性。
2021-09-07 上传
186 浏览量
2022-06-09 上传
点击了解资源详情
点击了解资源详情
2019-01-10 上传
2016-02-29 上传
2011-05-14 上传
2021-03-15 上传
淡墨1913
- 粉丝: 32
- 资源: 3804
最新资源
- Angular程序高效加载与展示海量Excel数据技巧
- Argos客户端开发流程及Vue配置指南
- 基于源码的PHP Webshell审查工具介绍
- Mina任务部署Rpush教程与实践指南
- 密歇根大学主题新标签页壁纸与多功能扩展
- Golang编程入门:基础代码学习教程
- Aplysia吸引子分析MATLAB代码套件解读
- 程序性竞争问题解决实践指南
- lyra: Rust语言实现的特征提取POC功能
- Chrome扩展:NBA全明星新标签壁纸
- 探索通用Lisp用户空间文件系统clufs_0.7
- dheap: Haxe实现的高效D-ary堆算法
- 利用BladeRF实现简易VNA频率响应分析工具
- 深度解析Amazon SQS在C#中的应用实践
- 正义联盟计划管理系统:udemy-heroes-demo-09
- JavaScript语法jsonpointer替代实现介绍