蒙地卡罗模拟和 CPA

最近除了锻炼,一直看 Head First 丛书系列的第二本,今天看了90多页,整个章节都是关于时间管理的,和数学关联较多,这次的24道习题居然全对了。
 
有两个 Term 比较有意思,可以写写。
 
一个是 Monte Carlo Simulation,这又是个从赌场导出的统计模拟算法,在金融建模方面也有广泛应用,用最简单的话来解释,就是随机产生的系列结果聚合起来得到一个相对准确的模型,随机模拟次数越多,越逼近真实值。一般在无法用常规方法估算结果的时候会用到这种模拟。
 
 
 
Wiki 上有个很好的例子,就是圆周率 π 的计算,首先画一个正方形,然后在正方形里面画一个内切圆出来,接着开始在正方形内随机撒米,当然有的米会落在圆内,有的会落在圆外缘和正方形的空隙之间,计算落在圆行内的米粒个数和正方形内所有米粒个数的比例,就可以大致的得到 π/4, 米粒越多就越精确。
 
这当然也可以用公式导出,设圆的半径为 r, 圆的面积为 r*r*π, 而正方形的面积为 4*r*r, 所以两者比例为 π/4.
 
第二个 Term CPA 和会计考试无关,指的是 Critical Path Analysis
 
当我们做计划的时候需要统计实现这个计划要多长时间,如何去预测这个时间呢? 似乎很简单
1. Break down, 将大的目标分解成小的可以估量的 activity,做一个 activity list 出来。
2. 估算单个 activity 所花费的时间,最后累加起来就是实现整个大目标的总时间
 
但是事情往往并没有这么简单,activity 之间有 dependency, 还可能是多线程同步进行,这种情况如何估算,如何做 scheduler 呢?
这个过程和玩拼图有点类似,找出 activity 之间的依赖关系, 然后拼一幅 precedence diagram 出来,从起点到终点会有多条不同的路径,将每条路径上的 activity 的 duration 累加起来,费时最多的路径就是 Critical Path 了。而其他路径和 Critical Path 的时间点数差就是他们的 float, 也称 slack.
 
根据路径的 float offset 可以计算出每一个 activity 的 early start, early finish, late start, late finish, 也就知道了每一个 activity 应该什么时候进行。
 
紧急情况下缩短 Critical Path 时间的方法有 crashing 和 fast-tracking, 前者会增加成本,而后者带来风险。

你可能感兴趣的:(多线程,算法,金融)