算法分析:前言

  这本书的两大目标是:提高算法对程序效率影响的意识和提高分析在程序中被使用的算法的能力。看看当下许多商业产品,很明显地是许多软件设计师没有注意到空间利用率和时间效率。如果一个程序占用过多的空间,使用者可能会耗费更多的内存。如果一个程序运行时间过长,使用者可能会购买一个运行速度更快的电脑。

   然而,因为有电子沿着导线传输的速度局限、光速沿着光导纤维电缆传输的速度局限及运算的电路交换的速度局限,在提高计算机的速度仍有局限。现有在计算方面,除了计算机速度的约束,还有其他直接与问题复杂度有关的局限需要被解决。这里还有一些问题:在我们一生中,一些熟知的最快的算法不会完全执行。因为有重要的问题存在,需要算法提供大概粗略的答案。

  在80年代早期,计算机体系结构严重地限制了计算机的速度和空间。当时的很多计算机频繁地把程序和数据的内存限制在64K。现今台式机通常装有超过64K的1000倍内存。尽管现在的软件已经比80年代的软件更加复杂,计算机比过去具备更多功能,这些改变并不意味着我们可以忽视程序设计中的效率、许多项目规范会包括最后软件的时空局限,这一点可能要程序员去寻找一个可以节省存储空间和提高速度的地方。个人数字助理小巧的体积也会限制软件的空间和速度。

   教学法

    不闻不若闻之,

    闻之不若见之,

    见之不若知之,

    知之不若行之。

                               ——孔子

    本书呈现的材料可以被独立阅读或作为引入积极合作的学习方法的课程的一部分。为了实现这个目标,以便于读者理解和鼓励读者在小组会议之前阅读 ,每个章节的内容都设置得易懂完整。所有的章节包括学习建议。为了深入理解其中的算法,许多还包括读者可以自己执行的算法的附加的资料组。应用于这些额外的数据的算法结果在附录C。每一节都有一些简单的算法追踪练习和更加复杂的根据基本定理的练习。读者应该可以在每个章节做练习。联系课堂,这些联系可以被作为家庭作业或当堂任务给学生独立地或在小组中完成。提供如何利用主动合作学习和给予习题解答去教这本教材的指导手册可以找到。第2,3,5,6和9章节包括了编程联系。这些编程程序鼓励读者去实现和测试章节中的算法,然后比较实际的算法结果与书中的理论分析结果。

   主动学习是人们可以在学习过程中学得更好和将信息记得更久的前提。为了达到这个目的,学生必须在课堂中听教授教课时拥有更多实践的机会。在算法分析课上,最好的做法是教授简短地做一个介绍演讲后让学生去思考问题而不是老师在课室一直回答书中应用引起的问题。

   合作工作给学生提供了回答它们小组里其他成员有的问题和允许教授解决那些难住一整个小组的大问题。用这种方式,学生有更多机会去问问题和及时地解决他们关注的问题。教授观察小组作业以确保全组的错误理解不会被加剧。另一个教授去发现和更正错误理解的方法是去让小组定期地提交练习答案以供评论或给分。

  算法

   因为算法分析是独立于使用的计算机或程序语言,算法以伪代码的方式给出。这些算法对于了解条件语句、循环和递归的人来说是容易理解的。

   教程使用

     这个教材可以涵盖在一个学期的课程的方法是使用下列大概的(教学)安排:

               章节1   2周

               章节2    1周

               章节3   2周

               章节4   1周

               章节5   1周

               章节6   2周

               章节7   2周

               章节8   1周

               章节9  2周

第2、4,5章节可能不需要一整个星期,也提供了时间介绍课程和解释主动合作性的学习方法和时间检查。这取决于学生的情况,第1张也可以更快地被讨论。

            

     

猜你喜欢

转载自blog.csdn.net/rachel9798/article/details/82707765