程序设计实习 note

对于矩阵 A,B,C 判断是否有 AB=C :随机一个行向量 x 然后看 xAB 是否 等于 xC 。正确率约为 1


通过少量查询得到近似的中位数:如果要求排名误差在 2an 以内,只需要 O(1a2) 次查询就可以做到很高的概率。


1-median:

给定 k 维空间的若干点 A1,A2,,An ,要求预处理之后高效进行查询:查询每次给定 B ,求 dis(B,Ai) 。可以求近似解。

如果存在一个点 P 和一个常数 c 满足 i,dis(Ai,P)[c,2c] ,那考虑以下算法:

直接在 n 个点里随 m 个取出来记为 C1,C2,,Cm,估计答案为 nmdis(B,Ci) 即可。道理在哪儿呢,考虑令 Xi=dis(Ai,B) ,根据三角形不等式有 X 极差 4c

Hoeffding inequality:

设独立随机变量 X1,X2,,Xm[s,t]X:=Xi ,则 Pr[XE[X]z]2exp(2z2m(ts)2)

看一下式子就可以发现:常数个 m 就能使误差极大概率控制在 ϵnc 以内。

具体的,需要 1δ 的正确率时我们取 m=O(1ϵ2log(1δ))

看来误差的分析是跟每次查询的点关系不大的,无论查询如何,我们都能将误差控制在 ϵnc ,也即 ϵdis(Ai,P) 内。

考虑一般的情况,考虑按 dis(Ai,P) 倍增分块,将这些点分成 log2V 层即可,我们仍然把误差控制在了 ϵdis(Ai,P) 内。

看来,只需要选取合理的中心点 P 即可。

我们并不需要让 dis(Ai,P) 严格最小:在最优值的常数倍以内都是能接受的。

直接在给出的点里随几个点,取最优的即可。

理由考虑计算这样随,dis(Ai,P) 的期望,是不超过 2 倍的最优值的。


Count-min Sketch

先看这样一个问题:输入 N[n] 上的整数,结束后给定 i ,(近似)回答 i 出现次数。

Count-min Sketch 支持用 polylognϵ 的空间复杂度,查询、插入时间复杂度亦为 polylognϵ ,做到:估计值 C 和正式值 C 之间满足 CCC+ϵN

考虑哈希,找一个哈希函数 h:[n][m] ,我们开个大小为 m 的桶 t ,算 i 出现次数就看 th(i) 即可。如果哈希函数足够均匀随机那容易分析出来 E[C]C+nm

Markov inequality:

若随机变量 X0 ,则 Pr(Xa)E[x]a

X=CC 用这个定理,就可以得到 Pr(Xnϵ)1mϵ

看来取 m=2ϵ 就有 12 的成功率了。

O(logn) 个哈希函数,把求得的 Cmin ,成功率就非常高了。

posted @   grass8woc  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示