




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1随机算法数值随机算法数值(shz)概率舍伍德概率舍伍德第一页,共42页。 在许多情况下,一般算法比较复杂,性能较差,很多具在许多情况下,一般算法比较复杂,性能较差,很多具有很好平均运行时间的算法,在最坏的情况下,却具有很坏有很好平均运行时间的算法,在最坏的情况下,却具有很坏的性能。由于随机性选择比最优选择省时间,因此引入随机的性能。由于随机性选择比最优选择省时间,因此引入随机化算法可以化算法可以(ky)在很大程度上降低算法的复杂度。在很大程度上降低算法的复杂度。第2页/共42页第二页,共42页。第3页/共42页第三页,共42页。数值概率算法常用于数值问题的求解。将一个数值概率算法常用于
2、数值问题的求解。将一个(y )问题的计算与某个问题的计算与某个概率分布已经确定的事件联系起来,求问题的近似解。这类算法所得到概率分布已经确定的事件联系起来,求问题的近似解。这类算法所得到的往往是近似解,且近似解的精度随计算时间的增加而不断提高。在许的往往是近似解,且近似解的精度随计算时间的增加而不断提高。在许多情况下,要计算出问题的精确解是不可能或没有必要的,因此可以用多情况下,要计算出问题的精确解是不可能或没有必要的,因此可以用数值随机化算法得到相当满意的解。数值随机化算法得到相当满意的解。蒙特卡罗算法用于求问题的准确解,但得到的解未必是正确的。蒙特卡蒙特卡罗算法用于求问题的准确解,但得到的
3、解未必是正确的。蒙特卡罗算法以正的概率给出正解,求得正确解的概率依赖于算法所用的时间罗算法以正的概率给出正解,求得正确解的概率依赖于算法所用的时间。算法所用的时间越多,得到正确解的概率就越高。一般。算法所用的时间越多,得到正确解的概率就越高。一般(ybn)给定执给定执行步骤的上界,给定一个输入,算法都是在一个固定的步数内停止的。行步骤的上界,给定一个输入,算法都是在一个固定的步数内停止的。随机算法随机算法(sun f)的分类的分类第4页/共42页第四页,共42页。舍伍德算法总能求得问题的一个解,且所求得的解总是正确的。当舍伍德算法总能求得问题的一个解,且所求得的解总是正确的。当一个确定性算法在
4、最坏情况下的计算复杂性与其在平均情况下的计一个确定性算法在最坏情况下的计算复杂性与其在平均情况下的计算复杂性有较大差别时,可在这个确定性算法中引入随机性将它改算复杂性有较大差别时,可在这个确定性算法中引入随机性将它改造成一个舍伍德算法,消除或减少造成一个舍伍德算法,消除或减少(jinsho)问题的好坏实例间的这问题的好坏实例间的这种差别(精髓所在)。种差别(精髓所在)。拉斯维加斯算法不会得到不正确的解。一旦用拉斯维加斯算法找到一个拉斯维加斯算法不会得到不正确的解。一旦用拉斯维加斯算法找到一个解,这个解,这个(zh ge)解就一定是正确解。但有时可能找不到解。拉斯维加斯解就一定是正确解。但有时可
5、能找不到解。拉斯维加斯算法找到正确解的概率随着它所用的计算时间的增加而提高。对于所求算法找到正确解的概率随着它所用的计算时间的增加而提高。对于所求解问题的任意实例,用同一拉斯维加斯算法反复对它求解,可以使求解解问题的任意实例,用同一拉斯维加斯算法反复对它求解,可以使求解失效的概率任意小。失效的概率任意小。随机随机(su j)算法的分类算法的分类第5页/共42页第五页,共42页。第6页/共42页第六页,共42页。, 2 , 1mod)(10nmcbaadann第7页/共42页第七页,共42页。 为了在设计概率算法时便于产生为了在设计概率算法时便于产生(chnshng)(chnshng)所需的随机
6、所需的随机数,建立一个随机数类数,建立一个随机数类RandomNumberRandomNumber。该类包含一个需有用户。该类包含一个需有用户初始化的种子初始化的种子randseedrandseed。给定初始种子后,即可产生。给定初始种子后,即可产生(chnshng)(chnshng)与之相应的随机序列。种子与之相应的随机序列。种子seed seed 是一个无符号长是一个无符号长整型数,可由用户选定也可用系统时间自动产生整型数,可由用户选定也可用系统时间自动产生(chnshng)(chnshng)。函数。函数RandomRandom的输入参数的输入参数n n6553665536是一个无符号整形
7、数,返回是一个无符号整形数,返回00,n-1n-1范围内的一个随机整数。函数范围内的一个随机整数。函数fRandom()fRandom()返回返回00,11内的一个随机实数。内的一个随机实数。第8页/共42页第八页,共42页。 /随机随机(su j)数类数类Const unsigned long maxshort = 64436L;Const unsigned long multiplier = 1194211693L;Const unsigned long adder = 12345L;class RandomNumber private: /当前种子当前种子 unsigned long r
8、andSeed; public: /构造函数,默认值构造函数,默认值0表示由系统自动产生种子表示由系统自动产生种子 RandomNumber (unsigned long s = 0); /产生产生0到到n-1之间的随机之间的随机(su j)整数整数 unsigned short Random (unsigned long n); /产生产生0,1)之间的随机之间的随机(su j)实数实数 double fRandom (void); 第9页/共42页第九页,共42页。 对于函数对于函数fRandom,先用函数,先用函数Random(maxshort)产生产生一个一个0(maxshort-1)
9、之间的整形)之间的整形(zhng xng)随机序列,随机序列,将每个整型随机数除以将每个整型随机数除以maxshort,就得到,就得到0,1)区间中的随)区间中的随机实数。机实数。第10页/共42页第十页,共42页。/产生种子产生种子(zhng zi)RandomNumber: RandomNumber(unsigned long s) if (s = 0) randSeed = time (0); /用系统时间产生种子用系统时间产生种子(zhng zi) else randSeed = s; /由用户提供种子由用户提供种子(zhng zi)/产生产生(chnshng)0n-1之间的随机数之间
10、的随机数Unsigned short RandomNumber: Random (unsigned long n) randSeed = multiplier * randSeed + adder; return (unsigned short) ( (randSeed 16) % n );/产生产生(chnshng)0,1)之间的随机实数之间的随机实数Double RandomNumber: fRandom (void) return Random (maxshort) / double (maxshort);第11页/共42页第十一页,共42页。第12页/共42页第十二页,共42页。模拟抛
11、硬币得到的正面模拟抛硬币得到的正面(zhngmin)事件频率图事件频率图第13页/共42页第十三页,共42页。void main (void) / 模拟随机抛硬币事件模拟随机抛硬币事件(shjin)const int NCOINS = 10;const long NTOSSES = 50000L;/ headsi是得到是得到i次正面的次数次正面的次数long i, headsNCOINS+1;int j, position;/ 初始化数组初始化数组headsfor (j=0;j NCOIN+1; j+)headsj = 0;/ 重复重复50000次模拟事件次模拟事件(shjin)for (i=
12、0;i NTOSSES; i+)headsTossCoins(NCOINS)+;/ 输出频率图输出频率图for (i=0;i=NCOINS; i+)position = int (float (headsi)/NTOSSES*72);coutsetw(6)i ;for (j=0;jposition-1;j+)cout ;cout*endl;int TossCoins (int numberCoins) /随机抛硬币随机抛硬币(yngb) static RandomNumber coinToss; int i, tosses = 0; for (i = 0; i numberCoins; i+)
13、 / Random (2) = 1 表示正面表示正面 tosses += coinToss.Random (2); return tosses;int TossCoins (int numberCoins) /随机随机(su j)抛硬币抛硬币 static RandomNumber coinToss; int i, tosses = 0; for (i = 0; i numberCoins; i+) / Random (2) = 1 表示正面表示正面 tosses += coinToss.Random (2); return tosses;第14页/共42页第十四页,共42页。第15页/共42
14、页第十五页,共42页。7.2.1 用随机投点法计算用随机投点法计算值值 设有一半径为设有一半径为r的圆及其外切的圆及其外切(wi qi)四边形。四边形。向该正方形随机地投掷向该正方形随机地投掷n个点。设落入圆内的点数为个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为入的点落入圆内的概率为 。 所以当所以当n足够大时,足够大时,k与与n之比就逼近这一概率之比就逼近这一概率(gil)。从而从而 。nk44422rr第16页/共42页第十六页,共42页。第17页/共42页第十七页,共42页。 10)(010)()
15、(xfrdxxfdydxxfyP(1)用随机投点法计算)用随机投点法计算(j sun)定积分定积分 设设f(x)是是0,1上的连续函数,且上的连续函数,且0f(x)1。需要计算。需要计算(j sun)的积分的积分为为 , 积分积分 I 等于图中的面积等于图中的面积G。 在图所示单位正方形内均匀地作投点试在图所示单位正方形内均匀地作投点试验,则随机点落在曲线验,则随机点落在曲线(qxin)下面的概率为:下面的概率为: 假设向单位正方形内随机地投入假设向单位正方形内随机地投入n个个点点(xi,yi),i = 1,2,n。随机点(。随机点(xi,yi)落入)落入G内,则内,则yi f(xi)。)。如
16、果有如果有m个点落入个点落入G内,则随机点落入内,则随机点落入G内的概率,即内的概率,即nmI10)(dxxfI第18页/共42页第十八页,共42页。第19页/共42页第十九页,共42页。如果所遇到的积分如果所遇到的积分(jfn)形式为:形式为: 其中,a和b为有限(yuxin)值,被积函数f(x)在区间a,b中有界,并用M,L分别表示其最大值和最小值。此时可做变量代换x=a+(b-a)z,将所求积分变为:式中:式中:dcII*badxxfI)(10*)(dzzfI)(1)(*LzabafLMzf)(abLMc)(abLd第20页/共42页第二十页,共42页。(2)用平均值法计算定积分)用平均
17、值法计算定积分(jfn) 任取一组相互独立、同分布的随机变量任取一组相互独立、同分布的随机变量i,i在在a,b 中服从分布律中服从分布律f(x), 令令 ,则,则g*(i)也是一组互独立、同分布的随机变量,而且也是一组互独立、同分布的随机变量,而且由强大由强大(qingd)数定律:数定律: 若选若选 ,则,则 依概率依概率1收敛收敛(shulin)于于I,平均值法就是用,平均值法就是用 作为作为I的近似值。的近似值。)()()(*xfxgxgbabaiIdxxgdxxfxggE)()()()(*1)(lim(1*1IgPininnr)(1*1iningIII第21页/共42页第二十一页,共42
18、页。 假设设要计算假设设要计算(j sun)的积分形式为:的积分形式为: ,可以任选一个有简便方法可以进行抽样的概率密度函数,可以任选一个有简便方法可以进行抽样的概率密度函数f(x),使其满足:,使其满足:bxaxbxaabxf,01)(badxxgI)(badxxfxgI)()(*badxabxgabI1)()(badxxf1)(;0)(, 0)()时(当bxaxgxf0)(00)()()()(*xfxfxfxgxg(1)(2)如果如果(rgu)记记则所求积分则所求积分(jfn)可以写为:可以写为:由于由于a和和b为有限值,可取为有限值,可取f(x)为均值分布:为均值分布:此时所求积分变为:
19、此时所求积分变为:第22页/共42页第二十二页,共42页。 在在a,b区间上随机抽取区间上随机抽取(chu q)一个点一个点xi(i =1,2, ,n),则均值),则均值 NoImageniixgnabI1_)(可作为可作为(zuwi)所求积分所求积分I的近似值。的近似值。可设计如下可设计如下(rxi)程序:程序:double Integration(double a, double b, int n) /用平均值法计算定积分用平均值法计算定积分static RandomNumber rnd;double y=0;for(int i=1; i=n; i+) double x=(b-a)*rnd
20、.fRandom()+a;y+=g(x);return (b-a)*y/double(n);第23页/共42页第二十三页,共42页。第24页/共42页第二十四页,共42页。 设A是一个确定性算法,当它的输入实例为x时所需的计算时间(shjin)记为tA(x)。设Xn是算法A的输入规模为n的实例的全体,则当问题的输入规模为n时,算法A所需的平均时间(shjin)为 这显然不能排除存在xXn使得 的可能性。希望获得一个随机化算法B,使得对问题的输入(shr)规模为n的每一个实例均有 这就是舍伍德算法设计的基本思想。当这就是舍伍德算法设计的基本思想。当s(n)与与 相比可忽略时,舍伍德算法可获得很好
21、的平均性能。相比可忽略时,舍伍德算法可获得很好的平均性能。nXxnAAXxtnt| / )()()()(ntxtAA)()()(nsntxtAB_)(ntA第25页/共42页第二十五页,共42页。第26页/共42页第二十六页,共42页。随机快速排序算法随机快速排序算法快速排序算法快速排序算法算法的核心在于选择合适的划分基准算法的核心在于选择合适的划分基准(jzhn)改变快速排序算法性能不稳定,即输入相关的问题改变快速排序算法性能不稳定,即输入相关的问题第27页/共42页第二十七页,共42页。template void quicksort_random(Type A,int low,int hi
22、gh) random_seed(0);/* 选择系统当前时间作为选择系统当前时间作为(zuwi)随机数种子随机数种子 */ r_quicksort(A,low,high); /* 递归调用随机快速排序算法递归调用随机快速排序算法 */void r_quicksort(Type A,int low,int high) int k; if (lowhigh) k = random(low,high);/* 产生产生low到到high之间的随机数之间的随机数k */ swap(Alow,Ak); /* 把元素把元素(yun s)Ak交换到数组的第一个位置交换到数组的第一个位置*/ k = split
23、(A,low,high);/* 按元素按元素(yun s)Alow把数组划分为两个把数组划分为两个 */ r_quicksort(A,low,k-1);/* 排序第一个子数组排序第一个子数组 */ r_quicksort(A,k+1,high);/* 排序第二个子数组排序第二个子数组 */ 随机随机(su j)快速排序算法快速排序算法第28页/共42页第二十八页,共42页。第29页/共42页第二十九页,共42页。 对选择问题而言,用中位数作为划分基准可以保证在最对选择问题而言,用中位数作为划分基准可以保证在最坏情况下用线性时间完成选择。如果只简单地用待划分数组坏情况下用线性时间完成选择。如果只
24、简单地用待划分数组的第一个元素作为划分基准,则算法的第一个元素作为划分基准,则算法(sun f)的平均性能较的平均性能较好,而在最坏的情况下需要好,而在最坏的情况下需要O(n2)计算时间。计算时间。 舍伍德型选择算法舍伍德型选择算法(sun f)则随机地一个数组元素作为则随机地一个数组元素作为划分基准。这样既能保证算法划分基准。这样既能保证算法(sun f)的线性时间平均性能的线性时间平均性能又避免了计算拟中位数的麻烦。又避免了计算拟中位数的麻烦。第30页/共42页第三十页,共42页。templateType select(Type a,int l,int k) /计算计算al:r中第中第k小
25、元素小元素 static RandomNumber rnd; while (true) if( l =r) return al; int i = l, j=l + rnd.Random(r- l+1); /随机选择划分随机选择划分(hu fn)基准基准 swap(ai,aj); j=r+1; Type pivot=al; /以划分以划分(hu fn)基准为轴作元素交换基准为轴作元素交换 while (true) while (a+ipivot); if (i=j) break;Swap (ai,aj);if (j-l+1=k) return pivot;al=aj;aj=pivot;/对子数组
26、重复对子数组重复(chngf)划分过程划分过程if (j-l+1k) k=k-j+l-1;l=j+1; else r=j-1;第31页/共42页第三十一页,共42页。 由于算法由于算法select使用随机数产生器随机地产生使用随机数产生器随机地产生1和和r之间的之间的随机整数。因此,算法随机整数。因此,算法select所产生的划分基准是随机的。所产生的划分基准是随机的。在这个条件下,可以证明,当用算法在这个条件下,可以证明,当用算法select对含有对含有n个元素的个元素的数组进行划分时,划分出的低区子数组中含有数组进行划分时,划分出的低区子数组中含有1个元素的概率个元素的概率为为2/n;含有
27、;含有i个元素的概率为个元素的概率为1/n,i=2,3,n-1。设。设T(n)是算是算法法select作用于一个含有作用于一个含有n个元素的输入数组上所需的期望时个元素的输入数组上所需的期望时间的一个上界,且间的一个上界,且T(n)是单调是单调(dndio)递增的。在最坏情况递增的。在最坏情况下,第下,第k小元素总是被划分在较大的子数组中。由此,可以得小元素总是被划分在较大的子数组中。由此,可以得到关于到关于T(n)的递归式:的递归式:111)(),(max()1, 1(max()(ninnOiniTnTnT111)()(2) 1(ninnOiTnT第32页/共42页第三十二页,共42页。12
28、/2)()(nninnOiT在上面在上面(shng min)的推导中,从第一行到第二行是因为的推导中,从第一行到第二行是因为max(1,n-1)=n-12/2/),max(niinniiini并且当并且当n是齐数时,是齐数时,T(n/2),T(n/2+1),T(n-1)在和式中均出现在和式中均出现2次;次;n 是偶是偶数时,数时, T(n/2+1),T(n/2+2),T(n-1)均出现两次,均出现两次,T(n/2)只出现一次。因此只出现一次。因此,第二行中的和式是第一行中和式的一个上界。从第,第二行中的和式是第一行中和式的一个上界。从第2行到第行到第3行是因为在行是因为在最坏情况下最坏情况下T
29、(n-1)=O(n2),故可将故可将T(n-1)/n包含在包含在O(n)中。由此可知,非中。由此可知,非递归的舍伍德型选择算法可以在递归的舍伍德型选择算法可以在O(n)平均平均(pngjn)时间内实现。时间内实现。第33页/共42页第三十三页,共42页。 上述舍伍德选择算法对确定性选择算法所做的修改非常上述舍伍德选择算法对确定性选择算法所做的修改非常简单且容易实现。但有时所给的确定性算法无法直接改造成简单且容易实现。但有时所给的确定性算法无法直接改造成舍伍德算法。此时可借助随机预处理技术,不改变原有的确舍伍德算法。此时可借助随机预处理技术,不改变原有的确定性算法仅对其输入进行随机洗牌,同样可收
30、到舍伍德算法定性算法仅对其输入进行随机洗牌,同样可收到舍伍德算法的效果。例如,对于确定性选择算法,可以用下面的洗牌算的效果。例如,对于确定性选择算法,可以用下面的洗牌算法法Shuffle将数组将数组a中的元素随机排列,然后中的元素随机排列,然后(rnhu)用确定用确定性选择算法求解。这样做的效果与舍伍德型算法是一样的。性选择算法求解。这样做的效果与舍伍德型算法是一样的。template void Shuffle (Type a, int n) /随机随机(su j)洗牌算法洗牌算法static RandomNumber rnd;for (int i=0; i n; i+)int j=rnd.R
31、andom(n-i)+i;Swap (ai,aj);第34页/共42页第三十四页,共42页。 用两个数组来表示所给的含有用两个数组来表示所给的含有n个元素的有序集个元素的有序集S。用。用value0:n存储有序集中的元素,存储有序集中的元素,link0:n存储有序集中元素在数组存储有序集中元素在数组value中位置的指针。中位置的指针。Link0指向有序集中第指向有序集中第1个元素,即个元素,即valuelink0是集合中的最小元素。一般地,如果是集合中的最小元素。一般地,如果valuei是所给有序集是所给有序集S中的第中的第k个元素,则个元素,则valuelinki是是S中的第中的第k+1个
32、元素。个元素。S中元素的有序性表现为,对于任意中元素的有序性表现为,对于任意1 i n有有valuei valuelinki。对集合。对集合S中的最大元素中的最大元素valuek有,有,linkk=0且且value0是一个大数例如,有序集是一个大数例如,有序集S=1,2,3,5,8,13,21的一种的一种(y zhn)表示方式如下图:表示方式如下图: i01234567Valuei231315218Linki42561703第35页/共42页第三十五页,共42页。 在此例中,在此例中,link0=4指向指向S中最小元素中最小元素value4=1。显而易。显而易见,这种表示有序集的方法实际上是用
33、数组来模拟有序链表。见,这种表示有序集的方法实际上是用数组来模拟有序链表。对于有序链表,可采用顺序搜索的方式在所给的有序集对于有序链表,可采用顺序搜索的方式在所给的有序集S中搜索中搜索链值为链值为x的元素。如果有序集的元素。如果有序集S中含有中含有n个元素,则在最坏情况下个元素,则在最坏情况下,顺序搜索算法所需的计算时间为,顺序搜索算法所需的计算时间为O(n)。 利用数组下标的索引利用数组下标的索引(suyn)性质,可以设计一个随机化搜性质,可以设计一个随机化搜索算法,以改进算法的搜索时间复杂性。算法的基本思想史,索算法,以改进算法的搜索时间复杂性。算法的基本思想史,随机抽取数组元素若干次,从较接近搜索元素随机抽取数组元素若干次,从较接近搜索元素x的位置开始做顺的位置开始做顺序搜索。可以证明,如果随机抽取数组元素序搜索。可以证明,如果随机抽取数组元素k次,则其后顺序搜次,则其后顺序搜索所需的平均比较次数为索所需的平均比较次数为O(n/(k+1)。第36页/共42页第三十六页,共42页。 为实现上述算法,用数组来表示的有序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机器人情感识别与表达考核试卷
- 高级审计培训课件
- 批发市场鱼品安全监管考核试卷
- 批发市场的小批量订单处理考核试卷
- 饲料店转让合同范本
- 教学加盟合同范本
- 材料合同范本简易图表
- 食品运输储藏合同范本
- 家具导购合同范本
- 企业级网络攻击事件预案制定协议
- 苏科版五年级下册《劳动》全一册全部课件(共11节)
- GB/T 7260.40-2020不间断电源系统(UPS)第4部分:环境要求及报告
- GB/T 3199-2007铝及铝合金加工产品包装、标志、运输、贮存
- GB/T 19845-2005机械振动船舶设备和机械部件的振动试验要求
- GB 9706.14-1997医用电气设备第2部分:X射线设备附属设备安全专用要求
- 变革型领导问卷TLQ
- 测绘安全生产专题培训课件
- 诊断学-绪论-课件
- 心肺复苏简易呼吸器使用除颤仪使用
- g4l操作指南教程硬盘克隆linux系统备份恢复带截图
- 油缸装配作业指导书
评论
0/150
提交评论