Tải bản đầy đủ (.docx) (58 trang)

Nghiên cứu kết hợp chọn lọc âm tính và chọn lọc dương tính trong hệ miễn dịch nhân tạo

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (726.5 KB, 58 trang )

LỜI CẢM ƠN
Để hoàn thành đề tài này, em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo
Ths. Nguyễn Văn Trường – Giảng viên Tin học, khoa Toán, Trường Đại học Sư
Phạm – Đại học Thái Nguyên, đã định hướng ý tưởng, tận tình giúp đỡ, chỉ bảo
em trong suốt quá trình thực hiện đề tài.
Em xin chân thành cảm ơn Ban giám hiệu nhà trường, Ban chủ nhiệm khoa
Toán cùng toàn thể các thầy, cô giáo trong khoa đã tận tình hướng dẫn, giúp đỡ
em thực hiện đề tài.
Bên cạnh đó, em xin gửi lời cảm ơn đến gia đình, bạn bè và những người
thân đã động viên giúp đỡ em trong suốt quá trình làm đề tài.
Trong quá trình tiến hành làm đề tài do chưa có nhiều kinh nghiệm nên
không tránh khỏi những thiếu sót và hạn chế. Vì vậy em rất mong nhận được sự
góp ý của các thầy cô và các bạn sinh viên để đề tài được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Thái Nguyên, tháng 3 năm 2013
Sinh viên
Vũ Thị Nguyệt Thu
1
MỤC LỤC
2
DANH SÁCH KÍ HIỆU, TỪ VIẾT TĂT
Viết tắt Viết đầy đủ
HMD Hệ miễn dịch
NSA Negative Selfection Algorithm-Thuật toán chọn lọc tiêu cực
MHC Major Histocompatibility Complex
|X| Lực lượng của tập X
CNTT Công nghệ thông tin
TTNT Trí tuệ nhân tạo
Dpn Tập bộ dò kết hợp cây self và nonself
Dne Tập bộ dò sinh bởi cây nonself
Dp Tập bộ dò sinh bởi cây self


mns millisecond
DANH SÁCH HÌNH VẼ, BẢNG
Hình 1.1. Cấu trúc phân tầng của HMD nhân tạo
Hình 1.2. Sơ đồ khối thuật toán chọn lọc tích cực
Hình 1.3. Sơ đồ khối thuật toán chọn lọc tiêu cực
Hình 2.1. Một phần của các cây nhị phân sinh ra bởi s
1
= 01111
Hình 2.2. Một phần của cây nhị phân khi thêm s
2
Hình 2.3. Cây được tạo hoàn chỉnh từ tập S
Hình 2.4. Nhánh đầu tiên của cây để tạo cây Rchunk(S, 3)
Hình 2.5. Cây r - chunk(S, 3) được tạo hoàn chỉnh
Hình 3.1. Cây nhị phân được tạo từ tập Dnei và Dpi, i = 1, 2, 3
Hình 3.2. Cây self tree[1] được tạo sau bước 1.2.
Bảng 1. So sánh độ phức tạp của thuật toán sinh và so khớp chunkD(S, r)
Hình 4.1. Tệp data1.inp và tập bộ dò chứa trong tệp data1pone.out
Hình 4.2. Giao diện kết quả sau khi so khớp
Hình 4.3. File dữ liệu và tập bộ dò của file
Hình 4.4. Kết quả sau khi so khớp lại
Hình 4.5. Dữ liệu file gốc
Hình 4.6. Dữ liệu trong file đã bị thay đổi
Hình 4.7. Kết quả sau khi so khớp
3
Bảng 2. Thời gian so khớp bộ dò với dữ liệu trong file không chứa xâu nonself
Bảng 3. So sánh thời gian để phát hiện trong tập S có các s là nonself
Hình 4.8. File dữ liệu gốc
Hình 4.9. Tập bộ dò Dpn sinh từ file “data20.inp” với r = 11
Hình 4.10. Tập bộ dò Dne sinh từ file “data20.inp” với r = 11
Bảng 4. Tổng hợp kết quả với r biến thiên

Biểu đồ 1. So sánh thời gian so khớp trên bộ dữ liệu “data20.inp” của 2 tập bộ
dò tương ứng với các giá trị r biến thiên.
Hình 4.11. File dữ liệu gốc
Hình 4.12. Tập bộ dò Dpn với r = 15
Hình 4.13. Tập bộ dò Dne với r = 15
Bảng 5. Tổng hợp kết quả với r biến thiên
Biểu đồ 2. So sánh thời gian so khớp trên bộ dữ liệu “data30.inp” của 2 tập bộ
dò tương ứng với các giá trị r biến thiên.
Hình 4.14. File dữ liệu gốc
Hình 4.15. Tập bộ dò Dpn với r = 15
Hình 4.16. Tập bộ dò Dne với r = 15
Bảng 6. Tổng hợp kết quả với r biến thiên
Biểu đồ 3. So sánh thời gian so khớp trên bộ dữ liệu “data40.inp” của 2 tập bộ
dò tương ứng với các giá trị r biến thiên.
Hình 4.17. File dữ liệu gốc
Hình 4.18. Tập bộ dò Dpn với r = 15
Hình 4.19. Tập bộ dò Dne với r = 15
Bảng 7. Tổng hợp kết quả với r biến thiên
Biểu đồ 4. So sánh thời gian so khớp trên bộ dữ liệu “data4goc.inp” của 2 tập
bộ dò tương ứng với các giá trị r biến thiên.
Biểu đồ 5. Mối quan hệ giữa tỉ lệ số node giảm và r
Biểu đồ 6. Trung bình tỉ lệ số node giảm
4
MỞ ĐẦU
 Lý do chọn đề tài
Một trong số những mối quan tâm của người sử dụng máy tính là sự phát
tán và xâm nhập của virus vào các hệ thống CNTT về cả chiều rộng và chiều
sâu. Virus máy tính thực sự trở thành hiểm họa, là mối đe dọa thường xuyên và
cấp bách đối với các hệ thống CNTT. Các hệ thống CNTT phần lớn sử dụng các
phần mềm chống virus (anti-virus (AV)) như là biện pháp phòng chống. Nhưng

phần lớn các AV chỉ phát huy tính năng trên các mẫu virus xác định, trong khi
đó các virus ngày càng tinh vi, biến đổi. Các phương pháp truyền thống trong
việc phòng chống tấn công, xâm nhập trái phép vào các hệ thống CNTT mang
tính bị động, kém hiệu quả.
Chính vì vậy, việc nghiên cứu các công nghệ mới để phát hiện, cảnh báo
sớm các xâm nhập bất hợp pháp, cả đối với các xâm nhập, tấn công lần đầu tiên
xảy ra sẽ góp phần tạo ra các mạng có khả năng tự bảo vệ cao và hạn chế được
các thiệt hại về tài nguyên hay dữ liệu cho hệ thống.
Việc ứng dụng TTNT để đưa ra các giải pháp nhằm mục đích phát hiện và
dự đoán những mẫu virus mới là bước tiến mới, khả quan trong vấn đề phòng
chống virus. Trong đó, điển hình nhất là HMD nhân tạo - phương pháp tiếp cận
dựa trên các nguyên lý, chức năng, mô hình hoạt động của HMD sinh học ở
người. Cơ chế phát hiện virus trong HMD nhân tạo dựa trên cơ chế chọn lọc âm
tính hoặc chọn lọc dương tính mà nền tảng là việc sử dụng các tập bộ dò thu
được sau quá trình huấn luyện để nhận dạng. Các vấn đề liên quan đến sinh tập
bộ dò tối ưu (đầy đủ, không dư thừa, có khả năng phát hiện cao, dung lượng
nhỏ) là vấn đề được quan tâm hàng đầu của các nhà nghiên cứu. Tuy nhiên các
thuật toán đưa ra còn nhiều hạn chế về tốc độ hay bộ nhớ khiến hiệu suất của các
hệ thống phát hiện xâm nhập không cao, đặc biệt là dữ liệu ngày càng lớn. Vì
vậy, em quyết định chọn đề tài: “Nghiên cứu kết hợp chọn lọc âm tính và chọn
lọc dương tính trong hệ miễn dịch nhân tạo” để làm đề tài nghiên cứu. Đề tài
nghiên cứu sẽ tập trung vào việc phối hợp giữa chọn lọc âm tính và chọn lọc
dương tính để sinh ra tập bộ dò tối ưu.
 Mục đích nghiên cứu
5
Nghiên cứu kết hợp chọn lọc âm tính và chọn lọc dương tính trong HMD
nhân tạo
 Nhiệm vụ nghiên cứu
• Tìm hiểu một số thuật toán sinh tập dò
• Đề xuất phương pháp sinh tập dò sử dụng cấu trúc cây nhị phân có kết hợp

giữa chọn lọc âm tính và chọn lọc dương tính
• Cài đặt chương trình.
 Phương pháp nghiên cứu
• Nghiên cứu lý thuyết: tìm đọc các tài liệu về lĩnh vực nghiên cứu
• Tham khảo ý kiến: tham khảo ý kiến cũng như cách thức nghiên cứu lý
thuyết về HMD nhân tạo của các thầy cô trong trường, các chuyên gia về
bảo mật.
• Thực nghiệm: cài đặt thuật toán đề xuất; so sánh, đánh giá độ phức tạp thời
gian với kết quả của các thuật toán chọn lọc âm tính gần đây.
 Cấu trúc đề tài
• Chương 1: Trình bày tổng quan về hệ miễn dịch sinh học và hệ miễn dịch
nhân tạo.
• Chương 2: Một số phương pháp sinh tập bộ dò
• Chương 3: Phương pháp sinh tập dò bằng cây nhị phân kết hợp chọn lọc âm
tính và chọn lọc dương tính
• Chương 4: Thực nghiệm cài đặt thuật toán ở chương 3.
6
Chương 1
TỔNG QUAN VỀ HỆ MIỄN DỊCH SINH HỌC VÀ HỆ MIỄN
DỊCH NHÂN TẠO NHÂN TẠO
1.1. Tổng quan về hệ miễn dịch sinh học
1.1.1. Khái niệm
Hệ miễn dịch (HMD) sinh học là tập hợp tất cả các cơ chế sinh học giúp
cho một cơ thể đa bào giữ được sự liên kết giữa các tế bào và các mô, đảm bảo sự
toàn vẹn của cơ thể bằng cách loại bỏ những thành phần bị hư hỏng cũng như các
chất và sinh vật xâm hại. Chức năng bảo vệ cơ thể bao gồm hai loại cơ chế miễn
dịch, lần lượt xuất hiện trong quá trình tiến hóa của các loài và liên hệ chặt chẽ với
nhau ở các động vật bậc cao.
1.1.2. Hệ miễn dịch thích nghi và hệ miễn dịch bẩm sinh
Hệ miễn dịch thích nghi và hệ miễn dịch bẩm sinh nằm ở tầng trong cùng,

mức bảo vệ cao nhất của cơ thể.
 HMD bẩm sinh: Hoạt động dựa vào bạch cầu huyết là đại thực bào và bạch cầu
trung tính (có chức năng nuốt và tiêu diệt các vi trùng, tạo ra một cơ chế bảo vệ
quan trọng chống lại các bệnh truyền nhiễm). Những bạch huyết này có các cơ
quan thụ cảm trên bề mặt, chúng có thể nhận diện và bám vào các phần tử gây
bệnh.
HMD bẩm sinh không có cơ chế ghi nhớ, hoạt động của HMD bẩm sinh đối
với các vi sinh vật xâm nhập vào cơ thể lần thứ hai không có gì khác so với lần thứ
nhất.
- HMD thích nghi: hoạt động với các thành phần chính là các lymphô bào
(Lymphocyte – là một loại bạch cầu) bao gồm B-cell và T-cell. Các B-cell và T-
7
cell trên bề mặt của chúng có những cơ quan thụ cảm chuyên dụng cho một loại
kháng thể nào đó. Khi kháng nguyên xâm nhập vào cơ thể các cơ quan thụ cảm
trên bề mặt của lymphô bào sẽ kết hợp với kháng nguyên làm cho các lymphô bào
này được kích hoạt và thực hiện quá trình nhân rộng, đột biến sau đó tạo ra những
kháng thể thích hợp có khả năng nhận diện và loại ổ kháng nguyên. Một số lymphô
bào sẽ trở thành tế bào có khả năng ghi nhớ lưu thông trong cơ thể. Khi có loại
kháng nguyên tương tự lây nhiễm, thì HMD thích nghi có thể nhanh chóng phát
hiện và loại bỏ chúng. Khả năng này giúp cho cơ thể không mắc lại những bệnh cũ,
do đó đáp ứng miễn dịch thích nghi cho phép HMD tự hoàn thiện sau mỗi lần đụng
độ với kháng nguyên.
Trong quá trình chọn lọc các tế bào B-cell và T-cell, HMD thích nghi không
chỉ phải chọn những tế bào có khả năng nhận biết những tế bào lạ (antigen hay
nonself), mà nó còn phải loại bỏ những tế bào nhận biết được những tế bào do cơ
thể tạo ra (self - antigen hay self). Tương ứng với hai khả năng đó ta có quá trình
chọn lọc tích cực và quá trình chọn lọc tiêu cực.
+ Phép chọn lọc tích cực
Phép chọn lọc tích cực đối với các Lymphô bào (T-cell và B-cell) nhằm mục
đích tránh sự xuất hiện của các Lymphô bào không có ích. Những Lymphô bào mà

cơ quan thụ cảm của chúng không có khả năng nhận diện được kháng nguyên. Kết
quả cuối cùng là những Lymphô bào có khả năng nhận diện được kháng nguyên.
+ Phép chọn lọc tiêu cực
Phép chọn lọc tiêu cực của các lymphô bào nhằm mục đích loại bỏ những
lymphô bào mà cơ quan thụ cảm của nó nhận diện được các tế bào do cơ thể tạo ra
và nó có thể tiêu diệt những tế bào này.
1.2. Tổng quan về hệ miễn dịch nhân tạo
8



!
"#$
"%&'()
1.2.1. Khái niệm về hệ miễn dịch nhân tạo
HMD nhân tạo là một hệ thống thích nghi lấy ý tưởng của học thuyết miễn
dịch và những chức năng, nguyên tắc, mô hình miễn dịch quan sát được, áp dụng
giải các bài toán thực tế.
1.2.2. Mô hình hệ miễn dịch nhân tạo

Hình 1.1. Cấu trúc phân tầng của HMD nhân tạo
- Tầng lĩnh vực ứng dụng: lĩnh vực ứng dụng khác nhau sẽ quyết định những
thành phần và cách thức biểu diễn khác nhau và dẫn tới các thao tác trên các thành
phần cũng khác nhau.
- Tầng biểu diễn các thành phần: Trong HMD nhân tạo phải biểu diễn được
hai thành phần quan trọng là kháng thể và kháng nguyên.
- Tầng các phương pháp đánh giá độ thích hợp: sử dụng nhiều phương pháp
khác nhau như khoảng cách Hamming, khoảng cách Euclid, hoặc khoảng cách
Mahattan.
9

- Tầng các thuật toán miễn dịch: Có thể sử dụng các thuật toán miễn dịch
như thuật toán chọn lọc tích cực, NSA, thuật toán clôn, thuật toán aiNet, thuật toán
RAIN để điều chỉnh tính động của hệ HMD nhân tạo.
- Tầng lời giải cho bài toán: Lời giải cho bài toán sẽ được cập nhật lại sau
khi một quần thể mới được tạo và đưa ra kết quả cuối cùng khi đạt đến điều kiện
kết thúc nào đó ví dụ như sau một số bước lặp nhất định.
1.2.3. Thuật toán chọn lọc tích cực và tiêu cực
+ Thuật toán chọn lọc tích cực (Positive Selfection Algorithms)
Ý tưởng của thuật toán khá đơn giản, đó là chọn lọc những T-cell có thể
nhận diện các peptide (một phần của kháng nguyên xâm nhập vào cơ thể), mà
peptide này đã kết hợp với MHC (Major Histocompatibility Complex - phức hợp
các phần tử có nhiệm vụ trình diện peptide kháng nguyên cho
T-cell) để tạo thành MHC/peptide. Giả thiết có tập MHC/peptide, kí hiệu là tập S,
các cơ quan thụ cảm T-cell sẽ phải được kiểm tra về khả năng kết hợp với các phần
tử thuộc tập S này. Nếu một T-cell không nhận diện được bất kỳ phần tử nào, nó sẽ
bị loại bỏ. Trái lại, nó được chọn như một tế bào có khả năng miễn dịch và bổ sung
vào quần thể có giá trị A.
Thuật toán chọn lọc tích cực được minh họa như trong hình 1.4 và có thể
tóm tắt như sau:
Bước 1. Khởi tạo: Sản sinh một quần thể tiềm năng P những T-cell chưa
trưởng thành. Giả thiết tất cả các phần tử được biểu diễn như các xâu nhị phân có
cùng độ dài ℓ.
Bước 2. Đánh giá độ thích hợp: Xác định độ thích hợp của tất cả phần tử
trong quần thể P với tất cả phần tử trong tập Self S.
10
*+
!
",
/0123


&456
!7
Bước 3. Tạo một quần thể có giá trị: Nếu độ thích hợp của một phần tử trong
P với một phần tử trong S lớn hơn hoặc bằng một ngưỡng tương tác chéo nào đó
thì T-cell có khả năng nhận diện kháng nguyên, sẽ được chọn vào quần thể có giá
trị A trái lại T-cell bị loại bỏ.
Hình 1.2. Sơ đồ khối thuật toán chọn lọc tích cực
+ Thuật toán chọn lọc tiêu cực (Negative Selfection Algorithms-NSA)
NSA của Forrest và các đồng nghiệp khá đơn giản [5]: Giả sử đã có một tập
Self-Peptide để tạo thành phức chất MHC-Self peptide, các cơ quan thụ cảm T-cell
nếu nhận diện được một self-peptide thì sẽ bị loại bỏ, trái lại nó sẽ được chọn như
một tế bào có khả năng miễn dịch và bổ sung vào quần thể có giá trị A. Thuật toán
chọn lọc tiêu cực được minh họa trong hình 1.5 có thể được tóm tắt như sau:
11
!
",
/0123

&456
!7
*+
Bước 1. Khởi tạo: Sản sinh một quần thể tiềm năng P những T-cell chưa
trưởng thành. Giả thiết tất cả các phần tử (các cơ quan thụ cảm và các self-peptide)
được biểu diễn bằng một xâu nhị phân ℓ bit.
Bước 2. Đánh giá độ thích hợp: Xác định độ thích hợp của tất cả T-cell trong
P với mọi phần tử của tập Self S.
Bước 3. Tạo một quần thể có giá trị: Nếu độ thích hợp của một T-cell chưa
trưởng thành với ít nhất một phần tử self-peptide lớn hơn hoặc bằng một ngưỡng
tương tác chéo nào đó, thì T- cell nhận diện được self-peptide này và bị loại bỏ,
trái lại T- cell được bổ sung vào quần thể có giá trị A.

Hình 1.3. Sơ đồ khối thuật toán chọn lọc tiêu cực
Trong 2 thuật toán trên S là tập Self hay còn gọi là tập tế bào cần bảo vệ.
12
Chương 2
MỘT SỐ PHƯƠNG PHÁP SINH TẬP BỘ DÒ R-CHUNK
2.1. Một số định nghĩa
2.1.1. Bộ dò
Trong các định nghĩa dưới đây, ta chỉ xét các xâu được xây dựng từ cùng
một tập kí tự Σ. Không mất tính tổng quát, trong đề tài này ta chỉ xét các xâu nhị
phân, nghĩa là Σ = {0,1}. Ngoài ra, kí hiệu Σ
k

được hiểu theo nghĩa thông thường là
tập tất cả các xâu kí tự độ dài k xây dựng từ tập kí tự Σ.
2.1.1.1.Bộ dò r-chunk
Một bộ dò r-chunk là một bộ (d,i) gồm một xâu d

Σ
r
và một số nguyên i

{1,…, ℓ–r+1}. Nó khớp được với một xâu khác s

Σ

nếu s[i,…,i + r – 1] = d.
2.1.1.2. Bộ dò r-contiguous
Một bộ dò r-contiguous là một xâu d

Σ


. Nó khớp được với một xâu khác
s

Σ

nếu có một i

{1,…,ℓ – r + 1} với d[i,…,i + r – 1] = s[i,…,i+r–1].
2.1.2. Tập bộ dò ChunkD(S, r)
Cho một tập xâu kí tự S

Σ

và một số nguyên r

{1,…,ℓ}, kí hiệu (S, r) là
tập hợp các bộ dò r-chunk không khớp được với bất kỳ xâu nào trong S.
2.1.3. Khả năng phát hiện của tập bộ dò
Khả năng phát hiện của tập một tập bộ dò là số lượng nonself mà tập bộ dò
đó khớp được.
13
Một tập bộ dò được gọi là đầy đủ và không dư thừa nếu nó là tập bộ dò bé
nhất có khả năng phát hiện bằng khả năng phát hiện của mọi tập bộ dò đầy đủ.
2.1.4. Hole
Một xâu h

Σ

được gọi là hole hay còn gọi là “lỗ hổng” nếu nó không

thuộc tập S và nó cũng không bị phát hiện bởi bất kỳ bộ dò nào.
Những xâu này là nguyên nhân gây ra lỗi phát hiện sai loại false negative.
Tất cả các hệ thống phát hiện xâm nhập mạng đều cố gắng kiểm soát số lượng hole
này.
2.2. Thuật toán sinh tập bộ dò r-Chunk
2.2.1. Định nghĩa mô hình tiền tố
Một mô hình tiền tố ∏ là một xâu trên bảng chữ cái Σ

{x} có dạng
∏ = vw, với v là một xâu trên Σ và w là một xâu bao gồm chỉ là x. Một xâu s được
mô tả bởi ∏ = vw nếu v là một tiền tố của s và | ∏ | = | s |. Tập của tất cả các xâu
mô tả bởi ∏ được ký hiệu là P(∏).
2.2.2. Mô hình tiền tố cho phần bù của S
2.2.2.1. Phần bù của S
Cho S

Σ

là một tập các xâu,
S
là phần bù của S thì
S
= Σ

\ S.
2.2.2.2. Mô hình tiền tố cho phần bù của S
Cho tập S

Σ
r

, mô hình tiền tố cho phần bù của S ký hiệu là minprefix(
S
)
là tập nhỏ nhất của mô hình tiền tố mô tả chính xác các xâu trong
S
.
14
2.2.2.3. Thuật toán
Thuật toán 1: Sinh mô hình tiền tố.
Input: Một tập S

Σ
r
không rỗng.
Output: Tập minprefix(
S
).
Procedure minprefix(
S
)
Begin
D

Ø
for mỗi s

S do
begin
for i = 1 to r do
begin

p
i

s[1,…,i-1]
][is
if p
i
không là tiền tố của bất kỳ s

S then
D

D

{p
i

ir
xx


}
end;
end;
End;
Thuật toán 2: Thuật toán NSA dựa trên r-chunk
15
Input: Một tập S

Σ


không rỗng, r

{1 ℓ}, một xâu s

Σ

Output: - Tập D = ChunkD(S,r)
- Kết luận s là self hoặc nonself
Procedure Efficient-Chunk-Negative-Selfection;
Begin
D

Ø
for i = 1 to ℓ-r+1 do
begin
S
i
← {s[i… i + r-1] | s

S};
D
i
← {(
π
,i)|
π

minprefix(
S

i
)};
end;
D =
i
i
D
U
;
if s khớp với bất kỳ một p

D then output “s là non-self" else
output “s là self”
End;
Ví dụ 2.4. Cho S = {s1 = 0101; s2 = 0011}
- s1

= 0101
+) i = 1
P
1
=
]1[s1
= 1
16
P
1
không là tiền tố của bất kỳ s

S nên D = D


1xxx = {1xxx},
kí hiệu x để chỉ kí tự tùy ý là 0 hoặc 1
+) i = 2
P
2
= s1[1]
]2[s1
= 00
P
2
là tiền tố của s2 nên loại p2
+) i = 3
P
3
= s1[1]s1[2]
]3[s1
= 011
P
3
không là tiền tố của bất kỳ s

S nên
D = D

011x = {1xxx, 011x}
+) i = 4
P
4
= s1[1]s1[2]s1[3]

]4[s1
= 0100
P
4
không là tiền tố của bất kỳ s

S nên
D = D

0100 = {1xxx, 011x, 0100}
- Lặp lại như trên với s2 = 0011 ta được tập bộ dò
D = {1xxx, 011x, 0100, 000x, 0010}
Độ phức tạp về thời gian để sinh tập bộ dò ChunkD(S, r) là
O(|S|.(ℓ - r +1).r
2
), và để phân biệt một xâu là self hay nonself là O(|S|.r.ℓ
2
) [7].
2.3. Thuật toán sinh tập bộ dò r-contiguous
17
2.3.1.Thuật toán sinh tập bộ dò đơn giản
Tư tưởng bao gồm 5 bước như sau:
• B1: Sinh ra các xâu tế bào có độ dài ℓ từ các file cần bảo vệ trong máy
tính.
• B2: Sinh ngẫu nhiên một xâu Ro có độ dài ℓ.
• B3: Tiến hành so khớp Ro với tất cả các xâu tế bào, nếu Ro mà khớp
được với bất kì xâu tế bào nào thì quay lại bước 2, nếu không sang bước
4.
• B4: Kết nạp xâu R
0

vào tập bộ dò. Nếu tập bộ dò đã đủ số lượng phần tử
N
R
thì sang bước 5. Nếu không quay lại bước 2.
• B5: Kết thúc.
Bạn đọc muốn tìm hiểu rõ hơn về thuật toán sinh bộ dò r-contiguous đơn giản có
thể đọc thêm tài liệu [4]
2.3.2. Thuật toán sinh tập bộ dò dựa vào bảng băm
Việc so khớp hai xâu bất kì thực chất là so khớp lần lượt r vị trí liên tiếp (r

ℓ). Do vậy, chắc chắn trong quá trình so khớp ta phải nhiều lần so khớp các
đoạn có độ dài r giống nhau. Công việc này làm tốn nhiều thời gian tính toán. Để
khắc phục nhược điểm đó, trong tập các xâu lưu trong S, ta có thể loại những xâu
trùng nhau để tăng hiệu suất sử dụng bộ nhớ. Tuy nhiên công việc này lại đòi hỏi
mất thêm thời gian tính toán.
Phương pháp tốt hơn cho công việc này là sử dụng mô hình bảng băm.
2.3.2.1. Phương pháp bảng băm
Tư tưởng: Ta sử dụng bảng A kiểu boolean có n hàng và m cột với:
n = 2
r
và m = ℓ – r + 1
Trong đó:
18
+ A[i, j] = 1: đoạn bit từ bit j đến bit thứ j + r – 1 của các s

S có giá trị là i
trong hệ cơ số 10.
+ A[i, j] = 0: trong trường hợp ngược lại.
- Bảng A được xây dựng bằng cách đọc lần lượt các đoạn r bit liên tiếp của
các xâu trong S rồi tính giá trị thập phân của đoạn bit đó và gán A[i, j] tương ứng

có giá trị bằng 1.
Ví dụ 2.5. Cho S = {01011; 11001; 01010; 10110; 00101}
Ta có ℓ = 5 và chọn r = 3. Vì vậy:
Số dòng của bảng A: n = 2
r
= 2
3
= 8
Số cột của bảng A: m = ℓ – r + 1 = 5 – 3 + 1 = 3
- Ta xây dựng đượ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
* Xét xâu 1: s1 = 01011
+ Với j = 1: ta có đoạn bit 010
19
(010)
2
= (2)
10
Vậy A[2, 1] = 1
+ Với j = 2: ta có đoạn bit 101
(101)
2

= (5)
10
Vậy A[5, 2] = 1
+ Với j = 3: ta có đoạn bit 011
(011)
2
= (3)
10
Vậy A[3, 3] = 1
* Xét xâu 2: s2 = 11001
+ Với j = 1: ta được đoạn bit 110
(110)
2
= (6)
10
Vậy A[6, 1] = 1
+ Với j = 2: ta được đoạn bit 100
(100)
2
= (4)
10
Vậy A[4, 2] = 1
+Với j = 3: ta có đoạn bit 001
(001)
2
= (1)
10
Vậy A[1, 3] = 1
* Xét xâu 3: s3 = 01010
+ Với j = 1: ta có đoạn bit 010

(010)
2
= (2)
10
Ta thấy rằng A[2, 1] đã nhận giá trị là 1, do vậy đoạn bit 010 ở vị trí thứ nhất
đã trùng với đoạn bit ở vị trí thứ nhất của một xâu trước đó. Vậy nên ta đã loại
được các bit giống nhau.
+ Với j = 2: ta được đoạn bit 101
(101)
2
= (5)
10
20
Ta thấy rằng A[5, 1] đã nhận giá trị là 1, do vậy đoạn bit 010 ở vị trí thứ hai
đã trùng với đoạn bit ở vị trí thứ hai của một xâu trước đó. Vậy nên ta đã loại được
các bit giống nhau.
+ Với j = 3: ta được đoạn bit 010
(010)
2
= (2)
10
Vậy A[2, 3] = 1
Thực hiện tương tự với hai xâu còn lại ta sẽ thu được kết quả là bảng A ở
trên.
2.3.2.2. Nhận xét phương pháp sinh tập bộ dò bằng bảng băm
Kích thước của bảng A phụ thuộc vào độ lớn của hai tham số ℓ và r. Với
các giá trị tham số hợp lý thì hoàn toàn có thể lưu A ở bộ nhớ trong.
Các xâu bit có đoạn r bit tương ứng giống nhau sẽ tự động được loại bỏ vì ta
chỉ cần biết đoạn bit đó nằm ở vị trí nào và có giá trị trong hệ 10 là bao nhiêu, ta
lưu những đoạn trùng lặp nên tối ưu về bộ nhớ.

Vì A là bảng hai chiều, được lưu trữ trên bộ nhớ trong nên việc truy cập đến
phần tử A[i, j] chỉ mất thời gian là O(1). Dù dữ liệu bảo vệ có thay đổi, rất lớn đi
nữa thì ta vẫn chỉ cần một bảng A kích thước cố định 2
r
dòng,
(ℓ - r + 1) cột.
Bạn đọc muốn tìm hiểu chi tiết về thuật toán sinh tập bộ dò bằng bảng băm
có thể đọc thêm [4].
2.4. Phương pháp sinh tập bộ dò bằng cây nhị phân
Với việc sinh tập bộ dò theo phương pháp tiền tố như mô tả ở trên thì mỗi
lần sinh được một xâu ta lại phải kiểm tra xem xâu đó có khớp với s không, do đó
sẽ rất tốn chi phí tính toán lại.
Để khắc phục nhược điểm đó, sử dụng cấu trúc dữ liệu cây nhị phân.
21
2.4.1. Ý tưởng
Đầu tiên ta tạo một rừng cây với số lượng ℓ-r+1 cây là với các gốc được lưu
bởi mảng root[1…ℓ-r+1]. Mỗi cây có gốc là root[i] sẽ được tạo ra trực tiếp từ S
chính là phần bù của D
i
, là {0,1}
r
\D
i
, i = 1,…, (ℓ - r + 1). Sau đó chúng ta thực
hiện điều chỉnh cây đó để nó tương đương với D
i
. Việc khớp r đoạn bít tương
đương với việc duyệt trên cây. Trong các hình vẽ minh họa cây, để đơn giản chúng
ta mặc định con trái được gán nhãn là 0 và con phải được gán với nhãn là 1.
2.4.2. Thuật toán sinh tập bộ dò r-Chunk bằng cây nhị phân

Input: Tập các xâu S, ℓ, r
Output: ChunkD(S, r)
Procedure CHUNK_DETECTOR_NSA
Begin
{Tạo cây}
for i = 1 to ℓ-r+1 do
begin
Khởi tạo cây nhị phân root[i] trống.
for

s

S do chèn s [i, , r + i-1] vào root[i];
{Từ cây đã tạo thêm bớt nút tạo ra cây ChunkD(S,r))}
for

root[i] với i = 1 n
Với mỗi nút thuộc root[i] được duyệt theo chiều sâu
+) Nếu nút đó là lá thì xóa
+) Ngược lại:
22
begin
- Nếu nút trái hoặc nút phải = null thì tạo nút
con cho nút đó.
- Duyệt đệ quy với nút trái hoặc nút phải ≠
null.
end;
end;
End;
Độ phức tạp thuật toán tạo ChunkD(s, r) là |S|(ℓ - r + 1)r và so khớp là (ℓ - r + 1)r

Ví dụ 3.1. Cho S = {s
1
= 01111; s
2
= 00111; s
3
= 10000; s
4
= 10001;
s
5
= 10010} ⊂ {0,1}
5
.
Bước 1 : Chọn ℓ = 5 và r = 3
Bước 2 :
Với s
1
= 01111 ta sẽ có (011, 1), (111, 2), (111, 3)
root[1] root[2] root[3]
Hình 2.1. Một phần của các cây nhị phân sinh ra bởi s
1
= 01111
Với s
2
= 00111 ta sẽ có (001, 1); (011, 2); (111, 3)
root[1] root[2] root[3]
23
Hình 2.2. Một phần của cây nhị phân khi thêm s
2

Tương tự với các s
i
còn lại ta sẽ được cây sau:
root[1]: root[2]: root[3]:

Hình 2.3. Cây được tạo hoàn chỉnh từ tập S
Bước 3:
Xét root[1] ta thấy nhánh 00 có duy nhất một lá bên phải, vậy ta sẽ tạo lá bên
trái và xóa lá bên phải (minh họa bởi mũi tên có nét gạch đứt).
Hình 2.4. Nhánh đầu tiên của cây để tạo cây Rchunk(S, 3)
Với các nhánh còn lại ta cũng làm tương tự vậy ta sẽ được các cây như sau:
root[1] root[2] root[3]
24
Hình 2.5. Cây r - chunk(S, 3) được tạo hoàn chỉnh
25

×