终于写到重头戏了,如果说前面的微分积分还属于基础理论,而与我们日常的算法设计距离有点远的话,那么后面的概率、矩阵、空间立体几何,可就是和应用息息相关了。
为什么要有概率 概率是个数学概念,但它在计算机软件设计上有很多应用,数学概念是留给数学系的人讨论的事情,我们这里侧重的它的应用。那么为什么会在应用中用到概率,概率真正体现的是什么呢?我个人理解,概率的本质是体现了一种模糊的思想,既可以是A、又可以是B,甚至本身概率的值就是模糊的,因为没有人知道真正的概率是什么,我会在后面解释这句让人晕的话。 理解了概率要表达模糊的思想后,我们会发现世界上绝对的事太少,甚至就是0、1写入都存在微小的写错概率,说不好的事情太多,也就决定了概率绝对是大有用处。 概率的内容 目前市面本科的概率书的标题一般为“概率和数理统计”,表明了概率实际分为两部分内容:概率和统计。统计是在概率分布的基础上,而单纯的概率统计不是这里要讲的重点,所以下面主要把概率理论部分分成了两块,“概率的计算”和“概率的分布”。 概率的计算 概率的求解绝对是数学的东西,这里不讨论,什么全概率、独立时间、贝叶斯公式,书上都有。这里举几个实际的例子,首先概率在算法设计分析时会碰到,就像我们在积分那节举的例子,计算出的公式几乎都基于vector里面的对象分布完全随机的,也就是每个对象在各个位置的概率都一样导出的,如果概率不一样呢?结果当然会不一样,有关计算不详加讨论。谈到了分布的概率,TAOCP《计算机程序设计艺术》在动态分配内存那章的课后题专门有一题讨论了,最佳匹配分配内存的一个最大弱点,最后的结果就是分配完空间的出现概率不平均。再有,BM字符串匹配比KMP算法的一个重要改进,就是假设字符串比较时,从后位首先出现不一样的概率比从头起出现字符不一样的概率大。甚至在搜索引擎里,pagerank的那个0.85都是模拟了用户从浏览器直接跳转的概率(尽管客观上起到了,避免矩阵奇异的效果)。 概率计算很多都是基于经典的模型(后面会说明模型的思想在概率起到重要作用) |
算法心经:数学的应用:概率的应用
![](https://img-home.csdnimg.cn/images/20240711042549.png)