随机探测

概述

  • 随机探测通过用随机的探针测试某个黑箱,来获得该黑箱高度可能的状态。

  • 太抽象?没关系。就来例题。

例题

测素

  • 给定一个数,判断它是否是质数。

  • 我们知道,由费马小定理,\(p\) 是质数是 \(\forall x<p,x^{p-1}=1\) 的充分条件。

  • 尽管这不必要,但事实上我们可以期望 \(\forall x<p,x^{p-1}=1\) 却又不是质数的 \(p\) 极少,极稀疏。

  • 考虑用它来测素。这个命题很好,但枚举 \(\forall x<p\) 显然无法接受。考虑枚举一部分 \(x\) 来做检测,更进一步地,可以考虑枚举 \(<p\) 的质数。

  • 实践中,只使用前 \(8\) 个质数(\(2,3,5,7,11,13,17,19\))在 \(9\times 10^{18}\) 范围内只有一个数字会判错,可以 \(O(\log)\) 地判断一个数字是否极可能是一个质数。

  • 如果真的判错了怎么办?无所谓。如果判错了,那么该数字虽然不是质数,但是,它具有极高的素性,可以“充当一个质数”来使用,在绝大部分情况下也没问题。

  • 更有效的办法就是 Miller-Rabin 测素,它也是典型的随机探测。

darkbzoj 2396/51Nod 1140 神奇的矩阵

  • 题意:给定三个 \(n\times n\) 的矩阵 \(A,B,C\),请判断 \(A\times B=C\) 是否成立。

  • 数据范围:\(T\leqslant 5,n\leqslant 10^3,v_{i,j}\leqslant 10^3\)

  • 暴力做肯定 T 了,毕竟 \(5\times 10^9\) 如果 \(1s\) 过了我们怕不是在 \(2077\) 年。

  • 我会构造探针!随机构造一个 \(1\times n\) 的矩阵 \(rnd\) 作为探针,于是只要判断 \(rnd\times A\times B=rnd\times C\) 是否成立即可。

  • 复杂度骤降至单次探测 \(n^2\),计算可得 \(times=10\)(考虑常数后的结果)。正确率不会证,但显然够了。

  • p.s.darkbzoj 上这道题炸了,不过可以下数据自测。

P1224 [NOI2013] 向量内积

  • 没有完全理解,等一段时间。

  • 23.1.15 upd:等得太久了,已经忘了。无限期推迟直到我再度修缮本篇,届时大概会考虑把这道题重新理一理。事实上,如 Quare 的“立马补了笔记”反而是不常见的。

posted @ 2023-01-15 10:26  未欣  阅读(39)  评论(0编辑  收藏  举报