算法第一章作业

       1.在算法设计与分析课程中,我将采用C++进行编程,相关编程规范的链接为https://www.jianshu.com/p/df03f2def39d。

       2.吴军博士的《数学之美》一书中有提到:“数学是解决信息检索和自然语言处理的最好工具。它能非常清晰地描述这些领域的实际问题并且给出漂亮的解决办法。”这句话侧面映射出算法在软件开发中的作用,因为算法是将数学模型转化为一段程序代码后的产物。例如书中所提及的:使用图的遍历算法,可以从任何一个网页出发自动地访问到任何一个网页并把它们存起来,完成这个功能的程序叫做网络爬虫,在一些文献中也称为"机器人"。至于算法的重要性,吴军博士在书中说:“我认为,在计算机中一个好的算法,应该向阿卡 47 冲锋枪那样简单、有效、可靠性好而且容易读懂(或者说易操作),而不应该是故弄玄虚。”就拿密码学来举例,密码学在现代所涉及的领域或者说行业都是比较广的,缺少了这一门学科,人们的生活就少了一份安全保障,而当今的密码学就是以数学,准确来说是由数学衍生的算法为基础的;再者谈到全球导航,也是与我们的生活息息相关的,而它的关键技术之一:根据用户输入的起终点,在地图上规划最短路线或者最快路线所依赖的就是计算机科学图论中的动态规划(Dynamic Programming)的算法。

        根据网上的相关文章,再结合博士的《数学之美》,总的来说算法在软件开发中的作用就是:算法是一个程序的核心,是程序的灵魂。著名计算机科学家、图灵奖获得者沃思曾提出过一个公式:数据结构+算法=程序。可见,算法在程序中占有非常重要的地位。从定义的层面来说,经典书籍《算法导论》中,作者认为算法是一系列的计算步骤,用来将输入数据转换成输出结果;谭浩强老师的《C程序设计》中,算法被定义为是为解决一个问题而采取的方法和步骤;《算法设计与分析—C++语言描述》一书中,作者认为算法是求解一类问题的任意一种特殊方法,一个算法是对特定问题求解步骤的一种描述。 而以上对算法的定义都是偏重理论,在实际的软件开发项目中,算法是用程序代码实现软件需求的方法,也是软件开发工程师逻辑思维的体现。

  算法的重要性自不用说,但是,在实际的软件开发中,遇到一个问题,也不是说解决它的算法越复杂,我们的水平就越高超。正好相反,程序中的算法要力求简单、清晰、执行效率高。 爱因斯坦曾说过:“科学家应该使用最简单的手段达到他们的结论,并排除一切不能被认识到的事物”。也就是说,简单就是美。我们设计算法要遵循“奥卡姆剃刀原理”(也即“简单有效原理”),该原理认为,切勿浪费较多东西去做用较少的东西同样可以做好的事情。在软件开发过程中,该原理同样适用。它要求我们要力求让自己的代码尽量简单直观,用较简单的算法实现用户要求的功能。

  关于学期末的软件,目前并没有一个完美的设想,不过基于当前的消费市场以及我个人生活中所遇到的问题,初步设想应该会是有关搜索一类的。

猜你喜欢

转载自www.cnblogs.com/Winlyee/p/11431866.html