计算机算法设计和分析课程总结
班级:09 计算机 1 班 姓名:XXX 学号:XXXXXXXX
大三的上半学期,我学习了计算机算法分析和设计这门课程,通
过 10 周的学习让我了解到了计算机编程所需要的算法分析和设计内
容。知道了算法在计算机编程中的应用之广泛,也深深领略到了算法
在计算机编程中的魅力。这门课程使我对计算机语言极其算法更深层
次的研究和使用。对于计算机科学来说,算法的概念是至关重要的。
算法指的是解决问题的一种方法或者一个过程。它是由若干条指
令组成的又穷序列,且满足 4 个性质,即输入、输出、确定性、有限
性。他与程序不同,程序是算法用某种语言的具体实现。我们采用的
是 C++语言来描述算法,对这么课程进行的深入的研究。我们学习的
学习这门课程的内容有,算法的概念、递归与分治策略、动态规划、
贪心算法。
递归与分治策略基本思想是:对这 k 个子问题分别求解。如果子
问题的规模仍然不够小,则再划分为 k 个子问题,如此递归的进行下
去,直到问题规模足够小,很容易求出其解为止。对这 k 个子问题分
别求解。如果子问题的规模仍然不够小则再划分为 k 个子问题,如此
递归的进行下去,直到问题 将求出的小规模的问题的解合并为一个
更大规模的问题的解,自底向上逐步求出原来问题的解。孙子兵法有:
凡治众如治寡,分数是也。 凡治众如治寡,分数是也。就是这个道
理。
之后我们又学习了动态规划,动态规划算法的基本思想是:将待
求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从
这些子问题的解得到原问题的解; 对于重复出现的子问题,只在第
一次遇到的时候对它进行求解,并把答案保存起来,让以后再次遇到
时直接引用答案,不必重新求解 。当我们已经确定待解决的问题需
要用动态规划算法求解时,通常可以按照以下步骤设计动态规划算
法:
1 、分析问题的最优解,找出最优解的性质,并刻画其结构特征;
2 、递归地定义最优值;
3 、采用自底向上的方式计算问题的最优值;
4 、根据计算最优值时得到的信息,构造最优解。
动态规划算法没有一个固定的解题模式,技巧性很强。可以说,
动态规划算法在实际生活中的每一次应用都是一种创造。
我们还学习了贪心算法,贪心法的基本思路是:从问题的某一个
初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当
达到某算法中的某一步不能再继续前进时,算法停止。但是该算法不
能保证求得的最后解是最佳的,也不能用来求最大或最小解问题,只
能求满足某些约束条件的可行解的范围。通俗的说,该算法在执行过
程中对问题求解时,总是做出在当前看来是最好的选择。最经典的利
用贪心算法解决的问题就是马踏棋盘,在 8×8 方格的棋盘上,从任意
指定方格出发,为马寻找一条走遍棋盘每一格并且只经过一次的一条
最短路径。这个如果人手算的计算量可想而知,但是利用贪心算法,
很快就能够让计算机帮我们找到最佳的解法。
我们通过对算法分析这门课程的学习,学到的不仅仅是书上的那
几个编程实例,和已经解决的各种计算量复杂的问题,更重要的是我
们要学习一种思想,我们如果能够掌握算法的核心思想,不管在计算
机行业还是其他行业,都将让我们办事更有效率。当然,这些算法我
们虽然已经学习了,但是要想熟练掌握还需要更多的联系和摸索,表
面上看起来枯燥无味的编程学习,其实涉及到算法部分时候还是非常
有趣,并且能够让我们感觉到挑战的。我非常喜欢这门课程,希望在
以后的日子里能多接触更多的算法,让自己的编程水平得到更大的提
升。