标签:style os 使用 sp on 问题 bs as 时间
之前拜读过吴军老师的《数学之美》。虽然这是一本科普性质的读物,但还是能从中获益匪浅。下面根据记忆以及之前做过的简要的书面笔记,做一个概括。
1.信息的作用在于消除不确定性,自然语言处理的大量问题都是找相关的信息。
2.关于搜索:技术分为术和道两种。具体的做事方法是术,做事的原理和原则是道。只有掌握了搜索的本质和精髓,才能游刃有余。
3.搜索引擎的工作流程。一个搜索引擎大致需要做这几件事:自动下载尽可能多的网页;建立快速有效的索引;根据相关性对网页进行公平准确的排序。
4.上述的索引有不同的等级划分。应该根据需要网页的重要性、质量和访问的频率而建立。
5.自动下载互联网所有的网页,用到了图论中的遍历算法:深度优先遍历、广度优先遍历。
6.下载网页用到了网络爬虫技术。它可以从任何一个网页出发,用图的遍历算法,自动地访问到每一个网页,并把它们存起来。
7.Google的PageRank算法:简单的说就是民主表决。在互联网上,如果一个网页被很多其他的网页所链接,说明它受到普遍的承认与信赖,那么它的排名就高。网页排名高的网站贡献的链接权重大。
8.网页和查询的相关性:搜素关键词权重的科学度量是运用了TF-IDF技术。
9.地址识别技术运用了有限状态机--它包括一些状态(节点)和连接这些状态的有向弧。基于概率的有限状态机被应用于模糊匹配上。
10.全球导航运用了动态规划算法。
11.关于新闻的分类。这一篇巧妙地将新闻的分类与数学上的余弦公式联系起来。将一遍新闻看做一个向量--特征向量。向量的维度是词的总数量,向量中每一维度代表每个词对这篇新闻主题的贡献。然后计算两个特征向量的夹角:cos(A)=<b,c>/(|b|*|c|)=(X1Y1+X2Y2+...+X64000Y64000)/(SQRT(X1^2+X2^2+...+X64000^2)*SQRT(Y1^2+Y2^2+...+Y64000^2))。(X1、Y1表示X的下表是1,Y的下表是1;SQRT()表示开方。X1^2表示X1的平方)计算的夹角越小,说明两条新闻越相近,越相关。然后可以计算待分类的新闻的特征向量,与各个类别代表的新闻的特征向量的夹角。求出其中最小的夹角,那么这个待分类的新闻就应该归类到与其夹角最小的那一类新闻中。
12.信息指纹:提取信息的特征作为一个字符串,求出该字符串对应为一个随机数。只要产生随机数的算法足够好,就能保证几乎不可能有两个字符串的指纹相同。信息指纹的好处:节省空间,存储整型比存储整个字符串省多了;提高查找效率,如果查找字符串,需要一个个匹配,而查找整型则有先排序然后二分查找等方法,效率提高很多。
13.伪随机数产生器算法--梅森旋转算法。
14.在互联网上加密需要使用基于加密的伪随机数产生器。常用的算法有MD5或SHA-1等。它们可以将不定长的信息变为定长的128为或160位二进制随机数。SHA-1被山东大学的王小云教授证明有漏洞。题外话:该书出版时王小云教授尚未发现MD5的漏洞,因此书中没有提到此事。王小云教授实际上也证明了MD5算法有漏洞,其实不是坊间流传的攻克了MD5算法。而是找出了MD5算法的强无碰撞。如果想要真正破解MD5算法,应该找到弱无碰撞才可以。设f(x)为hash函数,那么弱无碰撞是指:已知一个数X,要找出数Y,使得他们的哈希值f(x)=f(y)。强无碰撞是指找出一对数X与Y,使得它们的哈希值f(x)=f(y)。一个好的密码算法,应该要求不能找出强无碰撞和弱无碰撞。
15.搜索引擎的作弊--搜索引擎中排名靠前的网站不一定就是高质量、高相关性的网站。比如在网页中的隐藏域里加入大量的关键词,用来提高排名。或者购买大量链接等。作弊的本质是在网页排名的信号中加入了噪音,因此次反作弊的关键是去噪音。
16.最大熵模型与最大熵原理。通俗的讲就是鸡蛋不要放在一个篮子里。这是一种非常简单、优美,唯一一种既可以满足各个信息源的限制条件,同时又能保证平滑性的模型。但是计算量非常大。把各种特征综合在一起的最好的方法是采用最大熵模型。
17.输入法。输入汉字的快慢取决于汉字编码的平均长度。所谓平均长度是指击键次数乘以寻找这个键所需要的时间。汉字的编码包括对拼音的编码以及消除歧义的编码。而五笔输入法虽然减少了每个汉字击键的次数,却忽视了找到每个键的时间,因此它的编码的平均长度比较长,速度比较慢。
18.香农第一定理:对于一个信息,任何编码的长度都不小于它的信息熵。
19.拼音输入法拼音转汉字的算法:每个拼音可以对应多个汉字,而把一个拼音串对应的汉字从左到右连起来,就是一张有向图。它被称为网格图或篱笆图。拼音输入法就是根据上下文在给定拼音条件下找到一个最优的句子。对于上述的网格图,就对图的概率的表达式做转换,将连乘转化为连加。将问题转为寻找最短路径的问题。而最短路径的问题可以用动态规划算法解决。
20.布隆过滤器用于检索一个元素是否在一个集合里。它将元素通过Hash函数映射为位列阵中的一个点。因此只要看这个点是不是1就可以判断集合中有没有它了。布隆过滤器具有快速和省空间的优点,但是由于它是基于Hash函数的,而Hash函数难免会有冲突,因此布隆过滤器会有一定的误识别率。补救措施是再建立一个小的白名单,存储可能被误识别的元素。
21.马尔科夫链描述一种状态序列,其每个状态值取决于前面有限个状态。这种模型对很多实际问题来说是一种很粗略的简化。因为在现实生活中,事物相互的关系不能用一条链来串起来,他们之间的关系可能是交叉的,错综复杂的。这个时候应该用贝叶斯网络,它是一种加权的有向图。马尔科夫链是贝叶斯网络的特例,贝叶斯网络是马尔科夫链的推广。而贝叶斯网络的训练是一个NP问题。训练贝叶斯网络,可以用贪心法。而为了防止局部最优的方法,可以用蒙特卡洛算法。
22.好的方法在形式上往往是简单的。
23.维特比算法是一种特殊但应用最广泛的动态规划算法,用来寻找观察结果最有可能产生观测事件序列的-维特比路径-隐含状态序列。它针对篱笆网络的有向图的最短路径问题,凡是用隐含马尔科夫模型描述的问题都可以用它解码。
24.逻辑回归模型是一种将影响概率的不同因素结合在一起的指数模型。和指数模型(例如最大熵模型)一样,它们的训练方法相似,都可以采用迭代算法GIS和改进的迭代算法IIS来实现。
25.MapReduce运用了分治法。将一个大任务拆分成小的子任务,并且完成子任务的计算,这个过程叫Map。将中间的结果合并成最终结果,这个过程叫Reduce。
以上只是对整本书的一个粗浅的回顾。上面的内容之于整本书的内容,相当于沙滩上的几件贝壳之于整个沙滩。若想更加细致的了解本书,还是从头到尾品读一遍书比较好。
标签:style os 使用 sp on 问题 bs as 时间
原文地址:http://www.cnblogs.com/cestlavie/p/4162173.html