当前位置: 首页 > news >正文

大数据机器学习算法与计算机视觉应用04:多项式

The Algorithm Magic of Polynomial

  • Polynomials
  • The Root of Polynomial
  • A Delete Channel
  • Polynomials for Finding Maximum Matchings

Polynomials 多项式

一个 d d d 次多项式可以用一个 d + 1 d+1 d+1 元组 c i {c_i} ci 表达。在这种情况下,两个多项式相加的时间复杂度是 O ( d ) O(d) O(d) ,而两个多项式相乘的实践复杂度是 O ( d log ⁡ d ) O(d \log d) O(dlogd)

快速地估计一个多项式的值的方法:对应给定值b,循环执行将当前式子乘b,加下一项。这个方法叫做霍纳规则。流程如下:
c d c d × b + c d − 1 ( c d × b + c d − 1 ) × b + c d − 2 c_d c_d \times b + c_{d-1} (c_d \times b + c_{d-1}) \times b +c_{d-2} cdcd×b+cd1(cd×b+cd1)×b+cd2
该算法的时间复杂度是 O ( d ) O(d) O(d)

多项式的根

对于一个多项式 P ( x ) P(x) P(x),令 P ( x ) = 0 P(x)=0 P(x)=0 的值 x ′ x' x 被称作多项式的根。

根据代数基本定理,一个d次多项式一定有d个根。

Unique Reconstruction Theorem 唯一重构定理

唯一重构定理告诉我们,给定d个点 ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋱ , ( x d , y d ) (x_1,y_1),(x_2,y_2) \ddots, (x_d,y_d) (x1,y1),(x2,y2),(xd,yd), 总有一个多项式 P ( x ) P(x) P(x) 使得这些点都在多项式上。

事实上,唯一重构定理告诉我们如何构造这样一个多项式满足条件。
首先我们构造这样一组多项式 R i ( x ) R_i(x) Ri(x) 满足:
R i ( x i ) = 1 R i ( x j ) = 0 , j ≠ i R_i(x_i) = 1 R_i(x_j) = 0, j \neq i Ri(xi)=1Ri(xj)=0,j=i
结果如下:
Π j ≠ i ( x − x j ) Π j ≠ i ( x i − x j ) \quad{\Pi _{j\neq i}(x-x_j)}\over{\Pi _{j\neq i}(x_i-x_j)} Πj=i(xixj)Πj=i(xxj)
那么
P ( x ) = y 0 R 0 ( x ) + y 1 R 1 ( x ) + ⋯ + y d R d ( x ) P(x) = y_0 R_0(x) + y_1 R_1(x) + \cdots +y_d R_d(x) P(x)=y0R0(x)+y1R1(x)++ydRd(x)

举个例子:有三个点 ( 5 , 1 ) , ( 6 , 2 ) , ( 7 , 9 ) (5,1),(6,2),(7,9) (5,1),(6,2),(7,9),现在找出经过这三个点的多项式。
R 1 ( x ) = ( x − 6 ) ( x − 7 ) ( 5 − 6 ) ( 5 − 7 ) = 1 2 ( x 2 − 13 x + 42 ) R 2 ( x ) = ( x − 5 ) ( x − 7 ) ( 6 − 5 ) ( 6 − 7 ) = − 1 2 ( x 2 − 12 x + 35 ) R 3 ( x ) = ( x − 5 ) ( x − 6 ) ( 7 − 6 ) ( 7 − 5 ) = 1 2 ( x 2 − 11 x + 30 ) P ( x ) = R 1 ( x ) + 2 R 2 ( X ) + 9 R 3 ( x ) = 4 x 2 − 50 x + R_1(x) = \frac{(x-6)(x-7)}{(5-6)(5-7)} = \frac{1}{2} (x^2 -13x +42) R_2(x) = \frac{(x-5)(x-7)}{(6-5)(6-7)} = -\frac{1}{2} (x^2 -12x +35) R_3(x) = \frac{(x-5)(x-6)}{(7-6)(7-5)} = \frac{1}{2} (x^2 -11x +30) P(x) = R_1(x) + 2R_2(X) + 9R_3(x) = 4x^2-50x + R1(x)=(56)(57)(x6)(x7)=21(x213x+42)R2(x)=(65)(67)(x5)(x7)=21(x212x+35)R3(x)=(76)(75)(x5)(x6)=21(x211x+30)P(x)=R1(x)+2R2(X)+9R3(x)=4x250x+

A Deletion Channel 丢失频道

下面是另一个问题,假设在上面构造多项式的情景中,Alice要向Bob传d+1个数,但是在传输的过程中总会有k个数丢失,那么怎么才能保证Bob一定收的到这d+1个数呢?

一种很笨的方法是,将每个数据发送k+1次就可以了。但是这需要发送 d × ( k + 1 ) d\times (k+1) d×(k+1) 个数据,有没有更好的方法呢?

一种好方法是构造一个多项式 P ( x ) = Σ c i x i P(x) =\Sigma c_i x_i P(x)=Σcixi,然后发送 P ( 0 ) , P ( 1 ) , ⋱ , P ( d + k ) P(0),P(1),\ddots,P(d+k) P(0),P(1),,P(d+k),这样Bob至少可以收到d+1个多项式的值,根据唯一重构定理,Bob可以计算出这个多项式从而得出所有的c。
这种做法的时间复杂度是 O ( d + k + 1 ) O(d+k+1) O(d+k+1),比上面的做法少传输很多数据。(注意,不用担心乱序的问题,因为是一个一个传的,而如果出错会传乱码而不是什么也不做)。

General Error Correction 误码纠错

假设现在不是传输丢失,而是传输一个错误的数字,那么在同样的背景下,需要进行怎样的传输呢?

很明显,答案是需要传输 d + 2 k + 1 d+2k+1 d+2k+1个数字,其中 d + k + 1 d+k+1 d+k+1是正确的多项式的值。因为 k + 1 > k k+1>k k+1>k,所以我们从理论上确认了Bob可以通过这种方式找到正确的多项式。

那么实际上应该怎么找到那个正确的多项式呢?

假设Bob收到的数据是 r 0 , r 1 , ⋱ , r d + 2 k r_0,r_1,\ddots,r_{d+2k} r0,r1,,rd+2k,Z是其中错误信息的集合,那么我们声明一个错误项多项式
E ( x ) = Π i ∈ Z ( x − i ) E(x) = \Pi_{i\in Z}(x-i) E(x)=ΠiZ(xi)
那么对于Bob收到的所有项都满足以下等式,因为要么 E ( x ) = 0 E(x)=0 E(x)=0,要么 P ( x ) = r x P(x) = r_x P(x)=rx
P ( x ) ⋅ E ( x ) = r x ⋅ E ( x ) P(x)\cdot E(x) = r_x \cdot E(x) P(x)E(x)=rxE(x)

Berlekamp-Welch Algorithm BW算法

BW算法是一种用于误码纠错的算法,其运行规律基于上文所述,我们假设
E ( x ) = x k + e k − 1 x k − 1 + ⋯ + e 0 ( i f d e g r e e ( E ( x ) ) i s k ) P ( x ) ⋅ E ( x ) = f d + k x d + k + f d + k − 1 x d + k − 1 + ⋯ + f 0 E(x) = x^k +e_{k-1}x^{k-1} + \cdots + e_0 (if degree(E(x)) is k) P(x) \cdot E(x) = f_{d+k}x^{d+k} + f_{d+k-1}x^{d+k-1} + \cdots + f_0 E(x)=xk+ek1xk1++e0(ifdegree(E(x))isk)P(x)E(x)=fd+kxd+k+fd+k1xd+k1++f0
这种情况下,我们分别将 x = 0 , 1 , ⋯ , d + 2 k x = 0,1,\cdots, d+2k x=0,1,,d+2k带入方程
P ( x ) ⋅ E ( x ) = r x ⋅ E ( x ) P(x) \cdot E(x) = r_x \cdot E(x) P(x)E(x)=rxE(x)
左边是一堆参数f相加,右边是一堆e相加,f和e未知数的总和是d+2k+1个,而带入d+2k+1个x的值对应d+2k+1个方程,而且方程必定有解,因此就可以解出所有的e和f。

已知 P ( x ) ⋅ E ( x ) P(x) \cdot E(x) P(x)E(x) E ( x ) E(x) E(x) ,相除就可以求出 P ( x ) P(x) P(x)

Polynomials for Finding Maximum Matching 多项式在最大匹配中的应用

Schwarz-Zippel Lemma Schwarz-Zippel 引理

这个引理的内容是:假设 P P P是一个非零 m m m d d d次多项式,假设 S S S是有限域 F F F的一个子集。如果从 S S S中随机抽取 m m m个数 x 1 , x 2 , ⋯ , x m {x_1,x_2,\cdots,x_m} x1,x2,,xm,那么
P r [ P ( x 1 , ⋯ , x m ) = 0 ] ≤ d ∣ S ∣ Pr[P(x_1,\cdots,x_m)=0] \leq \frac{d}{|S|} Pr[P(x1,,xm)=0]Sd
健全性检查:当 m = 1 m=1 m=1时,因为d次多项式最多有 d d d个根,因此概率很明显就是 d ∣ S ∣ \frac{d}{|S|} Sd

这个引理可以用来解决下文提到的图的匹配问题。

Tutte Matrix

每个顶点数 v v v的简单无向图都对应一个Tutte Matrix M ( G ) M(G) M(G),简单来说如图所示:
Tutte Matrix

Tutte Determinant Theorem Tutte行列式定理

一个图有完美匹配当且仅当 M ( G ) M(G) M(G)的行列式不是零多项式。
(注:匹配指的找到图中一组边集,其中任意两条边都没有公共点。如果这组边集包括了图中所有的顶点,那么就说该匹配是完美匹配。)

那么剩下的就是选取 F F F的大小了, F F F的基数越大,这张图有完美匹配的概率就越高。

Finding a Perfect Matching

上面我们知道了有完美匹配的概率,但是我们如何找到一个完美匹配呢?下面是一个方法:

对于每个边,将图中的该边删去,判断剩下的图中是否还存在完美匹配。如果没有完美匹配,那么将该边加回来;否则丢弃该边。
最后一定剩下 V 2 \frac{V}{2} 2V条边,这些边就是一个完美匹配。


http://www.mrgr.cn/news/70044.html

相关文章:

  • 智慧医疗:纹理特征VS卷积特征
  • 浔川 AI 翻译 v5.0 已在进行内部测试!— 浔川社团官方联合会
  • fragment的动态调用方法
  • Trimble X12三维激光扫描仪正在改变游戏规则【上海沪敖3D】
  • 【3-4个月检索|IEEE出版|往届均已EI检索|悉尼/郑州双会场】2024年第四届数字化社会与智能系统国际学术会议(DSInS 2024)
  • vue-h5:在h5中实现相机拍照加上身份证人相框和国徽框
  • Qt|绘制100万个图元大规模场景
  • 项目功能--运营数据统计报表导出
  • MFC工控项目实例二十九主对话框调用子对话框设定参数值
  • c++ floyd判圈算法
  • Spring中@Autowired@Resource和@Inject注解区别
  • 【Java集合面试1】说说Java中的HashMap原理?
  • int socket(int domain,int type,int protocol);
  • 力扣第47题“全排列 II”
  • 中国智能网联汽车技术规程(C-ICAP-2024版)之基础行车辅助测试介绍及文档分享24年7月1号实施
  • 嵌入式linux中HDMI驱动操作方法
  • 前端面试题23 | 使用require和import引入的资源有什么区别?
  • 连锁会员管理系统开发的必要性
  • 【计网】基于TCP协议的Echo Server程序实现与多版本测试
  • MatSci-LLM ——潜力和挑战以及大规模语言模型在材料科学中的应用
  • CNN中每一层的权重是一样的么?
  • STM32的端口引脚的复用功能及重映射功能解析
  • 【数据结构】交换排序——冒泡排序 和 快速排序
  • 设计模式之责任链模式(Chain Of Responsibility)
  • Python——数列1/2,2/3,3/4,···,n/(n+1)···的一般项为Xn=n/(n+1),当n—>∞时,判断数列{Xn}是否收敛
  • 距离向量路由选择协议和链路状态路由选择协议介绍