【Applied Algebra】求解布尔方程(Boolean Equations)的4个高效baseline算法

介绍求解布尔方程的四种高效基线算法:BCS算法、Groebner基算法、转SAT算法及FESLib库,涵盖代数消元、多项式理想构造、问题变换等方法。

求解布尔方程(Boolean Equations)的4个高效baseline算法


求解布尔方程(Boolean Equations)是理论计算机中的基本问题之一;事实上,求解 F q \mathbb{F}_q Fq n n n个变量的 m m m个非线性多项式方程组是一个基础的数学问题,受到了包括密码学界在内的各个理论计算机研究方向的广泛关注;众所周知,AI领域的计算机视觉和自然语言处理就有许多具体任务(比如人脸识别,语义分割)的baselines(也就是提供参考对比的基线模型/算法),那么自然研究求解布尔方程也有对应的baselines,今天我们就介绍当前最佳的4个高效baseline算法.

在这里插入图片描述

布尔方程组求解问题(Boolean PoSSo (polynomial system solving) Problem):给定一组布尔多项式 F \mathcal{F} F:

{ f 1 , f 2 , … , f m } ⊆ R 2 \{f_{1}, f_{2}, \ldots, f_{m}\} \subseteq \mathcal{R}_{2} { f1,f2,,fm}R2

目标是找到解 ( x 1 , … , x n ) ∈ F 2 n (x_{1}, \ldots, x_{n}) \in \mathbb{F}_{2}^{n} (x1,,xn)F2n 对于 ∀ f i ∈ F \forall f_{i} \in \mathcal{F} fiF, 满足 f i ( x 1 , … , x n ) = 0 f_{i}(x_{1}, \ldots, x_{n})=0 fi(x1,,xn)=0. 其中:

R 2 = F 2 [ x 1 , … , x n ] / ⟨ x 1 2 + x 1 , x 2 2 + x 2 , ⋯   , x n 2 + x n ⟩ \mathcal{R}_{2}=\mathbb{F}_{2}[x_{1}, \ldots, x_{n}] / \langle x_{1}^{2}+x_{1}, x_{2}^{2}+x_{2}, \cdots, x_{n}^{2}+x_{n}\rangle R2=F2[x1,,xn]/x12+x1,x22+x2,,xn2+xn

它限定了每个变元的取值也在 F 2 \mathbb{F}_{2} F2 上;


算法分类

布尔方程组求解问题和计算机科学里的许多其他 NP-hard 问题都有联系(比如SAT问题,MILP整数规划问题等等);因此求解思路大致分为搜索求解,代数方法求解,问题变换求解三种基本思路,按照这样的划分,本文要介绍以下4种baseline算法:

  • BCS算法(Boolean Characteristic Set Algorithm)[1]:基于经典代数消元方法吴消元法的求解算法;
  • Groebner基算法[2]:基于多项式理想构造算法Groebner Basis的求解算法(基于SAGE V9.2的Polybori库实现);
  • FESLib库(Fast Exhaustive Search Algorithm)[3]:基于分治+解空间搜索的求解算法(复杂度是指数级别 O ( d ⋅ 2 n ) \mathcal{O}(d \cdot 2^n) O(d2n));
  • 转SAT算法(Boolean Equations to SAT Algorithm)[4]:将布尔方程组问题转化为等价的SAT问题再使用SAT求解器求解的算法(基于Cryptominisat实现);

在本文中,我们主要侧重实现(所有代码均在Linux下编译实现),理论部分可以详见参考文献(如有需要,我会另外写博客来分别介绍这4篇工作的技术细节部分);


BCS算法(Boolean Characteristic Set Algorithm)

BCS算法 [1] 虽然基于吴消元法计算特征列,但是巧妙利用了布尔多项式的加法特点,克服了原方法里多项式膨胀的问题:

R 2 \mathcal{R}_{2} R2 中做拟除 Pesudo-division: 利用多项式 P 1 = I 1 x C + R 1 P_{1}=I_{1} x_{C}+R_{1} P1=I1xC+R1 去消元 P 2 = I 2 x c + R 2 P_{2}=I_{2} x_{c}+R_{2} P2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值