OpenJudge

义项:在线程序评测系统
OpenJudge

OpenJudge是由北京大学POJ团队开发的开放式在线程序评测平台,属于在线评测系统(Online Judge)的一种。它允许学校、机构或教师以「小组」为单位自行建立题集与比赛,并支持ACM、NOI等多种竞赛规则。平台由北京大学人工智能实验室维护,为NOI、ACM等程序设计竞赛提供技术支持,同时承载《计算概论》《数据结构》等课程的教学练习与作业评测。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

OpenJudge是一个开放式的在线程序评测平台,用户可以在平台上建立自己的在线评测系统,自行出题、组织比赛并管理参赛者[1]。它属于在线评测系统(Online Judge,OJ)这一大类工具,即通过浏览器提交源代码、由服务器端编译运行并与标准结果比对来判定程序对错的在线系统[2]。平台以「小组」为基本单元,北京大学校内的「百练」小组即为其中的教学与考试用例[1]。

平台并非单一题库,而是向多所学校提供可分租使用的评测服务。有资料称,已有五百余所大学和中学在其上建立了教学与竞赛小组[3]。

原理

评测采用黑盒测试的思路:出题人预先准备输入数据与标准输出,系统在收到用户源码后先进行编译,再在受控环境中运行生成的可执行文件或解释执行脚本,把程序输出与标准答案逐项比较,据此给出判定结果[2]。为保证安全,服务器通常需要对提交代码做过滤、把进程放进沙盒隔离,并对代码做哈希以抑制抄袭和重复提交[2]。

OpenJudge题面会分别给出总时间限制与单个测试点的时间、内存限制,评测机按限制检查运行表现[4]。其评测状态沿用OJ通行命名,例如Accepted表示通过,Wrong Answer表示答案错误,Compile Error表示编译失败,Runtime Error表示运行时错误,Time Limit Exceeded与Memory Limit Exceeded分别表示超时与超内存[4]。平台支持G++、GCC、Java、Pascal等多种语言提交[4]。

用一段伪代码概括单次判题流程:


读入源码 -> 编译(失败则返回 CE)

对每个测试点:

在沙盒中运行,限制 CPU 时间 T 与内存 M

若超时 -> TLE;若超内存 -> MLE;若异常退出 -> RE

比较输出与标准输出

全部一致 -> AC,否则 -> WA

发展历程

OpenJudge的建设依托于更早的北京大学程序在线评测系统(POJ)。POJ自2003年上线,为训练ACM/ICPC队伍而开发,支持C/C++、Java、Pascal等语言,并在2007年前后收录了近2300道题目[5]。POJ团队曾发布过一份可自由下载的旧版源码,被下载逾20000人次,但使用者普遍在搭建评测系统时遇到技术门槛,也缺少可用服务器[1]。

作为对上述问题的回应,团队从2009年起开发全新平台,并于2010年11月对外公布OpenJudge[1][6]。公告列出其主要特性:小组可自行建题、办赛且免费,兼容ACM与NOI等多种赛制,采用评测服务器集群应对大规模比赛,提供多语言支持与中文界面[1]。平台上线初期处于测试状态,小组人数上限设为200人[1]。

此后OpenJudge由北京大学人工智能实验室持续维护,并为NOI、ACM等程序设计竞赛提供技术支持[7]。OI Wiki将其记为始于2005年、由POJ团队开发的小组评测平台,与平台公告的时间口径并不一致[8]。

应用

平台最常见的用途是课程教学。北京大学校内的「百练」小组承担编程教学与考试职能,讲义与习题多为《计算概论》等课程设计[1]。中国科学技术大学等院校也在OpenJudge上开设课程小组,学生以学号注册、按班级归组,从小组题库中取题练习并提交[4]。

在竞赛与训练方面,OpenJudge设有面向信息学奥赛的NOI小组,提供与NOI大纲章节对应的题集[3]。平台对ACM、NOI等多种比赛规则的支持,使其也能用于校内选拔赛和阶段性测验[1]。

对教师而言,小组机制把出题、发布作业、查看完成情况和统计成绩集中在一处,可减少人工批改代码的工作量[4]。

局限

评测只能检验程序在给定测试数据上的表现,无法证明算法在所有输入下正确。测试点覆盖不足时,存在逻辑缺陷的程序也可能通过,因此通过样例或通过全部测试点并不等同于程序普适正确[9]。

逐字节比对的做法对输出格式要求很严,多余的空格、空行或调试信息都会被判错,学习者的注意力容易从算法本身转移到输出细节上[10]。平台对代码可访问的资源也有限制,程序一般只能使用标准输入输出与内存,读写文件等操作会被判为运行时错误[11]。

评测结果依赖后端集群的稳定性。POJ一方曾出现网页无法打开或评测机异常的情况[12];OpenJudge测试期内亦以200人的小组上限限制规模[1]。此外,平台本身不提供对代码风格、可读性或复杂度的自动评价,仅凭判题结果难以反映程序设计质量。

参见

参考资料

  1. POJ团队发布OpenJudge平台,快来搭建属于你自己的OnlineJudge系统 [引用日期2026-10-29]
  2. 在线评测系统 [引用日期2026-10-29]
  3. 盘一盘oier常用网络资源,快来看看你用过几个? [引用日期2026-10-29]
  4. IDE和POJ简介 [引用日期2026-10-29]
  5. POJ [引用日期2026-10-29]
  6. Re:POJ团队发布OpenJudge平台,快来搭建属于你自己的OnlineJudge系统 [引用日期2026-10-29]
  7. 人工智能实验室 [引用日期2026-10-29]
  8. 学习资源 [引用日期2026-10-29]
  9. 【算法学习】关于在线评测系统(OJ) [引用日期2026-10-29]
  10. 清华大学出版社--图书详情 - 作者:李文新、郭炜、余华山 [引用日期2026-10-29]
  11. 关于此在线评测系统 [引用日期2026-10-29]
  12. 北京大学程序在线评测系统 [引用日期2026-10-29]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:29:11Z

历史版本

本条目引用的词条
在线评测系统 北京大学 ACM国际大学生程序设计竞赛 全国青少年信息学奥林匹克竞赛 沙盒