zoukankan      html  css  js  c++  java
  • 算法书籍

    推荐一本很好的算法入门书籍:《算法设计与分析基础》(第 2 版),(美) Anany Levitin 著, 潘彦译。

      除了 《 Thinking in Java 》,这是我另外一本读过了三分之二内容还希望不断翻阅的书籍。这本书写得很不错,可以感受到作者是尽力去贴近读者,讲解清晰易懂,涉及比较全面,而且有不少在其它算法书籍中从不曾讲到的东西(比如算法问题求解基础,大量引人思考的谜题)。

      总体来说,可读性很强,趣味性强,实用性尚可,在理论性和实用化之间进行了很好的平衡和折衷,有很好的启发作用。如果你希望有一本容易理解的而又具备一定深度的算法入门书籍,那么,本书可算是上佳的首选。

      最权威的算法书籍自然是《算法导论》了。通用算法类书籍,我觉得有这两本足矣!貌似还有一本叫做《程序员实用算法》的书籍,只是在书店随便翻了翻,看书名可推知,这本书用作随身算法手册应该很不错。

    PS :关于算法的思考

      算法究竟是什么?顾名思义,计算之方法。算法就是使用计算的方法来实现问题求解的思路和途径。

      硬件提供计算所需的物理资源;而算法,则提供计算所需的思想和技术。硬件和算法,共同构成了计算机的计算能力。软件,不过是硬件与算法的结合所产生的可使用的逻辑实体。

      这就涉及三个基本问题:什么是计算? 如何计算? 一切都可计算吗?

      什么是计算?

      1. 通俗意义上的计算,指的就是数学运算,加减乘除、取模以及其它,而大部分计算(包括减、乘、除、取模,无论多么复杂)都可使用加法来实现;

      2. 计算机现在已经能够处理文本,那么,处理文本的计算技术是怎样的?

      3. 在接近计算机硬件层面,任何运算都使用位运算来实现;如何用位运算来实现各种运算,毫无疑问,是数学家最擅长的事情。

      4. 位运算是物理状态的逻辑表征和变化。物理状态可由电子、机械或其它任何可能的物理实体来实现;毫无疑问,这是物理学家最擅长的事情。

      5. 在人体和其它生物里,计算的物理实体可能是神经元、生物电之类所运载的东西,究竟以什么作为计算单位,至今还是个谜。

      如何计算 

      首先,涉及科学计算的部分,自然是与数学和各特定领域(尤其是工程领域)有关,通常可以遵循相关的定理和公式来计算和改进;涉及文本数据处理的计算技术,则是计算机新兴的应用领域;如何计算的问题,大概就是选取计算基本单位(比如加减乘除,数据复制)及其如何组合的问题了(控制流程,顺序或并发)。

      并发计算,或者并行计算,必定成为未来的主流。人脑所采用的计算方式,极可能采用了并行方式。假设一平方米空间能放置100块CPU,那么, 100 平方米的空间可放 10000 块CPU , 假设并行计算算法的利用率是 50% , 那么, 也有 5000块的CPU计算能力, 这意味着,现在一年的计算量,可能只需要 365 / 5000 × 24 = 1.752 小时 的工作量。想想,如果采用更好的并行技术,未来的IT世界会是什么样,难以想象。

      一切都可计算吗?

      显然,至少目前来说,答案是否定的。这是可计算性理论的问题。并且,若将算法机械地应用于日常生活,常常会显得非常笨拙。人类(乃至其它生物)究竟采取了怎样的计算单位和方式,使得人们在思考问题时显得如此的灵巧多变,还是一个非常值得探索的问题。

      程序开发者的位置?

      跨过物理运算层面和位运算层面,在其基础上实现 1  2 的问题求解。并且,关于科学计算部分,主要由研究相关领域的科学家来完成;对于程序开发者来说,所谓的算法,应当主要指文本处理所用到的算法技术。

  • 相关阅读:
    python模块--time模块
    python模块--如何相互调用自己写的模块
    Animating Views Using Scenes and Transitions
    fragment 切换
    android textview 设置text 字体
    android intent 5.1
    android EditView ime
    animation of android (4)
    animation of android (3)
    animation of android (2)
  • 原文地址:https://www.cnblogs.com/guanshan/p/guan001.html
Copyright © 2011-2022 走看看