一种数据结构作业程序相似性度量方法与流程

文档序号:12119606阅读:291来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种数据结构作业程序相似性度量方法。



背景技术:

随着高校计算机数据结构课程的大量开设,教师阅读和批改学生作业程序的数量逐年增多。一方面,由于学生的作业程序可能存在抄袭现象,而教师却难以逐份作业程序对比;另一方面,由于现有大多数编程作业系统均采用动态测试方式,有些学生的作业程序部分或没有通过系统预设的测试,这时教师需对此类作业逐份进行批阅并给出建议,如果作业多,教师无暇逐份去阅读。

在相似性度量技术中,Ottesstein将Halstead属性计数技术用于程序代码的抄袭检测。Alex Aiken开发了MOSS系统检测程序设计类课程作业中的抄袭问题。Dick Grune使用了检测DNA序列相似性的一种字符串排列程序来开发SIM系统,可检测项目程序代码或者作业程序代码抄袭。熊浩、晏海华等人提出了一种基于BP神经网络的代码相似性方法。石野、黄龙和等人提出了基于语法树的程序相似度判定方法。

现有技术的缺点是程序相似性度量方法单一、陈旧,并且没有进行多策略评价,使得评价结果误差率较高,可参考性较低。基于数据结构作业程序的相似性度量研究则少之又少。作业程序通常程序规模小,异构度低,采用属性统计、序列统计等方法不能很好地体现作业程序的流程和思路,现有技术的相似性度量更多地是停留在字符的相似性度量上。亟待提供一种数据结构作业程序相似性度量方法,通过多维度量使结构更加精确。



技术实现要素:

本发明提出一种数据结构作业程序相似性度量方法,通过从数据结构作业程序中获取词法分析矩阵,并分别根据不同的词法分析矩阵计算三个相似度,再将三个相似度中的一个或者至少一个或者三个相似度与神经网络结合进行长期的学习,使度量结果更准确。

本发明中一种数据结构作业程序相似性度量方法,包括:

对n份数据结构作业进行第一词法分析,获取每份数据结构作业中的声明块和控制块,其中所述声明块记作K1,控制块记作K2;

对每份所述数据结构作业的声明块和控制块建立第一词法分析集合V={K1,K2},其中,n个集合分别记为V1,V2,V3,...,Vn;

根据预定的相同属性的聚类规则,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合,记作V+;

提取所述聚类集合V+中所有一元子集,包括:T1,T2,…,Tm;

根据合成对比规则μ对T1,T2,…,Tm进行进行合成处理,得到第一相似度,其中合并对比规则μ定义为:

对n份数据结构作业进行第二词法分析,获取每份数据结构作业中的集合结构、线性结构、树状结构和图状结构,其中集合结构、线性结构、树状结构和图状结构分别记作S1,S2,S3,S4;

对每份所述数据结构作业的集合结构、线性结构、树状结构和图状结构建立第二词法分析集合SN={S1,S2,S3,S4},其中,n个集合分别记为SN1,SN2,SN3,...,SNn;

对所述SN1,SN2,SN3,...,SNn进行标准化计算,对其计算结果依次进行协方差矩阵计算、特征根计算和主成分矩阵计算,得到n个主成分;

计算所述n个主成分的累积贡献率,并其等同为第二相似度;

对n份数据结构作业进行第三词法分析,获取n个语法树分别记为T1,T2,T3,...,Tn;

分别计算每棵语法树出从根到叶结点的一条最长路径和一条最长路径,其中,最长路径记作L(Ti),最长路径L(Ti);

计算每组L(Ti)与P(Ti)的差异值,其中,计算规则为:

dif(L(Ti),P(Ti))=|Length[L(Ti)]-Length[P(Ti)]|;

根据所述差异值,计算n棵语法树的第三相似度:计算规则为:

根据所述第一相似度、第二相似度和/或第三相似度与神经网络结合建立精确化模型;

根据所述精确化模型计算结果评价所述数据结构作业程序相似性。

可选的,

步骤所述根据预定的相同属性的聚类规则,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合包括:

根据预定的相同属性的k-means聚类算法,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合。

可选的,

步骤所述对所述SN1,SN2,SN3,...,SNn进行标准化计算,对其计算结果依次进行协方差矩阵计算、特征根计算和主成分矩阵计算,得到n个主成分包括:

标准化计算规则为

所述协方差矩阵计算规则为:R=Z'Z/(n-1);

所述特征根计算规则为:(R-λE)e=0→(λ1,e1),(λ2,e2),...,(λn,en);

所述主成分矩阵计算规则为:Yi=eiZ,i∈[1,n]。

可选的,

步骤所述计算所述n个主成分的累积贡献率包括:

所述n个主成分的累计贡献率的计算规则为:

从以上技术方案可以看出,本发明实施例具体有以下优点:

本发明方案包括对n份数据结构作业进行第一词法分析,获取每份数据结构作业中的声明块和控制块,其中所述声明块记作K1,控制块记作K2;

对每份所述数据结构作业的声明块和控制块建立第一词法分析集合V={K1,K2},其中,n个集合分别记为V1,V2,V3,...,Vn;

根据预定的相同属性的聚类规则,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合,记作V+;

提取所述聚类集合V+中所有一元子集,包括:T1,T2,…,Tm;

根据合成对比规则μ对T1,T2,…,Tm进行进行合成处理,得到第一相似度,其中合并对比规则μ定义为:

对n份数据结构作业进行第二词法分析,获取每份数据结构作业中的集合结构、线性结构、树状结构和图状结构,其中集合结构、线性结构、树状结构和图状结构分别记作S1,S2,S3,S4;

对每份所述数据结构作业的集合结构、线性结构、树状结构和图状结构建立第二词法分析集合SN={S1,S2,S3,S4},其中,n个集合分别记为SN1,SN2,SN3,...,SNn;

对所述SN1,SN2,SN3,...,SNn进行标准化计算,对其计算结果依次进行协方差矩阵计算、特征根计算和主成分矩阵计算,得到n个主成分;

计算所述n个主成分的累积贡献率,并其等同为第二相似度;

对n份数据结构作业进行第三词法分析,获取n个语法树分别记为T1,T2,T3,...,Tn;

分别计算每棵语法树出从根到叶结点的一条最长路径和一条最长路径,其中,最长路径记作L(Ti),最长路径L(Ti);

计算每组L(Ti)与P(Ti)的差异值,其中,计算规则为:

dif(L(Ti),P(Ti))=|Length[L(Ti)]-Length[P(Ti)]|;

根据所述差异值,计算n棵语法树的第三相似度:计算规则为:

根据所述第一相似度、第二相似度和/或第三相似度与神经网络结合建立精确化模型;

根据所述精确化模型计算结果评价所述数据结构作业程序相似性。

从而,通过从数据结构作业程序中获取词法分析矩阵,并分别根据不同的词法分析矩阵计算三个相似度,再将三个相似度中的一个或者至少一个或者三个相似度与神经网络结合进行长期的学习,使度量结果更准确。从而能对数据结构作业程序从多个角度进行相似性度量,避免了现有度量方案单一、陈旧的问题,且本方法还可以和程序动态测试结合起来,产生更多参考答案完备集,为识别答案和程序理解提供一些新的思路。

具体实施方式

本发明提出一种数据结构作业程序相似性度量方法,通过从数据结构作业程序中获取词法分析矩阵,并分别根据不同的词法分析矩阵计算三个相似度,再将三个相似度中的一个或者至少一个或者三个相似度与神经网络结合进行长期的学习,使度量结果更准确。

本发明中一种数据结构作业程序相似性度量方法实施例,包括:

对n份数据结构作业进行第一词法分析,获取每份数据结构作业中的声明块和控制块,其中所述声明块记作K1,控制块记作K2;

对每份所述数据结构作业的声明块和控制块建立第一词法分析集合V={K1,K2},其中,n个集合分别记为V1,V2,V3,...,Vn;

根据预定的相同属性的聚类规则,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合,记作V+;

例如:

其中,{V1,V3,V7}为特征类别α;

{V4,V2,V6}为特征类别β;

{V8,V5}为特征类别γ;

提取所述聚类集合V+中所有一元子集,包括:T1,T2,…,Tm;

根据合成对比规则μ对T1,T2,…,Tm进行进行合成处理,得到第一相似度,其中合并对比规则μ定义为:

对n份数据结构作业进行第二词法分析,获取每份数据结构作业中的集合结构、线性结构、树状结构和图状结构,其中集合结构、线性结构、树状结构和图状结构分别记作S1,S2,S3,S4;

对每份所述数据结构作业的集合结构、线性结构、树状结构和图状结构建立第二词法分析集合SN={S1,S2,S3,S4},其中,n个集合分别记为SN1,SN2,SN3,...,SNn;

对所述SN1,SN2,SN3,...,SNn进行标准化计算,对其计算结果依次进行协方差矩阵计算、特征根计算和主成分矩阵计算,得到n个主成分;

计算所述n个主成分的累积贡献率,并其等同为第二相似度;

对n份数据结构作业进行第三词法分析,获取n个语法树分别记为T1,T2,T3,...,Tn;

分别计算每棵语法树出从根到叶结点的一条最长路径和一条最长路径,其中,最长路径记作L(Ti),最长路径L(Ti);

计算每组L(Ti)与P(Ti)的差异值,其中,计算规则为:

dif(L(Ti),P(Ti))=|Length[L(Ti)]-Length[P(Ti)]|;

根据所述差异值,计算n棵语法树的第三相似度:计算规则为:

根据所述第一相似度、第二相似度和/或第三相似度与神经网络结合建立精确化模型;

根据所述精确化模型计算结果评价所述数据结构作业程序相似性。

可选的,

步骤所述根据预定的相同属性的聚类规则,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合包括:

根据预定的相同属性的k-means聚类算法,对V1,V2,V3,...,Vn进行重新排序合并处理,得到聚类集合。

需要说明的是,标准化计算规则为

所述协方差矩阵计算规则为:R=Z'Z/(n-1);

所述特征根计算规则为:(R-λE)e=0→(λ1,e1),(λ2,e2),...,(λn,en);

所述主成分矩阵计算规则为:Yi=eiZ,i∈[1,n]。

所述n个主成分的累计贡献率的计算规则为:

通过从数据结构作业程序中获取词法分析矩阵,并分别根据不同的词法分析矩阵计算三个相似度,再将三个相似度中的一个或者至少一个或者三个相似度与神经网络结合进行长期的学习,使度量结果更准确。

综合上述方案,得到三个相似度,并引入权值对各方案进行度量,即为多策略评价方法。如果全是作业程序作相似性度量,计算结果可作为是否抄袭的参考值。如果是作业程序与答案程序作相似性度量,计算结果则可作为是否接近答案的参考值,此时,如果相似度较高,且通过了作业代码动态测试,则可加入答案程序集,以提高答案程序的完备性。

在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1