Sơ đồ dòng của thuật toán

Một phần của tài liệu Đồ án tốt nghiệp đại học nghiên cứu bộ lọc bloom và ứng dụng (Trang 38 - 46)

7. Thoát khỏi vòng lặp;

3.5.3Sơ đồ dòng của thuật toán

Thuật toán được xây dựng dựa trên phương pháp gom nhóm các tập quy tắc theo phương pháp gom nhóm không chồng nhau, phân chia tập quy tắc theo NLT nên chúng ta gọi thuật toán này là Tìm kiếm không gian bộ

mức xếp chồng – Nested Level Tuple Space Search (NLTSS).

Cấu trúc dữ liệu của bảng LPM sửa đổi và sơ đồ dòng của thuật toán được mô tả trong hình 3.10. Mỗi tiền tố trong bảng LPM có một bản đồ bit PL/NL và một bản đồ bit NLT. Ví dụ tiền tố 101* của trường 1 có bit map PL/NL là 1010 chỉ ra rằng các tiền tố con của nó có độ dài 1 (1*) và 3 (101*). Do đó, mức xếp chồng của tiền tố 1* là 1 và của 101* là 2. Bản đồ bit khác, ví dụ bản đồ bit NLT của một tiền tố, chứa số bit bằng số NLT. Các bit tương ứng với NLT mà có tiền tố đó hoặc tiền tố con của nó trong đó được thiết lập là 1. Do đó 101* thuộc cả 3 NLT trong khi 1* thuộc NLT 1 và 2.

Các bước thực hiện thuật toán như sau:

- B2: Thực hiện phép giao của các bản đồ bit NLT tương ứng để tìm ra tập NLT chung mà tất cả các tiền tố đều có mặt trong đó. Như thấy trong hình, vì các tiền tố thuộc về tất cả NLT nên phần giao nhau cắt tất cả NLT.

- B3: Từ bản đồ bit giao nhau ở bước trên, chúng ta nhận được chỉ số của các NLT cần thực hiện tìm kiếm. Từ bảng NLT, tương ứng với các chỉ số chúng ta nhận được các NLT thực.

- B4: Kết hợp các NLT với bản đồ bit PL/NL của mỗi trường, chúng ta chuyển cặp mức xếp chồng trong NLT thành bộ độ dài tiền tố – PLT và thu được danh sách các PLT.

- B5: Kết hợp danh sách bộ độ dài tiền tố với tiền tố mỗi trường, chúng ta nhận được các cặp khoá.

- B6: Lọc các cặp khoá qua các bộ lọc Bloom on-chip và kết quả nào đúng thì sử dụng để truy vấn các bảng quy tắc off-chip. Như ví dụ cho thấy, khoá <1,100> đã lọc qua bộ lọc Bloom và được loại bỏ không cần truy vấn bộ nhớ off-chip.

Hình 3.10: Sơ đồ dòng thuật toán tìm kiếm không gian bộ mức xếp chồng.

Chú ý rằng kỹ thuật bản đồ bit có thể được sử dụng thay cho mảng độ dài tiền tố chỉ bởi vì với mỗi trường của một tập con chỉ có một mức xếp chồng hoặc độ dài tiền tố duy nhất. Đối với thuật toán tích chéo đa tập con thông thường, chúng ta không thể sử dụng kỹ thuật bản đồ bit bởi vì có nhiều tiền tố con của một tiền tố trong cùng một tập con. Do đó, chúng ta cần liệt kê các độ dài tiền tố riêng lẻ, như được chỉ rõ trong hình 3.4.

3.6 Thuật toán Tích chéo và trộn NLT (NLT Merging and Crossproduct – NLTMC) Crossproduct – NLTMC)

Nếu chúng ta chia tập quy tắc thành nhiều tập con thì cần nhiều bộ lọc Bloom, tiêu tốn nhiều tài nguyên phần cứng. Nhưng với một tập quy tắc cho trước, chúng ta muốn chia thành ít tập con thì trong mỗi tập con lượng tích chéo sinh ra cũng khá đáng kể. Do đó cần giới hạn số tập con ở một mức hợp lý.

Chúng ta thấy rằng gom nhóm theo NLT làm việc rất tốt trong thực tế, không tạo ra quy tắc tích chéo nào. Nhưng khi gom nhóm số NLT thường rất lớn do đó sẽ tốn nhiều bộ lọc Bloom và tiêu tốn nhiều tài nguyên phần cứng. Do đó chúng ta đặt ra một câu hỏi rằng: Liệu có khả năng cải tiến thêm nữa không? Có thể giảm số tập con xuống nữa hay không? Có thể sử dụng tài nguyên hiệu quả hơn nữa không?

Sau đây chúng ta sẽ tìm hiểu thuật toán có thể cải thiện phương pháp này bằng cách trộn một vài NLT để tạo ra số tập con ít hơn nhưng lượng tích chéo sinh ra không đáng kể. Số tập con ít hơn đồng nghĩa rằng cần ít bộ lọc Bloom hơn và do đó sử dụng tài nguyên hiệu quả hơn. Thuật toán chúng ta sẽ nghiên cứu là Thuật toán Tích chéo và trộn NLT (NLT

Merging and Crossproduct – NLTMC).

Để giảm số tập con xuống dưới một ngưỡng đã cho, chúng ta cần tìm các NLT mà có thể trộn được với nhau. Chúng ta quan sát qua tất cả các tập quy tắc đã phân tích thì thấy: phân phối lượng quy tắc theo NLT có độ lệch cao. Chỉ một vài NLT chứa hầu hết số quy tắc trong tập quy tắc ban đầu. Phần lớn NLT còn lại chứa rất ít quy tắc. Hình 3.11 là biểu đồ phân phối tích luỹ quy tắc qua số NLT.

Hình 3.11: Phân phối tích luỹ của các quy tắc qua NLT. Hơn 90% quy tắc được chứa chỉ trong 40 NLT.

Dựa vào đặc điểm ở trên chúng ta thiết kế một thuật toán trộn NLT bắt đầu với việc sắp xếp các tập NLT theo số lượng quy tắc, giữ lại g NLT đậm đặc nhất (NLT đậm đặc là NLT chứa một số lượng lớn quy tắc, g là giới hạn số tập con cho trước) và sau đó trộn các quy tắc trong NLT còn lại thành những tập con cố định với mục đích giảm đến nhỏ nhất lượng quy tắc giả sinh ra trong tập trộn này. Chúng ta thấy rằng có thể trộn một tập con bất kỳ trong số tập con còn lại với một trong g tập con đã chọn, nhưng việc chọn mù như vậy thực sự không hiệu quả. Để tối ưu quá trình trộn, chúng ta chọn NLT thích hợp nhất để trộn như sau: với mỗi tập con còn lại, tính khoảng cách giữa tập con đó với mỗi tập con đã chọn và chúng ta sẽ trộn tập con đó với tập con có khoảng cách gần nhất. Trong trường hợp bằng nhau thì chọn NLT có số quy tắc nhỏ nhất để trộn.

Định nghĩa: khoảng cách giữa hai NLT là tổng của các độ lệch giữa các mức nạp chồng của từng trường riêng lẻ. Ví dụ, NLT [4, 3, 1, 2, 1] và [4, 1, 0, 2, 1] có khoảng cách là |4 - 4 | + |3 - 1| + |1 - 0| + |2 - 2| + |1 – 1| = 3.

Một cách trực giác theo quan sát cây mức nạp chồng, khi khoảng cách giữa các NLT lớn thì tiền tố trong một NLT sẽ có khả năng có vài tiền tố hậu duệ tương ứng trong các NLT khác do đó nếu trộn sẽ tạo ra số lượng tích chéo lớn. Khoảng cách ngắn hơn sẽ tạo ra ít tích chéo hơn.

Thuật toán trộn NLT thực hiện theo các bước như sau: B1: Sắp xếp p NLT theo số lượng quy tắc ở trong nó.

B2: Chọn g NLT đậm đặc nhất trong đó g là giới hạn số lượng tập con cho trước.

B3: Với mỗi NLT trong số p-g NLT còn lại, trộn nó vào trong NLT đậm đặc nhất có khoảng cách gần nhất tới nó. Nếu khoảng cách bằng nhau, trộn với tập có số lượng quy tắc nhỏ nhất.

STT Tập quy tắc Số quy tắc Số NLT Số tiền tố

1 acl1 1247 31 610 2 acl2 1216 57 437 3 acl3 4405 63 1211 4 acl4 5358 107 1445 5 acl5 4668 14 304 6 acl1s 12507 45 1524 7 acl2s 18589 107 626 8 acl3s 17395 81 947 9 acl4s 16291 130 1090 10 acl5s 13545 31 2401 11 fw1 914 37 205 12 fw2 543 21 132 13 fw3 409 29 147 14 fw1s 32135 50 337 15 fw2s 26234 95 271 16 fw3s 24990 151 460 17 ipc1 2179 83 396 18 ipc2 134 8 72

19 ipc1s 12725 65 519

20 ipc2s 9529 11 4596

Bảng 3.1: Các tập quy tắc với số lượng quy tắc, số NLT và số tiền tố khác nhau.

Với thuật toán này, các bước thực hiện tương tự thuật toán tích chéo đa tập con trong đó thì số tập con đã được giới hạn ở mức hợp lý và số quy tắc tích chéo sinh ra không đáng kể.

Chương 4: (adsbygoogle = window.adsbygoogle || []).push({});

KHAI PHÁ PHẦN TỬ PHỔ BIẾN TRONG LUỒNG DỮ LIỆU SỬ DỤNG ESBF THEO MÔ HÌNH DAMPED DỮ LIỆU SỬ DỤNG ESBF THEO MÔ HÌNH DAMPED

Trong chương này sẽ tìm hiểu thuật toán khai phá các phần tử phổ biến sử dụng bộ lọc Bloom theo mô hình Damped - MIBFD (Mining frequent Items using Bloom filter based on Damped model). Dựa trên một cấu trúc dữ liệu hiệu quả có tên là ESBF (extensible and scalable Bloom Filter), MIBFD có thể điều chỉnh kích thước bộ nhớ được sử dụng một cách linh động. Từ phân tích lý thuyết và kết quả thực tế cho thấy rằng MIBFD hiệu quả cả trong thời gian xử lý lẫn trong cách sử dụng bộ nhớ.

4.1 Định nghĩa luồng dữ liệu và phần tử phổ biến

Luồng dữ liệu là một chuỗi không giới hạn các phần tử dữ liệu được truyền đi với tốc độ cao.

Dữ liệu của nhiều ứng dụng phổ biến có dạng là các luồng liên tục thay vì là các tập dữ liệu có lượng phần tử được lưu trữ hạn chế. Ví dụ như là một số hoạt động trong giám sát mạng và quản lý lưu lượng đường truyền, bản ghi chi tiết cuộc gọi trong viễn thông, giao dịch trong hệ thống bán lẻ, hoạt động ATM ở ngân hàng, các bản ghi được tạo ra bởi Web Server và dữ liệu mạng cảm biến,…

Khai phá phần tử phổ biến là một bước trong khai phá luật kết hợp, nó đóng một vai trò quan trọng trong các ứng dụng về cơ sở dữ liệu, khám phá tri thức và mạng máy tính,…như phát hiện sự tấn công Dos, theo dõi kích thước và đếm số gói tin IP, phát hiện các luồng dữ liệu vượt quá mức lưu lượng cho phép.

Trong phần này ta định nghĩa luồng dữ liệu S là một chuỗi gồm N cặp của N phần tử kết hợp với nhãn thời gian khi xuất hiện phần tử đó.

S = {(e1, t1), (e2, t2),…, (eN, tN)}

Mỗi phần tử e thuộc không gian U. Không mất tính tổng quát, ta giả sử t1=0 và cho phép một phần tử có thể xuất hiện lặp lại nhiều lần. Trong phần tiếp theo đây chúng ta sử dụng e để ký hiệu một phần tử nói chung.

Một phần tử phổ biến là phần tử có tần số xuất hiện trong một luồng S có kích thước N là vượt quá một giá trị được xác định bởi người sử dụng φN, trong đó 0 ≤ φ ≤ 1.

Một phần của tài liệu Đồ án tốt nghiệp đại học nghiên cứu bộ lọc bloom và ứng dụng (Trang 38 - 46)