Ngoài tập giản lược tự nhiên đã trình bày ở trên, khái niệm tập giản lược không dư của tập luật sinh và thuật toán đề xuất để giản lược tập luật sinh cho trước về tập giản lược không dư được xây dựng thông qua các định nghĩa và thuật toán sau đây. Ý nghĩa khi xây dựng tập giản lược không dư cũng tương tự như tập giản lược tự nhiên.
Định nghĩa 3.7
Cho hai tập luật sinh F và G trên tập U hữu hạn. G được gọi là tập giản lược không dư của F nếu,
77
(ii) G có dạng giản lược không dư theo nghĩa sau: gG: G \{g} ≢G
Thuật toán Nonredundant sau được xây dựng với mục tiêu giản lược tập luật sinh F cho trước về tập giản lược không dư. Việc đánh giá độ phức tạp của thuật toán cũng được trình bày ở đây,
Thuật toán 3.4
Algorithm Nonredundant
Format: Nonredundant (F)
Input: - Tập luật sinh F
Output: - Tập giản lược không dư G
Begin
G:=F;
for eachrule g in F do
if IsMember(g,G\{g}) then G:=G\{g}; endif; endfor; returnG; End Nonredundant.
Thuật toán giản lược tập luật sinh cho trước về tập giản lược không dư có độ phức tạp tính toán là O(m2n2) với m là số lượng luật sinh trong tập luật F, n số lượng các phần tử có trong U. Do tích mn chính là chiều dài dữ liệu vào của thuật toán nên
O(m2n2) cũng chính là độ phức tạp đa thức theo chiều dài dữ liệu vào.
Thí dụ 3.5
Cho U = ABCD, F ={A B, C A, A D, BD }. Ta giản lược tập luật sinh F
về dạng không dư theo các bước sau :
+ Loại bỏ luật sinh A D do áp dụng tính chất bắc cầu cho các luật sinh AB và B D
+ Như vậy, ta có F G = F \ {AD}
78