论文部分内容阅读
ACM/ICPC(ACMIntemationalCollegiateProgrammingContest,国际大学生程序设计竞赛以下简称ACM)是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。网络上有许多的在线评判系统(OnlineJudge以下简称OJ)提供大量的程序设计题给学生练习,学生通过OJ系统提交程序代码解决OJ上的题目,从而提高ACM成绩。网络上有这样类似的大量的程序设计网络资源,这些网络资源中的程序代码中存在大量的算法知识,算法知识只是散落在网络资源中,并没有一个结构呈现这些算法知识之间的联系。一种类似于智能计算机辅助教学系统(IntelligentComputerAssistedInstruction,以下简称ICAI)的个性化的OJ可以针对各个学生的特点提供对应的算法知识以供学生学习,这就需要发现程序设计网络资源中算法知识的联系结构。
本课题组前期对于程序设计代码中的知识点以及知识单元作过相关方面的研究工作,他们研究的对象是程序设计代码中的语言级知识点。同时也做过算法识别以及解决报告中算法知识的联系的研究工作,算法识别的工作并未能够对算法知识进行恰当的表示,而对解题报告中的算法知识的联系的研究只是基于固定的算法知识,并未能实现算法知识的发现。
本课题的工作是发现程序设计网络资源中的算法知识联系结构。程序设计网络资源中的算法知识之间有两种联系:一种是结构相似联系,另一种是相关联系。我们首先通过程序代码的语法树把所有的程序代码转换成向量样本空间,这个过程是对程序代码中的算法进行表示的过程:因为叶分量分析(LobeComponentAnalysis,以下简称LCA)可以解决泥泞空间样本自主发育的问题,所以接着我们使用基于LCA的单层神经网络从程序代码转换过来的向量样本空间中发育出算法知识:接着根据这些发育出的算法的矩阵得到它们的算法特征,并且通过分析每个算法中的程序代码得到算法描述。在这个发育好的神经网络中选择成熟的神经元作为算法识别的模板,利用成熟的神经元对应的算法识别出程序代码中所包含的算法,这样就可以得到算法与题目之间的联系;最后利用算法特征以及算法与题目之间的联系通过层次结构组织这些算法知识并给出了实验原型。
本文对算法知识按照层次结构组织后,可以支持个性化的算法知识的程序教学。
本课题组前期对于程序设计代码中的知识点以及知识单元作过相关方面的研究工作,他们研究的对象是程序设计代码中的语言级知识点。同时也做过算法识别以及解决报告中算法知识的联系的研究工作,算法识别的工作并未能够对算法知识进行恰当的表示,而对解题报告中的算法知识的联系的研究只是基于固定的算法知识,并未能实现算法知识的发现。
本课题的工作是发现程序设计网络资源中的算法知识联系结构。程序设计网络资源中的算法知识之间有两种联系:一种是结构相似联系,另一种是相关联系。我们首先通过程序代码的语法树把所有的程序代码转换成向量样本空间,这个过程是对程序代码中的算法进行表示的过程:因为叶分量分析(LobeComponentAnalysis,以下简称LCA)可以解决泥泞空间样本自主发育的问题,所以接着我们使用基于LCA的单层神经网络从程序代码转换过来的向量样本空间中发育出算法知识:接着根据这些发育出的算法的矩阵得到它们的算法特征,并且通过分析每个算法中的程序代码得到算法描述。在这个发育好的神经网络中选择成熟的神经元作为算法识别的模板,利用成熟的神经元对应的算法识别出程序代码中所包含的算法,这样就可以得到算法与题目之间的联系;最后利用算法特征以及算法与题目之间的联系通过层次结构组织这些算法知识并给出了实验原型。
本文对算法知识按照层次结构组织后,可以支持个性化的算法知识的程序教学。