Thuật tốn sinh tập bộ dị dạng r– contiguous

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số thuật toán lọc thư rác và ứng dụng trong lọc email nội bộ (Trang 30 - 33)

Tập bộ dị dạng r-contiguous thường cĩ khả năng phát hiện thay đổi kém hơn so với tập bộ dị dạng r-chunk nhưng nĩ thích hợp cho dữ liệu cĩ tính cấu trúc.

2.4.3.1. Thuật tốn

Output: ContD(S,r)

Procedure CONTIGUOUS_DETECTOR_NSA Begin Tạo bảng A tương tự như r-chunk;

//Sinh tập bộ dị r – contiguous

//sử dụng hai tập hợp để chứa bộ dị D1 và D2

D1 = giá trị của i khi đổi về dạng nhị phân r bit ứng với phần tử a[i, 1] (i = 1,…, n) cĩ giá trị bằng 0 và D2 = ;

for i=2 to ℓ-r+1 do begin

D2=;

for mỗi dD1 do begin

if copy(d,i,r-1)+’0’ mà A[k,i] = 0 then D2 copy(d,i,r-1)+’0’ if copy(d,i,r-1)+’1’ mà A[k,i] = 0 then D2 copy(d,i,r-1)+’1’ end; end; D1= D2; End; ContD(S,r) = D1; 2.4.3.2. Độ phức tạp thuật tốn

Độ phức tạp thuật tốn tìm tập ContD(S,r) là O(r.2r(ℓ-r+1)).

Ví dụ 2.5. S = {01011 ; 11001 ; 10110 ; 00101 ; 01010}, với ℓ = 5, r = 3. Ta cĩ bảng A như sau: 1 2 3 0 0 0 0 1 1 0 1 2 1 1 1 3 0 1 1 4 0 1 0 5 1 1 1 6 1 0 1 7 0 0 0

Tại cột 1 của bảng A ta thấy: + A[0, 1] = 0 Vậy D1[1] = 000 + A[3, 1] = 0 Vậy D1[2] = 011

+ A[4, 1] = 0 Vậy D1[3] = 100

+ A[7, 1] = 0 Vậy D1[4] = 111 i = 2 < ℓ - r + 1 nên Với D1[1] = 000

*) Xâu = 0001 s = (001)2 = (1)10

Thấy A[s, 2] = A[1, 2] = 0 Vậy D2[1] = 0001 *) Xâu = 0000

s = (000)2 = (0)10

Thấy A[s, 2] = A[0, 2] = 0 Vậy D2[2] = 0000 Với D1[2] = 011

*) Xâu = 0111 s = (111)2 = (7)10

Thấy A[s, 2] = A[7, 2] = 0 Vậy D2[3] = 0111 *) Xâu = 0110

s = (110)2 = (6)10

Thấy A[s, 2] = A[6, 2] = 0 Vậy D2[4] = 0110 Với D1[3], D1[4] ta làm tương tự và được

D2[5] = 1001, D2[6] = 1000 D2[7] = 1111, D2[8] = 1110 D1 = D2; D2 = ; i = 3 <= ℓ-r+1 nên Với D1[1] = 0001 *) Xâu = 00011 s = (011)2 = (3)10

Thấy A[s, 3] = A[3, 3] = 1 nên khơng lưu 00011 vào mảng D2 *) Xâu = 00010

s = (010)2 = (2)10

Thấy A[s, 3] = A[2, 3] = 1 nên khơng lưu 00011 vào mảng D2 Với D1[2] = 0000

s = (001)2 = (1)10

Thấy A[s, 2] = A[1, 3] = 1 nên khơng lưu 00001 vào mảng D2

+ Xâu = 00000

s = (010)2 = (0)10

Thấy A[s, 2] = A[0, 3] = 0 Vậy D2[1] = 00000

Với D1[3], D1[4], D1[5], D1[6], D1[7], D1[8] làm tương tự ta được D2[2] = 00000, D2[3] = 01100 D2[4] = 01111, D2[5] = 10000 D2[6] = 11111 D1 = D2; D2 = D1; i = 4 > ℓ - r +1 nên kết thúc. Vậy tập bộ dị tìm được là: D[1] = 00000 D[4] = 10000 D[2] = 01100 D[5] = 11100 D[3] = 01111 D[6] = 11111

Như vậy với phương pháp sử dụng bảng băm A, tốc độ sinh tập bộ dị sẽ tăng nhanh, với độ phức tạp thời gian là O(2r.(ℓ-r+1)).

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số thuật toán lọc thư rác và ứng dụng trong lọc email nội bộ (Trang 30 - 33)

Tải bản đầy đủ (PDF)

(58 trang)