ACM―ICPC竞赛趣味学习系统设计

时间:2022-04-16 01:56:20

ACM―ICPC竞赛趣味学习系统设计

[摘 要]目前,很多教材或者网站对动态规划思想的介绍都很枯燥乏味且理解起来颇为费劲,人们越来越需要一种高效有趣的方法来学习该算法。本文致力于提高动态规划教学趣味性的研究,通过设计简单明了的例子,以游戏的形式介绍动态规划思想。在演示过程中,使用了状态压缩,位运算,滚动数组等算法优化计算过程。通过加入ACM元素,最终实现了一个ACM-ICPC竞赛趣味学习系统。

[关键词]ACM-ICPC;动态规划;状态压缩;趣味学习

中图分类号:TG333.2 文献标识码:A 文章编号:1009-914X(2016)19-0215-01

0 前言

ACM国际大学生程序设计竞赛(ACM-ICPC:ACM International Collegiate Programming Contest)[1]是由国际计算机界权威组织、美国计算机协会主办的世界公认的规模最大、水平最高的国际大学生程序设计竞赛,旨在使大学生运用计算机来锻炼自己分析问题和解决问题的能力,可以充分展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力,经过近30多年的发展,已经成为最具影响力的大学生计算机竞赛。动态规划作为其中一个很重要的考点,是参赛学生必须要掌握的知识。本文致力于提高动态规划算法教学趣味性的研究,基于状态压缩的方法,利用简单明了的例子,介绍了动态规划思想,达到了比较理想的效果。在解题过程中中,运用了位运算,滚动数组等不同方法,优化了计算过程。

1 动态规划算法简介

动态规划(dynamic programming)[2]是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题[3]时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法――动态规划。

动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。

动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。

求解基本步骤:

(1) 分析最优解的性质,并刻画其结构特征。

(2)递归的定义最优解。

(3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出最优值

(4)根据计算最优值时得到的信息,构造问题的最优解

使用动态规划求解问题,最重要的就是确定动态规划三要素:

(1)问题的阶段

(2)每个阶段的状态

(3)从前一个阶段转化到后一个阶段之间的递推关系。

递推关系必须是从次小的问题开始到较大的问题之间的转化,从这个角度来说,动态规划往往可以用递归程序来实现,因为递推可以充分利用前面保存的子问题的解来减少重复计算,所以对于大规模问题来说,有递归不可比拟的优势,这也是动态规划算法的核心之处。

确定了动态规划的这三要素,整个求解过程就可以用一个最优决策表来描述,最优决策表是一个二维表,其中行表示决策的阶段,列表示问题状态,表格需要填写的数据一般对应此问题的在某个阶段某个状态下的最优值(如最短路径,最长公共子序列,最大价值等),填表的过程就是根据递推关系,从1行1列开始,以行或者列优先的顺序,依次填写表格,最后根据整个表格的数据通过简单的取舍或者运算求得问题的最优解。

f(n,m)=max{f(n-1,m), f(n-1,m-w[n])+P(n,m)}

2 系统设计

系统首先对ACM-ICPC进行介绍,让用户对比赛有一个认识。动态规划学习中,首先通过设计一个简单的例子,以小游戏的形式,让用户在操作过程体会动态规划的思想,接着引出概念,介绍算法。通过设计一道POJ上的题目――炮兵布阵,演示动态规划算法的应用,加深用户的理解。最后提供HDU以及PKU的题库。

3 结语

本文设计并实现了一个完整的动态规划算法学习系统,并且应用文字与视频相结合的方式详细介绍ACM竞赛的背景与研究意义,通过设计两个例子让用户在游戏的氛围中学习算法的思想,达到了寓教于乐的效果。在使用户能够快速高效理解算法思想的同时,也增加了测评环节,帮助用户巩固所学内容,从而更加牢固的 掌握所学算法。

参考文献:

[1] ACMICPC官网. http://icpc.baylor.edu/.

[2] Richard E. Bellman. Dynamic Programming[M]. Princeton University Press; Revised editi-on, 2010.7.1.

[3] Talha Amin and Igor Chikalov and Mikhail Moshkov and Beata Zielosko. Dyn-amic progr-amming approach to optimization of approximate decision rules[J]. In-formation Sciences, 2013,221.

作者简介:

刘志丹 (1992―) ,女,河北省邢台市人,学历硕士,专业或职业:计算机应用技术。

上一篇:浅析多媒体课件在中职学校的应用 下一篇:基本公共服务均等化的理论探讨