2.1. Hàm boolean

2.1.1. Algebraic Normal Form

Đặt \(f(\bm{x})\) là hàm boolean \(n\) biến. Với số \(m \leqslant n\) thì

\[\begin{split}f(x_1, \ldots, x_n) = \bigoplus_{a_1, \ldots, a_m \in \mathbb{F}_2} & (x_1 \oplus a_1 \oplus 1) \times \cdots \times \\ \times & (x_m \oplus a_m \oplus 1) \cdot f(a_1, \ldots, a_m, x_{m+1}, \ldots, x_n)\end{split}\]

Khi đó, \(f(a_1, \ldots, a_m, x_{m+1}, \ldots, x_m)\) được gọi là hệ số khai triển của hàm \(f\) theo các biến \(x_1\), ..., \(x_m\).

Ví dụ 2.6

Xét \(f(x_1, x_2) = x_1 x_2 \oplus 1\). Với \(m = 1\), ta có

\[\begin{split}a_1 = 0 & \Rightarrow (x_1 \oplus 0 \oplus 1) \cdot f(0, x_2) = (x_1 \oplus 1) \cdot 1 = x_1 \oplus 1, \\ a_1 = 1 & \Rightarrow (x_1 \oplus 1 \oplus 1) \cdot f(1, x_2) = x_1 \oplus (x_2 \oplus 1).\end{split}\]

Như vậy

\[f(x_1, x_2) = (x_1 \oplus 1) \oplus \left(x_1 \cdot (x_2 \oplus 1)\right).\]

Nếu khai triển vế phải ra chúng ta thấy bằng với hàm \(f\) ban đầu.

Tương ứng với \(m\) biến ta có \(2^m\) hệ số khai triển.

Đặt \(f_1\), ..., \(f_{2^m}\) là các hệ số khai triển hàm \(f\) theo \(m\) biến bất kì. Khi đó

(2.3)\[\mathrm{wt}(f) = \sum_{i=1}^{2^m} \mathrm{wt} (f_i).\]

Định nghĩa 2.24 (Algebraic Normal Form)

Với hàm boolean \(n\) biến \(f(x_1, x_2, \ldots, x_n)\), algrebaric normal form (hay ANF, dạng chuẩn tắc đại số, алгебраическая нормальная форма) tương ứng với hàm bool đó là cách biểu diễn đa thức đó dưới dạng tổng các tích như sau

\[f(x_1, x_2, \ldots, x_n) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_1 x_2 \oplus \ldots \oplus a_k x_1 x_2 \ldots x_n\]

với \(a_i \in \{ 0, 1 \}\).

Ta thấy rằng có \(n\) biến, do đó có \(2^n\) hệ số \(a_i\) với mỗi \(i = 0, 1, \ldots, 2^n-1\).

Trong các tài liệu tiếng Nga thì ANF còn được gọi là đa thức Zhegalkin (hay полином Жегалкина)

Định nghĩa 2.25 (Bậc của đa thức Zhegalkin)

Tương tự như bậc của một đa thức đại số thông thường, bậc của đa thức Zhegalkin là bậc của đơn thức chứa nhiều biến \(x_i\) nhất. Kí hiệu là \(\deg(f)\).

Ví dụ 2.7

Xét hàm boolean \(f(x, y, z) = 1 \oplus x \oplus yz \oplus xyz\). Khi đó \(\deg(f) = 3\) vì đơn thức chứa nhiều biến nhất là \(xyz\)\(3\) đơn thức.

Xét hàm boolean \(f(x, y, z) = 1 \oplus z \oplus zy \oplus xy\). Khi đó \(\deg(f) = 2\) vì đơn thức chứa nhiều biến nhất là \(zy\) (cũng có thể xét \(xy\)).

Định nghĩa 2.26 (Trọng số của hàm boolean)

Trọng số (hay weight, вес) của hàm boolean \(n\) biến \(f(x_1, x_2, \ldots, x_n)\) là số lượng giá trị khác \(0\) của hàm \(f\).

Kí hiệu là \(\mathrm{wt}(f)\).

Ví dụ 2.8

Hàm boolean \(f(x, y) = (0, 1, 0, 1)\) có trọng số \(\mathrm{wt}(f) = 2\).

Hàm boolean \(f(x, y, z) = (1, 0, 1, 1, 1, 0, 0, 1)\) có trọng số \(\mathrm{wt}(f) = 5\).

Tính chất 2.2 (Một số tính chất của trọng số)

Gọi \(f\) là hàm boolean \(n\) biến. Khi đó:

  1. \(0 \leqslant \mathrm{wt}(f) \leqslant 2^n\).

  2. \(\mathrm{wt}(f \oplus \bm{1}) = 2^n - \mathrm{wt}(f)\).

  3. Nếu \(h\) cũng là một hàm boolean \(n\) biến thì

\[\mathrm{wt}(f \oplus h) = \mathrm{wt}(f) + \mathrm{wt}(h) - 2 \mathrm{wt}(fh).\]
  1. \(\mathrm{wt}(f)\) nhận giá trị lẻ khi và chỉ khi \(\deg(f) = n\).

Định nghĩa 2.27 (Hàm boolean cân bằng)

Nếu hàm boolean \(n\) biến \(f\) có trọng số bằng \(2^{n-1}\) thì \(f\) được gọi là hàm boolean cân bằng (hay balanced, сбалансированная).

Nhận xét 2.8

Ta nói hàm boolean \(g\) giả phụ thuộc vào biến \(y\) nếu \(g(x_1, \ldots, x_n, y) = f(x_1, \ldots x_n)\). Khi đó \(\mathrm{wt} (g) = 2 \mathrm{wt} (f)\).

Nhận xét 2.9

Đặt \(f(x_1, \ldots, x_n)\)\(g(y_1, \ldots, y_m)\) là các hàm boolean phụ thuộc vào tập các biến không giao nhau. Khi đó:

  1. Nếu \(f\)\(g\) là các hàm số khác hằng \(1\) thì \(f \cdot g\) không là hàm cân bằng.

  2. \(f\) hoặc \(g\) cân bằng khi và chỉ khi \(f \oplus g\) cân bằng.

Đặt

(2.4)\[f(x_1, \ldots, x_n) = \bigoplus_{a_1, \ldots, a_n \in \mathbb{F}_2} g(a_1, \ldots, a_n) \cdot x_1^{a_1} \cdots x_n^{a_n}.\]

Hàm \(g\) khi đó được gọi là hệ số ANF của hàm \(f\).

Ánh xạ \(\mu(f) = g\) được gọi là biến đổi Mobius (hay преобразование Мёбиуса).

Ví dụ 2.9

Cho hàm bool \(f(x, y) = x \vee y\). Ta có bảng chân trị sau.

\(x\)

\(y\)

\(f(x, y)\)

\(0\)

\(0\)

\(0\)

\(0\)

\(1\)

\(1\)

\(1\)

\(0\)

\(1\)

\(1\)

\(1\)

\(1\)

Bảng chân trị này tương đương với đa thức Zhegalkin

\[f(x, y) = x \oplus y \oplus xy.\]

ANF ở ví dụ trên có thể được viết lại

\[f(x, y) = 0 \cdot x^0 y^0 \oplus 1 \cdot x^0 y^1 \oplus 1 \cdot x^1 y^0 \oplus 1 \cdot x^1 y^1.\]

Như vậy biến đổi Mobius của hàm \(f\)

\(x\)

\(y\)

\(f(x, y)\)

\(g = \mu(f)\)

\(0\)

\(0\)

\(0\)

\(0\)

\(0\)

\(1\)

\(1\)

\(1\)

\(1\)

\(0\)

\(1\)

\(1\)

\(1\)

\(1\)

\(1\)

\(1\)

Ta kí hiệu \(\bm{x}^{\bm{a}} = x_1^{a_1} \cdots x_n^{a_n}\) với

  • \(\bm{x} = (x_1, \ldots, x_n)\);

  • \(\bm{a} = (a_1, \ldots, a_n)\).

Do \(x_i^{a_i} = 1\) khi và chỉ khi \(a_i \leqslant x_i\), ta có \(\bm{x}^{\bm{a}} = 1\) khi và chỉ khi \(\bm{a} \preccurlyeq \bm{x}\) theo nghĩa \(a_i \leqslant x_i\) với math:i = 1, ldots, n.

Ta có thể viết lại (2.4)

\[f(\bm{x}) = \bigoplus_{\bm{a} \in \mathbb{F}_2^n} g(\bm{a}) \cdot \bm{x}^{\bm{a}} = \bigoplus_{\bm{a} \in \mathbb{F}_2^n} g(\bm{a}).\]

Nhận xét 2.10 (Biến đổi Mobius)

Đặt \(f \in \mathcal{F}_n\)\(g = \mu(f)\). Khi đó với mọi \(\bm{a} \in \mathbb{F}_2^n\) ta có

\[g(\bm{a}) = \bigoplus_{\bm{x} \preccurlyeq \bm{a}} f(\bm{x}).\]

Hệ quả 2.1

\[\mu(\mu(f)) = f.\]

Nhận xét 2.11

\[g(\bm{1}) = \bigoplus_{\bm{x} \in \mathbb{F}_2^n} f(\bm{x})\]

với \(\bm{1}\) là vector có \(n\) số \(1\).

Nhận xét 2.12

Nếu \(f \in \mathcal{F}_n\)\(\deg f = d \geqslant 1\) thì

\[2^{n - d} \leqslant \mathrm{wt} (f) \leqslant 2^n - 2^{n-d}.\]

Nói riêng, nếu \(\deg f = 1\) thì \(f\) là hàm cân bằng.

2.1.2. Phụ thuộc tuyến tính

Định nghĩa 2.28

Hàm \(f(x_1, \ldots, x_n)\) được gọi là linear dependent (hay линейно зависить) vào biến \(x_i\) nếu \(f\) có thể biểu diễn ở dạng

\[f(x_1, \ldots, x_n) = g(x_1, \ldots, x_{i-1}, x_{i+1}, \ldots, x_n) \oplus x_i\]

với \(g \in \mathcal{F}_{n-1}\).

Theo trường hợp riêng ở trên thì nếu \(f\) linear dependent vào một biến bất kì thì \(f\) là hàm cân bằng.

Ta có thể diễn đạt định nghĩa trên theo cách khác:

\[f(x_1, \ldots, x_{i-1}, 0, x_{i+1}, \ldots, x_n) \neq f(x_1, \ldots, x_{i-1}, 1, x_{i+1}, \ldots, x_n).\]

Định nghĩa 2.29

Hàm \(f(x_1, \ldots, x_n)\) được gọi là quasi-linear dependent (hay квазилинейно зависить) trên cặp biến \(x_i\)\(x_j\) nếu \(f\) đổi giá trị khi ta đảo giá trị ở vị trí \(i\)\(j\).

Nói cách khác, ta có

\[f(x_1, \ldots, x_i, \ldots, x_j, \ldots, x_n) = \bar{f}(x_1, \ldots, \bar{x}_i, \ldots, \bar{x}_j, \ldots, x_n)\]

với \(x_i, x_j \in \mathbb{F}_2\).

Nhận xét 2.13

Hàm \(f(x_1, \ldots, x_n, y, z)\) là hàm quasi-linear dependent trên biến \(y\)\(z\) khi và chỉ khi \(f\) có dạng

\[f(x_1, \ldots, x_n, y, z) = g(x_1, \ldots, x_n, y \oplus z) \oplus y.\]

Nhận xét 2.14

Nếu hàm boolean quasi-linear dependent trên hai biến bất kì thì hàm boolean đó cân bằng.

Ví dụ 2.10 (hàm quasi-linear dependent)

Hàm boolean

\[f(x, y, z) = y \oplus xz \oplus xy\]

quasi-linear dependent trên hai biến \(y\)\(z\).

2.1.3. Cách tìm đa thức Zhegalkin từ bảng chân trị

Ta có nhiều phương pháp để tìm đa thức Zhegalkin của một hàm boolean từ bảng chân trị.

2.1.3.1. Phương pháp tam giác

Ở hàng đầu ta viết các phần tử bảng chân trị từ trái sang phải. Với \(n\) biến sẽ có \(2^n\) ô.

Hàng thứ hai có \(2^n-1\) ô. Phần tử dưới sẽ bằng XOR của \(2\) phần tử ngay trên nó (tạo thành tam giác). Tiếp tục như vậy tới khi ta có hàng cuối chỉ có \(1\) ô.

../../_images/zhegalkin-1.jpg

Hình 2.3 Phương pháp tam giác

Khi đó, tương ứng với các biến, nếu biến đó là \(1\) thì đơn thức sẽ chứa biến đó, \(0\) thì không ghi. Ở ví dụ trên, nếu \((x, y) = (0, 0)\) thì không có gì (phần tử \(1\)), \((x, y) = (0, 1)\) tương ứng với đơn thức \(y\) trong đa thức Zhegalkin, \((x, y) = (1, 0)\) tương ứng đơn thức \(x\). Cuối cùng \((x, y) = (1, 1)\) tương ứng đơn thức \(xy\).

Hệ số trước mỗi đơn thức là phần tử đầu tiên bên trái theo bảng kim tự tháp. Như vậy đa thức Zhegalkin là:

\[f(x, y) = 0 \cdot 1 \oplus 1 \cdot y \oplus 1 \cdot x \oplus 1 \cdot xy = x \oplus y \oplus xy.\]

Đa thức Zhegalkin đóng vai trò quan trọng trong nhiều lĩnh vực, bao gồm cả toán học, vật lý, khoa học máy tính, vì AND và XOR là hai toán tử đại số cơ bản, do đó biểu diễn đa thức Zhegalkin được gọi là dạng chuẩn tắc đại số như ở trên đề cập.

Một ví dụ khác của đa thức Zhegalkin với hàm \(3\) biến \(x\), \(y\)\(z\) như hình sau:

../../_images/zhegalkin-2.jpg

Như vậy ứng với hàm boolean \(f\) thì đa thức Zhegalkin là:

\[f(x, y, z) = z \oplus yz \oplus x \oplus xz \oplus xyz.\]

2.1.3.2. Phương pháp Möbius

Phương pháp này cho phép chúng ta tính hệ số đa thức Zhegalkin như phương pháp tam giác nhưng nhanh hơn và đỡ sai sót hơn.

Đầu tiên chúng ta chia đôi bảng chân trị thành hai nửa trái phải. Nửa trái giữa nguyên, mỗi phần tử ở nửa phải được XOR (cộng modulo \(2\)) với phần tử tương ứng ở nửa trái.

Ví dụ với hàm \(f(x, y) = (0, 1, 1, 1)\) như trên.

Bước 1, ta giữ nguyên hai phần tử đầu \(0\)\(1\). Phần tử thứ ba (mới) bằng phần tử thứ ba (cũ) XOR với phần tử đầu, nghĩa là \(0 \oplus 1 = 1\). Phần tử thứ tư (mới) bằng phần tử thứ tư (cũ) XOR với phần tử thứ hai, nghĩa là \(1 \oplus 1 = 0\).

Tiếp theo, chúng ta xử lý như trên cho hai phần tử bên nửa trái (hai phần tử bên nửa phải xử lý tương tự).

../../_images/zhegalkin-3.jpg

Hình 2.4 Bước 1

../../_images/zhegalkin-4.jpg

Hình 2.5 Bước 2

Như vậy ta có kết quả là \((0, 1, 1, 1)\), tương ứng với các đơn thức \(1\), \(y\), \(x\), \(xy\) (như trên). Vậy đa thức Zhegalkin là \(f(x, y) = x \oplus y \oplus xy\).