总体感言
一本不错的信息处理数学原理科普书。一些复杂的信息问题、工程问题,经作者之手,把背后的数学原理通过简单的形式展示出来,让普通读者明白到了数学解决问题的能力,体会到了数学的美。这本书,背后也道出了一个道理,那就是基础数学理论研究对计算机科学的发展能起到非常重要的作用。例如,书中提到,布尔代数,在19世纪布尔提出的80多年时间里,一直默默无闻,在实际生活中也没有起到任何作用。直到1938年香农提出在电路开关中应用布尔代数来处理之后,才开始在数字电路方面得到了广泛应用。
像作者说的,布尔代数对于数学的意义,等同于量子力学对于物理学的意义,他们将我们对世界的认识从连续状态扩展到了离散的状态。因为作者是搜索方面的专家,所以,作者对搜索涉及的数学建模、有向图、矩阵、统计、概率、迭代等方面进入了深入浅出的描述。印象最深刻的是,作者在讨论到比较两个集合的是否一样的时候,提到了各种算法的优劣性。最基本的算法是采用逐个元素的比较,好一点的是排序后再比较。但是作者提出,其实最优的方案的是,采集每个词的信息指纹——数字,然后对这些数字求和比较,就能马上知道两个集合是否有差异了。因为采用的信息指纹是伪随机数,不同信息指纹加减乘除之后相同的概率非常小。信息指纹在判断网页相似性、论文抄袭等方面发挥了重要的作用。
另外说的一点是,因为密码学不是作者的专业,感觉本书在密码学方面讲得不够透。
随想
一个正确的数学模型
一个正确的模型一开始可能还不如一个精雕细琢的错误模型来的准确,但是,如果我们认定大的方向是对的,就应该坚持下去(日心说一开始并没有地心说准确)正确的模型也可能受噪音的干扰,而显得不准确;这是不应该用一种凑合的修正方法加以弥补,而是要找到噪音的根源,这也许能通往重大的发现。模型OR数据
与模型一样,数据也十分重要,但是人们在很长时间里却低估了数据的作用。在过去20年里,在机器学习和自然语言处理领域,80%的成果来自于数据量的增加。爬虫、bfs 、dfs
比如Google在2013年时整个索引大约有10,000亿个网页,即使更新最频繁的基础索引也有100亿个网页,加入下载一个网页需要一秒钟,那么下载这100亿个网页则需要317年,如果下载10.000亿个网页则需要32,000年左右,是我们人类有文字记载历史的六倍时间。因此,一个商业的网络爬虫需要有成千上万个服务器,并且通过高速网络连接起来。显然各个网站最重要的网页应该是它的首页。在最极端的情况下,如果爬虫非常小,只能下载非常有限的网页,那么应该下载的是所有网站的首页,如果把爬虫再扩大些,应该爬下首页直接链接的网页,因为这些网页是网站设计者自认为相当重要的网页。在这个前提下,显示BFS明显优于DFS。事实上在搜索引擎的爬虫里,虽然不是简单地采用BFS,但是先爬哪个网页,后爬哪个网页的调度程序,原理上基本上是BFS、MapReduce
云计算技术设计的面很广,从存储、计算、资源的调度到权限的管理等。云计算的关键之一是,如何把一个非常大的计算问题,自动分解到许多计算能力不是很强的计算机上,共同完成。这就是MapReduce的根本原理,将一个大任务拆分成小的子任务,并且完成子任务的计算,这个过程叫做Map,将中间结果合并成最终的结果,这个过程叫做Reduce。我们现在发现,Google颇为神秘的云计算中最重要的MapReduce工具,其实原理就是计算机算法中常用的“各个击破”法,它的原理原来这么简单———将复杂的大问题分解成很多小问题分别求解,然后再把小问题的解合并成原始问题的解。