`
xiebh
  • 浏览: 604289 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

算法导论笔记------------------ 算法在计算机中的作用

阅读更多
今天看了《算法导论》第一章,现把主要内容做以记录。
   
  1. 首先,算法的定义,
    引用
    简单说, 所谓算法(algorithm)就是定义良好的 计算过程,它取一个或一组作为输入,并产生出一个或者一组作为输出。所以,算法就是一系列的计算步骤,用来将输入数据转换成输出结果。
    自己的理解,算法就是IPO模型,有输入、处理、输出。
  2.    
  3.    一个算法对所有的输入,都能输出正确的结果并停止,则称其为正确
  4. 算法可以解决的问题:
  5.   
    • DNA问题;
    •    Internet环境下海量信息情况下,如何快速发现找到自己的信息 ,比如Google的PageRank算法,这使我联想到,电子商务中在海量商品中“个性化推荐”推荐商品;
    •    电子商务中制约其发展的瓶颈之一:安全问题,公钥加密、数字证书、数字签名等问题,他们的基础就是数值算法和数论理论。这让我联想到《应用密码学》。
    •    在制造业中的如何分配稀有资源,使得其作用发挥最大化。此类问题都可以归为线性规划问题。即在满足某些条件下(线性条件下),如何使得目标函数取得最大值或者最小值,看来运筹学是个好东西,自己一定要把理论和实际结合起来,加深理论的理解,并且可以计算机来实现。好赖给本科生上来两学期运筹学的课,基本的东西还是了解的。
    • 给定一幅道路交通图,上面标注了任意相邻交叉路口之间的距离,问题是如何找出任意两个交叉路口之间的最短距离,想必大家都知道,此问题可以运用图论中的最短路径的方法来求。Dijkstra或者Washall-floyd算法。

    • 还有一些,不一一列举。
  6. 许多算法都有两个共同的特征:
  7.    1)有狠毒候选的解决方案,其中大部分都不是我们所需要的。找到真正需要的解决方案往往不是一件容易的事。
       2)有着实际的应用。比如最短路径问题,可以应用到物流公司等等其他场合。

对于程序人员来说有必要研究算法?
作者的观点:尽管 对于某些应用来说,在应用层上没有什么明显的算法方面的要求,比如web开发,但大多数问题对算法还是有一定程度要求的。例如旅游网站提供一种服务,它用于确定如何从一个地方旅行至另外一个地方,所以它可能依赖于计算机硬件、GUI、广域网等,除此之外,它还需要为某些操作设计算法,如寻找路由(最短路径)、显示地图、插入地址等。

此外,即使某些应用对算法没有直接的要求 ,其实也间接的依赖于一些算法。
总之,作者的观点:
引用
是否拥有扎实的算法知识和技术基础,是区分真正熟练的程序员与新手的一项重要特征。利用当代的计算技术,无需了解很多算法方面的东西,也可以完成一些任务。但是,有了良好算法基础和背景的话,可以做的事就要多得多了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics