摘要

当前Online Judge系统(简称OJ)上存有大量习题,导致学生很难根据自己的知识水平和学习需求快速地找到合适的习题,因此需要设计模型向学生推荐习题。然而,由于OJ的独特性以及程序设计能力评价的复杂性,现有推荐模型不能较好地完成OJ习题推荐任务,主要问题包括:OJ习题知识点标签不足与特有的命题风格使模型难以挖掘习题之间的相关性;学生所提交程序的实际正确性与OJ判定结果存在不一致的情况,使得模型对学生知识状态的评估产生偏差;现有模型较难提供可使学生程序设计能力得到显著增长的习题。据此,提出了一种基于深度强化学习与程序分析的OJ习题推荐模型。首先,分析习题的最优解来挖掘习题之间的相关性;然后,比较学生所提交程序与习题最优解的相似性来检验学生所提交程序的实际正确性,使模型能够更准确地估计学生的知识状态;最后,利用深度强化学习技术并使用知识追踪模型作为学生模拟器,以学生模拟器在解答习题推荐模型所提供的习题前后在所有习题上的表现差异作为奖励,使模型学习到怎样的习题才能够最大程度地提升学生程序设计能力,并将这样的习题推荐给学生。在业界知名OJ系统CodeForces和Libre数据集上进行实验,结果表明该模型相比目前常见的推荐模型具有更优的性能。

全文