随机化算法

随机化算法通过引入随机因素解决复杂问题,如在字符串处理中通过随机选取避免耗时的枚举操作,或在快速排序中提高效率。虽然不能确保每次正确,但与贪心、搜索等算法结合能有效解决问题。

        随机化算法(randomized algorithm),在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。就是将算法的某一步或者某几步至于运气的控制下,即该算法在运行中的某一步或者某几步涉及一个随机决策,或者说其中一个决策依赖于某种随机事件。

一、随机化算法概述

在我们的生活中,人们经常会去掷骰子来看结果,投硬币来决定行动,这就涉及到一个问题:随机。

计算机为我们提供好了随机方法,那么对于有些具有瑕疵的算法,如果配合随机化算法,又是可以得到意想不到的结果。

二、定义

这种算法看上去是凭着运气做事,其实,随机化算法是有一定的理论基础的,我们可以想象,在[1,10000]这个闭区间里,随机1000次,随机到2这个数的几率是多大(约为0.1),何况1000次的随机在计算机程序中仅仅是一眨眼的功夫。可以看出,随机化算法有着广阔的前景。只是由于随机化算法比较难于掌控,所以并不是很多人都接触过他,但肯定有很多人都听说过。

三、举例

1.下面,我们就随机化问题,举一个例子:

一个长度在4..10的字符串中,需要判定是否可以在字符串中删去若干字符,使得改变后字符串符合以下条件之一:

(1)AAAA;(2)AABB;(3)ABAB;(4)ABBA。

例如:长度为6字符串“POPKDK”,若删除其中的“O”,“D”两个字母,则原串变为:“PPKK”,符合条件(2)AABB。

分析:

这道题很容易想到一种算法:运用排列组合:枚举每4个字母,然后逐一判断。算法是可行的,但是如果需要题目中加上一句话:需要判断n个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优快云砖家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值