1.6. Nonlinearity của hàm boolean

1.6.1. Biến đổi Fourier

Với mỗi vector \(\bm{a} = (a_1, \ldots, a_n) \in \mathbb{F}_2^n\), ta kí hiệu \(\langle \bm{a}, \bm{x} \rangle\) là hàm sau:

(1.7)\[\langle \bm{a}, \bm{x} \rangle = a_1 x_1 \oplus a_2 x_2 \oplus \ldots \oplus a_n x_n.\]

Mỗi hàm boolean \(f(\bm{x}) = f(x_1, x_2, \ldots, x_n)\) sẽ được biểu diễn dưới dạng duy nhất với

(1.8)\[f(\bm{x}) = 2^{-n} \sum_{\bm{a} \in \mathbb{F}_2^n} F_f (\bm{a}) \cdot (-1)^{\langle \bm{a}, \bm{x} \rangle},\]

trong đó

(1.9)\[F_f (\bm{a}) = \sum_{\bm{x} \in \mathbb{F}_2^n} f(\bm{x}) \cdot (-1)^{\langle \bm{a}, \bm{x} \rangle}.\]

Khi đó, tập hợp \(\{F_f (\bm{a}), \bm{a} \in \mathbb{F}_2^n \}\) được gọi là phổ Fourier (hay spectre Fourier) của hàm boolean \(f\).

Chú ý 1.22

Đầu tiên ta có nhận xét rằng, với vector \(\bm{z}\) cố định thì

(1.10)\[\begin{split}\sum_{\bm{a} \in \mathbb{F}_2^n} (-1)^{\langle \bm{a}, \bm{z} \rangle} = \begin{cases} 0, \quad & \text{nếu } \bm{z} \neq \bm{0} \\ 2^n, \quad & \text{nếu } \bm{z} = \bm{0}. \end{cases}\end{split}\]

Đẳng thức (1.10) đã được chứng minh. Ta quay lại bài toán.

Ví dụ 1.47

Xét hàm boolean \(f(x_1, x_2) = (1, 0, 0, 1)\).

Xét \(\bm{a} = (0, 0)\). Ta có:

Với \(\bm{x} = (0, 0)\),

\[f(\bm{x}) = 1, \ \langle \bm{a}, \bm{x} \rangle = 0 \cdot 0 + 0 \cdot 0 = 0.\]

Với \(\bm{x} = (0, 1)\),

\[f(\bm{x}) = 0, \langle \bm{a}, \bm{x} \rangle = 0 \cdot 0 + 0 \cdot 1 = 0.\]

Với \(\bm{x} = (1, 0)\),

\[f(\bm{x}) = 0, \langle \bm{a}, \bm{x} \rangle = 0 \cdot 1 + 0 \cdot 0 = 0.\]

Với \(\bm{x} = (1, 1)\),

\[f(\bm{x}) = 1, \langle \bm{a}, \bm{x} \rangle = 0 \cdot 1 + 0 \cdot 1 = 0.\]

Ta suy ra

\[F_f (\bm{a}) = 1 \cdot (-1)^0 + 0 \cdot (-1)^0 + 0 \cdot (-1)^0 + 1 \cdot (-1)^0 = 2\]

khi \(\bm{a} = (0, 0)\).

Tương tự, ta có các giá trị \(F_f (\bm{a})\) sau:

  • với \(\bm{a} = (0, 1)\), \(F_f (\bm{a}) = F_f (0, 1) = 0\);

  • với \(\bm{a} = (1, 0)\), \(F_f (\bm{a}) = F_f (1, 0) = 0\);

  • với \(\bm{a} = (1, 1)\), \(F_f (\bm{a}) = F_f (1, 1) = 2\).

Bây giờ ta đã có đủ \(F_f(\bm{a})\) với \(\bm{a} \in \mathbb{F}_2^2\) nên ta có thể kiểm chứng với mọi \(\bm{x} \in \mathbb{F}_2^2\) thỏa công thức (1.8).

1.6.2. Biến đổi Walsh-Hadamard

Với mỗi hàm boolean \(f(x_1, x_2, \ldots, x_n) = f(\bm{x})\) ta định nghĩa một hàm tương ứng như sau:

\[f^*(\bm{x}) = (-1)^{f(\bm{x})}.\]

Ta định nghĩa \(\langle \bm{a}, \bm{x} \rangle\) như trên.

Khi đó hàm \(f^*(\bm{x})\) sẽ có dạng

(1.11)\[f^*(\bm{x}) = 2^{-n} \sum_{\bm{a} \in \mathbb{F}_2^n} W_f (\bm{a}) (-1)^{\langle \bm{a}, \bm{x} \rangle},\]

trong đó

(1.12)\[W_f (\bm{a}) = \sum_{\bm{x} \in \mathbb{F}_2^n} (-1)^{f(\bm{x}) \oplus \langle \bm{a}, \bm{x} \rangle}.\]

Tập hợp \(\{ W_f (\bm{a}), \bm{a} \in \mathbb{F}_2^n \}\) được gọi là phổ Walsh (hay spectre Walsh) của hàm \(f(\bm{x})\).

Các giá trị \(W_f (\bm{a})\) được gọi là hệ số Walsh.

Các hệ số Walsh liên hệ với nhau bởi công thức

\[\begin{split}\sum_{\bm{a} \in \mathbb{F}_2^n} W_f (\bm{a}) W_f (\bm{a} \oplus \bm{d}) = \begin{cases} 2^{2n}, & \bm{d} = \bm{0} \\ 0, & \bm{d} \neq \bm{0}. \end{cases}\end{split}\]

Trường hợp \(\bm{d} = \bm{0}\) được gọi là đẳng thức Parcel:

\[\sum_{\bm{a} \in \mathbb{F}_2^n} (W_f (\bm{a}))^2 = 2^{2n}.\]

1.6.3. Tính chất của biến đổi Walsh-Hadamard

  1. \(W_f(\bm{0}) = 2^n - 2 \mathrm{wt} (f)\), và \(W_f(\bm{0}) = 0\) khi và chỉ khi \(f\) là hàm cân bằng.

  2. Nếu \(g = \bar{f}\) thì \(W_g(\bm{a}) = -W_f(\bm{a})\) với mọi \(\bm{a} \in \mathbb{F}_2^n\).

  3. Nếu \(g(\bm{x}) = f(\bm{x} \oplus \bm{b})\) với vector \(\bm{b}\) nào đó, thì

\[\begin{split}W_g(\bm{a}) & = \sum_x (-1)^{f(\bm{x} \oplus \bm{b}) \oplus \langle \bm{a}, \bm{x} \rangle} \\ & = \sum_x (-1)^{f(\bm{x}) \oplus \langle \bm{a}, \bm{x} \oplus \bm{b} \rangle} \\ & = (-1)^{\langle \bm{a}, \bm{b} \rangle} W_f(\bm{a}).\end{split}\]
  1. Đặt \(f \in \mathcal{F}_n\), \(\bm{b} \in \mathbb{F}_2^n\), \(g(\bm{x}) = f(\bm{x}) \oplus \langle \bm{b}, \bm{x} \rangle\). Khi đó

\[\begin{split}W_g(\bm{a}) & = \sum_x (-1)^{f(\bm{x}) \oplus \langle \bm{b}, \bm{x} \rangle \oplus \langle \bm{a}, \bm{x} \rangle} \\ & = \sum_x (-1)^{f(\bm{x}) \oplus \langle \bm{b} \oplus \bm{a}, \bm{x} \rangle} \\ & = W_f(\bm{b} \oplus \bm{a}).\end{split}\]
  1. Đặt \(f(\bm{x}) = c\) là hằng số. Hàm \(c \oplus \langle \bm{a}, \bm{x} \rangle\) là hàm tuyến tính với mọi \(\bm{a} \neq \bm{0}\). Hệ quả là \(W_f(\bm{a}) = 0\) với mọi vector \(\bm{a}\) khác không, trừ khi

\[\begin{split} W_f(\bm{0}) = 2^n - 2 \mathrm{wt} (f) = \begin{cases} - 2^n, & \, \text{nếu} \, c = 1, \\ \quad 2^n, & \, \text{nếu} \, c = 0. \end{cases}\end{split}\]
  1. Đặt \(f(\bm{x}) = c \oplus \langle \bm{b}, \bm{x} \rangle\) là hàm affine. Khi đó, theo tính chất 4 và 5 suy ra \(W_f(\bm{a}) = 0\) với mọi \(\bm{a} \neq \bm{0}\), và \(W_f(\bm{b}) = (-1)^c \cdot 2^n\).

  2. Đặt \(f(\bm{x}, \bm{y}) = g(\bm{x}) \oplus h(\bm{y})\) với \(g \in \mathcal{F}_n\)\(h \in \mathcal{F}_m\) và hai tập hợp biến \(\bm{x}\)\(\bm{y}\) không giao nhau. Nói cách khác \(f\) là hàm boolean \(n+m\) biến. Khi đó với mọi \(\bm{a} \in \mathbb{F}_2^n\)\(\bm{b} \in \mathbb{F}_2^n\) thì

\[\begin{split}W_f(\bm{a} \bm{b}) & = \sum_{\bm{x}, \bm{y}} (-1)^{g(\bm{x}) \oplus h(\bm{y}) \oplus \langle \bm{a}, \bm{x} \rangle \oplus \langle \bm{b}, \bm{y} \rangle} \\ & = \sum_{\bm{x}} (-1)^{g(\bm{x}) \oplus \langle \bm{a}, \bm{x} \rangle} \sum_{\bm{y}} (-1)^{h(\bm{y}) \oplus \langle \bm{b}, \bm{y} \rangle} \\ & = W_g(\bm{a}) \cdot W_h(\bm{b}).\end{split}\]
  1. Đặt \(f(x_1, \ldots, x_n)\) giả phụ thuộc vào biến \(x_i\). Khi đó \(W_f(\bm{a}) = 0\) với mọi vector \(\bm{a}\)\(a_i = 1\).

Nói cách khác, nếu đặt \(\bm{x}' = (x_1, \ldots, x_{i-1}, x_{i+1}, \ldots, x_n)\)\(\bm{a}' = (a_1, \ldots, a_{i-1}, a_{i+1}, \ldots, a_n)\) và để ý rằng \(\langle \bm{a}, \bm{x} \rangle = \langle \bm{a}', \bm{x}' \rangle \oplus a_i x_i\). Khi đó nếu \(a_i = 1\) thì

\[\begin{split}W_f(\bm{a}) & = \sum_{\bm{x}} (-1)^{f(\bm{x}) \oplus \langle \bm{a}, \bm{x} \rangle} \\ & = \sum_{\substack{\bm{x}, \\ x_i = 0}} (-1)^{f(\bm{x}) \oplus \langle \bm{a}', \bm{x}' \rangle} + \sum_{\substack{\bm{x}, \\ x_i = 1}} (-1)^{f(\bm{x}) \oplus \langle \bm{a}', \bm{x}' \rangle \oplus 1} = 0.\end{split}\]

Nếu \(f\)\(g\) là hai hàm Boolean tương đương affine thì tập hợp giá trị tuyệt đối của tất cả phổ Hadamard của hai hàm trùng nhau.

1.6.4. Liên hệ giữa hệ số Fourier và hệ số Walsh

Chú ý 1.23

Quan hệ giữa hệ số Fourier và hệ số Walsh là biểu thức sau

\[W_f (\bm{a}) = 2^n \Delta (\bm{a}) - 2 F_f (\bm{a})\]

với

\[\begin{split}\Delta (\bm{a}) = \begin{cases} 1, \quad \text{nếu } \bm{a} = \bm{0} \\ 0, \quad \text{nếu } \bm{a} \neq \bm{0}. \end{cases}\end{split}\]

Chú ý 1.24

Khi \(\bm{a} = \bm{0}\) thì với mọi \(\bm{x} \in \mathbb{F}_2^n\) ta đều có \(\langle \bm{a}, \bm{x} \rangle = 0\). Do đó

\[F_f (\bm{0}) = \sum_{\bm{x} \in \mathbb{F}_2^n} f(\bm{x}) (-1)^{\langle \bm{a}, \bm{x} \rangle} = \sum_{\bm{x} \in \mathbb{F}_2^n} f(\bm{x}) (-1)^0 = \mathrm{wt}(f),\]

suy ra

(1.13)\[W_f (\bm{0}) = 2^n - 2 wt(f) \Leftrightarrow wt(f) = 2^{n-1} - \frac{1}{2} W_f (\bm{0}).\]

1.6.5. Hàm Bent

Ta kí hiệu \(\mathcal{A}\) là tập hợp tất cả các hàm boolean affine với \(n\) biến, nghĩa là

\[\mathcal{A} = \{ a_0 \oplus a_1 x_1 \oplus \cdots \oplus a_n x_n \, | \, a_0, a_1, \ldots, a_n \in \mathbb{F}_2 \}.\]

Định nghĩa 1.75 (Nonlinearity của hàm boolean)

Nonlinearity của hàm boolean \(f\) bất kì được định nghĩa là khoảng cách Hamming từ \(f\) tới \(\mathcal{A}\), hay nói cách khác \(N_f = d(f, \mathcal{A})\).

Chú ý 1.25

Xét hàm \(f\) với \(n\) biến và phổ Walsh tương ứng của hàm \(f\)\(\{ W_f (\bm{a}), \bm{a} \in \mathbb{F}_2^n \}\). Khi đó

(1.14)\[N_f = 2^{n-1} - \frac{1}{2} \max_{\bm{a} \in \mathbb{F}_2^n} \lvert W_f (\bm{a}) \rvert.\]

Chú ý 1.26

Từ đẳng thức Parcel ta có

\[\begin{split}& 2^n \cdot \left(\max_{\bm{a} \in \mathbb{F}_2^n} (W_f (\bm{a}))^2\right) \geqslant \sum_{\bm{a} \in \mathbb{F}_2^n} (W_f (\bm{a}))^2 = 2^{2n} \\ \Leftrightarrow & \max_{\bm{a} \in \mathbb{F}_2^n} (W_f (\bm{a}))^2 \geqslant \frac{2^{2n}}{2^n} = 2^n \\ \Leftrightarrow & \max_{\bm{a} \in \mathbb{F}_2^n} \lvert W_f (\bm{a}) \rvert \geqslant 2^{n/2}.\end{split}\]

Từ nhận xét trên và từ định nghĩa nonlinearity ở trên ta có

\[N_f \leqslant 2^{n-1} - \frac{1}{2} 2^{n / 2}.\]

Hàm \(f\) khiến dấu bằng xảy ra được gọi là hàm Bent. Điều kiện cần và đủ để tồn tại hàm Bent \(f\)\(n\) biến là khi \(n = 2k\), tức là \(n\) chẵn.

Tính chất quan trọng của hàm Bent là với mọi vector \(\bm{a}\) thì

\[W_f (\bm{a}) = \pm 2^{n/2}.\]

Ví dụ 1.48

Với \(n = 2\), hàm \(f(x_1, x_2) = x_1 \oplus x_1 x_2\) là hàm Bent.

Ta có thể tính toán và thấy rằng \(W_f (0, 0) = 2\), \(W_f (0, 1) = -2\), \(W_f (1, 0) = 2\)\(W_f (1, 1) = 2\).