『笔记』随机化算法

引言:长久的关系不会是道德式的自我感动 ​​

一、时间期望值的估计

题目:假设\(1.. n\) 中每个数被选的概率相等,并且假设第 \(k\) 个数总是
出现在划分后两个数组中较大的数组 ,算法的期望时间为:

\[T(n)\le\frac{1}{n}(T(n-1)+T(n-2)+……+T(\frac{n}{2}+1)+T(\frac{n}{2})+T(\frac{n}{2}+1)+……+T(n-2)+T(n-1) \]

因为具有对称性,所以可以合并为

\[T(n)\le\frac{2}{n}\sum^{n-1}_{i=\frac{n}{2}}T(i)+O(n) \]

二、\(n\) 皇后问题的随机算法

\(k\) 个 用\(BoolQueen\)随机放置皇后

\(n-k\) 个皇后用搜索回溯的方法进行放置,增加算法的正确性

对于不同的 \(k\) 值,假设 \(p\) 为算法成功的概率, \(s\) 为一次成功搜索访问的节点数的平均值,\(e\) 为一次不成功搜索访问的节点数的平均值,\(t\) 为算法找到一个解得平均时间

\[t=p\times s+(1-p)\times (e+t) \]

\[t=s+e\times \frac{1-p}{p} \]

可以发现,当全部用确定性算法的时候\((k=0)\) 争取性是\(100\)%的,但当全部用随机算法,虽然时间会减少大部分,但是正确性会大大降低,通过分析公式发现,当\(k=\frac{n}{2}\)左右时,正确性和时间都是较为理想的。

三、主元素测试问题

问题:

主元素:出现次数超过一半以上的元素

输入:\(n\) 个元素的数组 \(T\)

输出:如果存在主元素则输出\(“true”\),否则\(“false”\)

算法 \(Majority(T,n)\)

  1. \(i\) =Random(1,n)

  2. \(x\) =T(i)

  3. 计数 \(x\)\(T\) 中出现的个数 \(k\)

  4. if \(k>n/2\) then return true

  5. else return false

如果回答\(true\),那么 \(T\) 中存在主元素,算法正确,如果回答 \(false\),\(T\)仍然可能会存在主元素,算法可能会出错,回答正确概率大于\(\frac{1}{2}\)

算法 \(BoolMajority(T,n)\)

  1. if \(Majority(T,n)\) then return true

  2. else return \(Majority(T,n)\)

\(BoolMaiority\) 的算法正确概率

\[p+(1-p)p+(1-p)^2p=1-(1-p)^2>\frac{3}{4} \]

调用 \(k\) 次的正确概率为\(1-(1-p)^k>1-2^{-k}\)

四、串相等测试(随机化字符串哈希)

问题:\(A\) 有一个长串 \(x\), \(B\) 有长串 \(y\)\(A\)\(B\) 希望知道 \(x=y\)?

方法一:正常用哈希匹配,占用空间大

方法二:传递子串进行比较,正确性不确定

\(A\)\(x\) 导出一个短串 \(f(x)\) \((fingerprints)\)

\(A\)\(f(x)\) 发送到 \(B\)

\(B\) 使用同样方法导出相对于 \(y\) 的短串 \(f(y)\)

\(B\) 比较 \(f(x)\)\(f(y)\)

如果 \(f(x)\neq f(y)\)\(x \neq y\);

如果 \(f(x) = f(y)\),则不确定.

\(Trick\)

\(x\)\(y\) 的二进制表示为正整数 \(I(x)\), \(I(y)\)

选择素数 \(p\), 指纹函数为

\(I_p(x) = I(x)\ \ mod \ \ p\)

\(A\) 传送 \(p\)\(I_p(x)\)\(B\). 当 \(p\) 不太大时,传送一个短串.
存在问题:

\(x = y \to I_p(x) = I_p(y)\)

\(Ip(x) = Ip(y) ⇏ x = y\)

出错条件:固定

\(p | (I(x) - I(y))\)

改进版 \(Trick\)

改进方法: 随机选择素数 p 进行测试

算法 \(StringEqualityTest\)

  1. 随机选择小于 \(M\) 的素数 \(p\) //M为正整数

  2. \(A\) 发送 \(p\)\(I_p(x)\)\(B\)

  3. \(B\) 测试是否 \(I_p(x) = I_p(y)\)

出错的必要条件:

\(x\) 的位数等于 \(y\) 的位数

\(p | (I(x)-I(y))\)

该笔记因快速幂终结!

posted @ 2021-02-01 10:56  琼瑾  阅读(228)  评论(0编辑  收藏  举报
Live2D