局部搜索对平衡遗传算法的影响
布尔函数基础
布尔函数是一种从 $F_2^n$ 到 $F_2$ 的映射,它将每个 $n$ 位向量映射为单个输出位(0 或 1)。最常见的表示方法是通过真值表,假设 $F_2^n$ 中的向量按字典序排列,函数 $f$ 的真值表是一个 $2^n$ 位的向量:
$\Omega_f = (f(0, \cdots, 0), f(0, \cdots, 1), \cdots, f(1, \cdots, 1))$
在流密码中使用的布尔函数,其真值表必须是平衡字符串,即汉明重量 $w_H(f) = 2^{n - 1}$,以抵抗基本的统计攻击。
另一种在密码学中常用的唯一表示布尔函数的方法是沃尔什变换。形式上,函数 $f: F_2^n \to F_2$ 的沃尔什变换是一个映射 $W_f: F_2^n \to Z$,定义为:
$W_f(a) = \sum_{x \in F_2^n} (-1)^{f(x) \oplus a \cdot x} = \sum_{x \in F_2^n} (-1)^{f(x)} \cdot (-1)^{a \cdot x}$
系数 $W_f(a)$ 衡量了 $f$ 与由标量积 $a \cdot x$ 定义的线性函数之间的相关性。对称密码学中布尔函数的另一个重要属性是非线性度,定义为:
$nl(f) = 2^{n - 1} - \frac{1}{2} \max_{a \in F_2^n} {|W_f(a)|}$
综合考虑平衡性和非线性度,我们面临的优化问题是:
问题 1 :给定 $n \in N$,找到一个 $n$ 变量的