随机化


简介
  randomization
  在一组测定值中,每个测定值都是依一定的概率独立出现的,则称这一组测定值的出现是随机化的。可用游程检验来确定一组测定值的出现是否是随机化的。算法
  在我们的生活中,人们经常会去掷色子来看结果,投硬币来决定行动,这就牵涉到一个问题:随机。
  计算机为我们提供好了随机方法(部分计算器也提供了),那么对于有些具有瑕疵的算法,如果配上随机化算法的话,又是可以得到一样不到的结果。
  定义:随机化算法是这样一种算法,在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。随机化算法基于随机方法,依赖于概率大小。
  这种算法看上去是凭着运气做事,其实,随机化算法是有一定的理论基础的,我们可以想象,在[1,10000]这个闭区间里,随机1000次,随机到2这个数的几率是多大,何况1000次的随机在计算机程序中仅仅是一眨眼的功夫。可以看出,随机化算法有着广阔的前景。只是由于随机化算法比较难于掌控,所以并不是很多人都接触过他,但肯定有很多人都听说过。
  下面,我们就随机化问题,举一个例子:
  一个长度在4..10的字符串中,需要判定是否可以在字符串中删去若干字符,使得改变后字符串符合以下条件之一:
  (1)AAAA;(2)AABB;(3)ABAB;(4)ABBA。
  例如:长度为6字符串“POPKDK”,若删除其中的“O”,“D”两个字母,则原串变为:“PPKK”,符合条件(2)AABB。
  分析:
  这道题很容易想到一种算法:运用排列组合:枚举每4个字母,然后逐一判断。算法是可行的,但是如果需要题目中加上一句话:需要判断n个字符串,且n<=100000,那么这样的耗时是不能让人忍受①的,因为在枚举的过程中,是非常浪费时间的。
  (①:这里是指信息学中要求算法的普遍运算时间为:1000ms)
  所以这道题有可能可以借助于随机化算法,下面我们来算一下在10个组符中取4个字符一共有多少种取法:C(4,10)=210。那么很容易得知,随机化算法如果随机100次,能都到的结果基本上就正确了,而随机时的时间消耗是O(1),只需要判断没有随机重复即可,判重的时间复杂度也为O(1),并且最多随机100次,这样就可以有效地得到答案,最大运算次数为:O(100n),这是在计算机的承受范围内(1000ms)的。
  从这里就能看出,随机化算法是一个很好的概率算法,但是它并不能保证正确,而且它单独使用的情况很少,大部分是与其他的算法:例如贪心、搜索等配合起来运用。
  再举一个例子:
  排序问题。快速排序是排序方法中较为便捷的方法之一,但是由于它极不稳定,最好的时候时间复杂度为O(n㏒n),这里的㏒是指以2为底的对数运算。最坏的时候能达到与普通排序方法一样的O(n^2)。
  而制约快速排序的有两个:一是数据,越无序的数据,快排的速度越快;二是中间点的枚举。
  因为两个制约条件都与随机有着不可分开的关系。
  所以,在快速排序中加入随机化算法无疑是十分重要的。运用
  (1)数据读入时,随机排放数据位置。
  (2)中间点的枚举进行多次随机化后决定。
  这样就基本上将快速排序的时间复杂度维持在最好状态。

热门词条

应收账款 区域货币 区间估计 CPI(Consumer Price Index) 资本成本 单向定单 金融危机 认可 外汇通 汇率 外汇佣金 资产 ISO 经济 增量成本 服务 CFO MIT 加工 什一税 租赁期 销售 股价反弹 SME REF 抽签偿还 MG金融集团 技术 空头陷阱 市场 美元 股利收入 中小企业 资本 美国 两会 中国股市 备付金率 价格 吊空 指数 股灾 葡萄牙币 pt 调至市价 清算 下降三角形 Writer 电子汇兑 FDI 税粮 Theta width peg MACD 巴塞尔资本协议 冲账 艾略特波段理论的含义 管理 贴现现金流 银行 外汇交易法 短期同业拆借 拔档 消费发展战略 联系汇率制度 延期付款汇票 Exposure 公司 短期国际商业贷款 阴烛 金融中介理论 不完全竞争市场理论 (金融) 标准普尔(S&amp;P) 美国贝勒大学 正利差 汇差清算率 外汇 分期付款汇票 软通货 出口物价指数 选择权买方 集中竞价 百分比回撤 无记名汇票最低报价戴维·凯特标准·普尔 500指数抵押品持平德国工业产值德国消费者物价指数成本协同效益 非农就业人口 交易 德国伊弗研究所景气调查 持平 道琼斯公用事业平均指数 金融 指示汇票 产品竞争力 财务指标 盈利能力比率 Quote 外汇实盘交易方式 货币 外汇实盘交易指令 国际收支差额 什么是外汇市场的过分反应 BBC制度 货币期货交易 南洋商业银行 波浪理论与新闻价值性的关系 希腊德拉马克