Tải bản đầy đủ (.pdf) (62 trang)

nghiên cứu một số kỹ thuật đối sánh mẫu và ứng dụng trong bài toán tìm kiếm xấp xỉ

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 (1.36 MB, 62 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

ĐẠI HỌC THÁI NGUYÊN

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG </b>

<b>PHẠM VĂN QUYẾT </b>

<b>NGHIÊN CỨU MỘT SỐ KỸ THUẬT ĐỐI SÁNH MẪU VÀ ỨNG DỤNG TRONG BÀI TỐN TÌM KIẾM XẤP XỈ </b>

<b>LUẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH Ngành: Khoa học máy tính </b>

<b>Thái Nguyên- 2023 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

ĐẠI HỌC THÁI NGUYÊN

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG </b>

<b>PHẠM VĂN QUYẾT </b>

<b>NGHIÊN CỨU MỘT SỐ KỸ THUẬT ĐỐI SÁNH MẪU VÀ ỨNG DỤNG TRONG BÀI TỐN TÌM KIẾM XẤP XỈ </b>

<b>Ngành: Khoa học máy tính Mã số: 8480101 </b>

<b>LUẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: TS. NGUYỄN ĐÌNH DŨNG </b>

<b>Thái Nguyên- 2023 </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.1.1. Bài toán đối sánh chuỗi ... 9

1.1.2. Các thuật tốn đối sánh chính xác cổ điển ... 11

1.1.3. Các thuật tốn đối sánh chính xác dựa trên mơ hình Automat ... 16

1.1.4. Thuật tốn đối sánh gần đúng dựa trên quy hoạch động ... 17

2.1. Bài toán lựa chọn phản biện ... 22

2.1.1. Tổng quan về hệ thống hỗ trợ lựa chọn phản biện ... 22

2.1.2. Bài toán xác định độ gần ngữ nghĩa ... 31

2.1.3. Thuật toán lựa chọn phản biện dựa trên quy hoạch động ... 32

2.1.4. Thuật toán lựa chọn phản biện dựa trên Otomat hữu hạn mờ ... 37

2.2. Bài toán phát hiện giả mạo trang web... 41

2.2.1. Khái niệm cây DOM ... 41

2.2.2. Xây dựng cây DOM ... 42

2.2.3. Phát hiện giả mạo dựa trên cây DOM ... 44

KẾT LUẬN CHƯƠNG 2 ... 46

CHƯƠNG 3. XÂY DỰNG ỨNG DỤNG ... 47

3.1. Mô tả yêu cầu hệ thống ... 47

3.2. Một số chức năng chính của hệ thống ... 52

3.2.1. Xác định Actor và Use Case ... 52

3.2.2. Các chức năng của chương trình ... 54

KẾT LUẬN CHƯƠNG 3 ... 57

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ... 58

TÀI LIỆU THAM KHẢO ... 59

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>LỜI CẢM ƠN </b>

Luận văn này được hoàn thành tại Trường Đại học Công nghệ Thông tin và Truyền thông dưới sự hướng dẫn của TS. Nguyễn Đình Dũng. Tác giả xin bày tỏ lòng biết ơn tới các thầy cô giáo thuộc Trường Đại học Công nghệ Thông tin và Truyền thông đã tạo điều kiện và giúp đỡ tác giả trong quá trình học tập và làm luận văn tại Trường, đặc biệt tác giả xin bày tỏ lòng biết ơn tới TS. Nguyễn Đình Dũng đã tận tình hướng dẫn và cung cấp nhiều tài liệu cần thiết để tác giả có thể hồn thành luận văn đúng thời hạn.

Xin chân thành cảm ơn anh chị em học viên cao học và bạn bè đồng nghiệp đã trao đổi, động viên và khích lệ tác giả trong quá trình học tập và làm luận văn tại Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên.

<i>Thái Nguyên, tháng 9 năm 2023 </i>

<b> Học viên cao học </b>

<b> Phạm Văn Quyết </b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>LỜI CAM ĐOAN </b>

Tôi xin cam đoan luận văn này do chính tơi thực hiện, dưới sự hướng dẫn khoa học của TS. Nguyễn Đình Dũng, các kết quả lý thuyết được trình bày trong luận văn là sự tổng hợp từ các kết quả đã được cơng bố và có trích dẫn đầy đủ, Chương trình ứng dụng trong luận văn này được tác giả thực hiện là hoàn toàn trung thực, nếu sai tơi hồn tồn chịu trách nhiệm.

<i>Thái Nguyên, tháng 9 năm 2023 </i>

<b> Học viên cao học </b>

<b> Phạm Văn Quyết </b>

<i><b> </b></i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>DANH MỤC CÁC BẢNG </b>

<i><b>Bảng 2.1. Các từ khóa của phản biện (ReviewerKeyword) </b></i>

<i><b>Bảng 2.2. Khoảng cách chuyên môn (ExpertiseDistance) </b></i>

<b>Bảng 2.3. Bảng RK minh họa thuật toán </b>

<b>Bảng 2.4. Kết quả thực hiện thuật toán </b>

<b>Bảng 3.1. Xác định các tác nhân </b>

<b>Bảng 3.2. Xác định các use case </b>

<b>Bảng 3.3. Scenario cho use case Đăng nhập </b>

<b>Bảng 3.4. Scenario cho use case Cập nhật lý lịch sơ lược </b>

<b>Bảng 3.5. Scenario cho use case Tổng hợp bài báo theo phản biện </b>

<b>Bảng 3.6. Scenario cho use case Tổng hợp bài báo theo tác giả </b>

<b>Bảng 3.7. Scenario cho use case Chọn bài báo phản biện </b>

<b>Bảng 3.8. Bảng tblCriticism lưu các thông tin về phản biện </b>

<b>Bảng 3.9. Bảng tblJournal lưu các thông tin về bài báo </b>

<b>Bảng 3.10. Bảng tblChuyensan lưu trữ danh mục các chuyên san </b>

<b>Bảng 3.11. Bảng tblCri_Journal_and_Book </b>

<b>Bảng 3.12. Bảng tblCri_ProcessOfWork </b>

<b>Bảng 3.13. Bảng tblCri_ScientificResearch lưu thông tin đề tài của phản biện </b>

<b>Bảng 3.14. Bảng tblGender lưu thông tin danh mục giới tính </b>

<b>Bảng 3.15. Bảng tblKeywordKHX lưu thơng tin từ khóa của các phản biện thuộc lĩnh </b>

<b>Bảng 3.19. Bảng tblMenu lưu thông tin danh mục menu trang chủ </b>

<b>Bảng 3.20. Bảng tblPermission lưu thông tin danh mục phân quyền trong hệ thống </b>

<b>Bảng 3.21. Bảng tblResultOfCriticism lưu thông tin danh mục các kết quả phản biện </b>

<b>Bảng 3.22. Bảng tblUser lưu thông tin người sử dụng hệ thống</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>Hình 2.2. Bước 2 Xây dựng mảng cấu trúc invlovedReviewers </b>

<b>Hình 2.3. Cây DOM của một trang HTML </b>

<b>Hình 2.4. Ví dụ cây DOM </b>

<b>Hình 2.5. Biểu diễn các đối tượng trang web </b>

<b>Hình 2.6. Hai trang web thật và giả mạo dưới dạng cây DOM </b>

<b>Hình 3.1. Các chức năng hệ thống hỗ trợ lựa chọn phản biện </b>

<b>Hình 3.2. Form Chức năng tìm kiếm phản biện </b>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>LỜI MỞ ĐẦU </b>

Ngày nay, việc xây dựng cơng cụ tìm kiếm hiệu quả đang được nhiều người quan tâm, đặc biệt là Bài tốn tìm kiếm xấp xỉ [1-2] trong cơ sở dữ liệu hay trong các hệ thống rút trích văn bản. Hiện nay đã có rất nhiều máy tìm kiếm phổ biến trên Internet, tuy nhiên tất cả các máy tìm kiếm khơng có hoặc có nhưng cịn hạn chế về khả năng tìm kiếm xấp xỉ. Trong các hệ quản trị cơ sở dữ liệu, khả năng tìm kiếm thơng tin gần đúng duy nhất của truy vấn SQL cịn hạn chế khi dùng tốn tử “Like”. Vì vậy, nghiên cứu bài tốn tìm kiếm xấp xỉ hiệu quả ngày càng cần thiết và có nhiều ứng dụng trong thực tế. Một trong các kỹ thuật tìm lời giải cho bài tốn tìm kiếm xấp xỉ được sử dụng dụng phổ biến hiện nay là kỹ thuật đối sánh mẫu.

Trong những năm gần đây, sự phát triển của công nghệ thông tin và ngành công nghiệp phần cứng đã làm cho khả năng thu thập và lưu trữ dữ liệu của các hệ thống thông tin tăng nhanh. Bên cạnh đó việc tin học hố các hoạt động sản xuất, kinh doanh cũng như nhiều lĩnh vực hoạt động khác đã tạo ra cho chúng ta một lượng dữ liệu lưu trữ lớn. Nhiều cơ sở dữ liệu đã được sử dụng trong các hoạt động sản xuất, kinh doanh, quản lí..., trong đó có những cơ sở dữ liệu lớn cỡ Gigabyte, thậm chí là Terabyte. Sự gia tăng này đã dẫn tới một yêu cầu là cần có những kĩ thuật và cơng cụ mới để phân tích, dự đốn dự báo thơng tin dựa trên khối dữ liệu đó. Do vậy, các kĩ thuật đối sánh đã trở thành một trong những vấn đề quan tâm của CNTT thế giới hiện nay. Đối sánh mẫu (pattern matching) là một chủ đề quan trọng của lĩnh vực xử lý văn bản và được ứng dụng rộng rãi trong nhiều lĩnh vực như: An ninh mạng, quảng cáo, xử lý văn bản, tài chính và thị trường chứng khoán, thương mại, giáo dục, y tế, sinh học, bưu chính viễn thơng,…

Trong lĩnh vực an ninh mạng đối sánh mẫu được ứng dụng để kiểm tra và lọc nội dung gói tin trên Firewall, đối sánh mã virus trong các ứng dụng diệt virus, các hệ thống phát hiện và ngăn chặn xâm nhập mạng NIDS/NIPS [10].

Trong lĩnh vực quảng cáo của Google Ads, đối sánh mẫu được dùng để đối sánh từ khóa Google Ads, bao gồm: Đối sánh rộng, đối sánh cụm từ, đối sánh chính xác, và đối sánh cụm từ mới. Đây là các kỹ thuật nhằm mở rộng và tiếp cận tối đa thị trường có liên quan đến từ khóa quảng cáo.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Mục tiêu của luận văn là nghiên cứu một số kỹ thuật đối sánh mẫu [3-6], [8-9] và áp dụng vào một một số bài toán cụ thể: Bài toán tìm kiếm phản biện cho bài báo (bài tốn tìm kiếm phản biện luận văn hay bài tốn tìm kiếm sản phẩm trên web đều có cách làm tương tự) [7], bài toán phát hiện trang web giả mạo.

Đối với bài tốn tìm kiếm phản biện cho bài báo, luận văn tập trung vào các công đoạn của quá trình hoạt động của tạp chí, từ khâu nhận bài, lựa chọn phản biện, biên tập và xuất bản. Nhằm nâng cao hiệu quả của việc tiếp nhận, chọn lọc và phản biện, nội dung luận văn nghiên cứu thuật toán lựa chọn phản biện cho bài báo dựa trên thông tin đầu vào là danh sách các từ khóa về nhà khoa học và từ khóa bài báo để từ đó lựa chọn phản biện sao cho phù hợp về chun mơn.

Đối với bài tốn phát hiện trang web giả mạo, các trang web giả mạo bắt trước các trang web hợp lệ đến mức tốt nhất có thể để người dùng tin tưởng và tiết lộ những thông tin nhạy cảm. Hầu hết các trang lừa đảo đều làm tốt việc tạo giao diện hợp lệ bằng cách sao chép, bố trí các trang, font, màu, logo và cả những thông tin bảo mật của trang hợp lệ. Để giải quyết vấn đề này, luận văn tiếp cận theo phương pháp đối sánh cấu trúc DOM dưới dạng mơ hình dữ liệu cây, theo kỹ thuật này nếu hai trang web có cấu trúc giống nhau thì thuộc diện nghi ngờ.

<i><b>Đề tài luận văn ”</b></i><b>Nghiên cứu một số kỹ thuật đối sánh mẫu và ứng dụng trong bài tốn tìm kiếm xấp xỉ”</b> tập trung nghiên cứu và thực hiện 4 nội dung chính sau:

1. Nghiên cứu một số kỹ thuật đối sánh mẫu.

2. Nghiên cứu một số bài toán lựa chọn phản biện tự động cho Hội nghị khoa học đã được cơng bố và một số thuật tốn tìm kiếm xấp xỉ đối với bài toán hỗ trợ lựa chọn phản biện cho Tạp chí Khoa học.

3. Nghiên cứu kỹ thuật đối sánh mẫu và áp dụng cho bài toán phát hiện trang web giả mạo.

4. Xây dựng ứng dụng hỗ trợ lựa chọn phản biện bài báo cho Tạp chí Khoa học và Cơng nghệ Đại học Thái Nguyên.

Các kết quả đạt được trong luận văn này là kết quả trong quá trình học tập và nghiên cứu của tác giả tại Trường Đại học Công nghệ Thông tin và Truyền thơng.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Ngồi phần mở đầu, kết luận và tài liệu tham khảo, nội dung luận văn được trình bày thành 3 chương. Chương 1 là tổng quan kỹ thuật đối sánh mẫu, Chương 2 trình bày một số bài tốn tìm kiếm xấp xỉ và ứng dụng kỹ thuật đối sánh mẫu cho từng bài toán: Hệ thống lựa chọn phản biện cho Hội nghị, tạp chí và thuật toán lựa chọn phản biện dựa trên các phương pháp tìm kiếm xấp xỉ; Bài toán phát hiện trang web giả mạo dựa trên đối sánh đồ thị. Chương 3 là xây dựng ứng dụng hỗ trợ lựa chọn phản biện bài báo cho Tạp chí Khoa học và Cơng nghệ Đại học Thái Nguyên.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>CHƯƠNG 1. TỔNG QUAN KỸ THUẬT ĐỐI SÁNH MẪU</b>

Đối sánh mẫu hay còn gọi là so khớp mẫu và tìm kiếm mẫu là bài toán quan trọng trong lĩnh vực tìm kiếm trong cơ sở dữ liệu, xử lý văn bản nói riêng và ứng dụng trong CNTT truyền thông nói chung. Bài tốn được ứng dụng trong nhiều lĩnh vực khác nhau. Chương này này tập trung vào một số kỹ thuật đối sánh mẫu được dùng cho hai bài toán, bao gồm bài tốn tìm kiếm phản biện và bài toán phát hiện trang web giả mạo.

<b>1.1. Đối sánh chuỗi </b>

<b>1.1.1. Bài toán đối sánh chuỗi </b>

Đối sánh chuỗi là việc so sánh một chuỗi hoặc nhiều chuỗi với văn bản để tìm vị trí và số lần xuất hiện của chuỗi đó trong văn bản.<small> </small>

Bài toán đối sánh chuỗi được mô tả như sau [11]: Cho một bảng chữ cái Σ

<i><b>là một tập hữu hạn các ký tự, một mẫu P (P [1..m]) độ dài m và một chuỗi ký tự T (T </b></i>

<i><b>[1..n]) độ dài n (trong đó m<<n). Bài tốn đặt ra là cần tìm các vị trí xuất hiện của P </b></i>

<i><b>trong T hoặc P có khớp với một chuỗi con của T hay không? </b></i>

Gọi Σ là một tập hữu hạn các ký tự. Thông thường, các ký tự của cả mẫu tìm kiếm và đoạn văn bản gốc đều nằm trong Σ. Tập Σ tùy từng ứng dụng cụ thể có thể là bảng chữ cái tiếng Anh từ A đến Z thơng thường, cũng có thể là một tập nhị phân chỉ gồm hai phần tử 0 và 1 (Σ = {0,1}) hay có thể là tập các ký tự DNA trong sinh học (Σ = {A,C,G,T}). Phương pháp đầu tiên và đơn giản nhất có thể nghĩ đến ngay là lần lượt

<i><b>xét từng vị trí i trong xâu ký tự gốc từ 1 đến n-m+1, so sánh T[i…(i+m-1)] với P[1..m] </b></i>

bằng cách xét từng cặp ký tự một và đưa ra kết quả tìm kiếm. Dễ thấy độ phức tạp của

<i><b>thuật toán là O(n*m). </b></i>

<i><b>Các thuật toán đối sánh thường sử dụng cơ chế cửa sổ trượt (một khung có kích </b></i>

thước bằng với kích thước của mẫu cần tìm) để so sánh các ký tự của mẫu trong cửa sổ với các ký tự trong văn bản. Tất cả các thuật toán đối sánh chuỗi đều có hai giai đoạn là: tiền xử lý và tìm kiếm. Việc đánh giá các thuật tốn được thực hiện dựa trên dung lượng bộ nhớ sử dụng và tốc độ đối sánh. Các thuật toán đối sánh được phân loại theo cách tiếp cận xây dựng thuật toán và số lượng mẫu. Các thuật tốn đối sánh chuỗi có

<i><b>thể phân loại theo nhiều tiêu chí: </b></i>

<i><b>Dựa trên số lượng mẫu, chúng ta có hai loại: Đối sánh đơn mẫu (single pattern) </b></i>

<i><b>và đối sánh đa mẫu (multiple patterns). Các thuật toán đối sánh đơn mẫu chỉ tiến hành </b></i>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<i><b>so sánh lần lượt từng mẫu P trên văn bản T, còn đối sánh đa mẫu cho phép so sánh cùng lúc nhiều mẫu Pi (i=1..k) trên văn bản T. Các thuật toán Đối sánh đa mẫu thường </b></i>

là những cải tiến của đối sánh đơn mẫu nhằm nâng cao hiệu quả đối sánh.

<i><b>Dựa trên cơ sở thứ tự so sánh: thuật toán đối sánh chuỗi có thể được thực hiện </b></i>

theo các thứ tự sau: từ trái sang phải, từ phải sang trái, so sánh tại vị trí cụ thể và so

<i><b>sánh không theo thứ tự nhất định. </b></i>

<i><b>Dựa trên độ chính xác của kết quả so khớp: các thuật tốn đối sánh được chia </b></i>

<i><b>thành hai loại: Đối sánh chính xác (Extract String Matching) và đối sánh gần đúng (Approximate String Matching). Đối sánh chính xác là khẳng định mẫu P có xuất hiện </b></i>

<i><b>ở trong chuỗi T hay khơng? Cịn thuật tốn đối sánh xấp xỉ chỉ đánh giá sự tương đồng của mẫu P so với mẫu T dựa trên một hàm đo khoảng cách nào đó. Đa số các thuật tốn đối sánh khơng chính xác sử dụng khoảng cách Hamming hay khoảng cách Levenshtein với k vị trí khác biệt được thiết lập trước [2]. </b></i>

<i><b>Dựa trên cơ sở thiết kế thuật toán: Các thuật toán đối sánh được chia thành ba </b></i>

<i><b>loại: Đối sánh dựa trên tiền tố (prefix), đối sánh dựa trên hậu tố (suffix) và đối sánh dựa trên các nhân tố (factor). </b></i>

<b>Hình 1.1. Đối sánh dựa trên tiền tố </b>

Quá trình đối sánh của thuật toán dựa trên tiền tố được thực hiện bằng cách tìm kiếm từ đầu cửa sổ trượt, tất cả các ký tự trong văn bản T đều được đọc và kiểm tra, nếu khơng khớp thì dịch chuyển sang ký tự tiếp theo. Đây là chiến lược đơn giản nhất nhưng số lượng phép so sánh lớn nên tốc độ thực hiện chậm (xem Hình 1.1).

Thuật tốn đối sánh dựa trên hậu tố thực hiện bằng cách tìm kiếm từ cuối cửa sổ

<i><b>trượt, chúng ta không đọc tất cả các ký tự liên tiếp trong văn bản T mà dịch hay bỏ qua </b></i>

các ký tự dựa vào kết quả so sánh các ký tự ở cuối cửa sổ (xem Hình 1.2). Đây là cơ sở để giảm số lượng phép so sánh và giảm độ phức tạp của thuật tốn.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>Hình 1.2. Đối sánh hậu tố </b>

Thuật toán đối sánh dựa trên thừa số thực hiện bằng cách tìm kiếm từ cuối cửa

<i><b>sổ trượt, chúng ta không đọc tất cả các ký tự liên tiếp trong văn bản T mà so sánh từng ký tự đặc biệt để đoán nhận tập nhân tố (các mẫu con) của mẫu P ban đầu (Hình </b></i>

1.3).

<b>Hình 1.3. Đối sánh dựa trên các nhân tố </b>

Để đánh giá hiệu năng của thuật toán đối sánh chuỗi, chúng ta có thể dựa trên những tiêu chí sau: Số lần tìm kiếm, duyệt trên mẫu và văn bản; Độ phức tạp thời gian; Tiêu chuẩn được lựa chọn để đối sánh; Số mẫu được đối sánh; Kỹ thuật biểu diễn mẫu.

<b>1.1.2. Các thuật toán đối sánh chính xác cổ điển </b>

Các kỹ thuật đối sánh chính xác cổ điển được xây dựng dựa trên số ký tự được so sánh. Sự khác biệt của các thuật tốn là q trình tính tốn xác định số ký tự được dịch chuyển sau mỗi lần so sánh. Việc so sánh có thể được tiến hành từ trái qua phải hay từ phải qua trái, vị trí ký tự so sánh có thể là dựa trên tiền tố, hậu tố,... Các thuật toán đối sánh điển hình có thể kể đến gồm:

<b>Thuật tốn Brute Force </b>

Đối sánh mẫu là một chủ đề quan trọng của lĩnh vực xử lý văn bản. Bài toán so mẫu chính xác tổng quát được phát biểu là: Cho xâu mẫu P và xâu đích (văn bản) T trên cùng bảng chữ cái A. Tìm một sự xuất hiện của P trong T. Thuật tốn cơ bản nhất tìm lời giải cho bài toán là thuật toán Brute Force [1] với độ phức tạp của thuật toán là

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<i>O(mn), tư tưởng của thuật toán là kiểm tra tất cả các vị trí trong T từ vị trí đầu tiên đến </i>

<i>vị trí thứ n-m, mỗi vị trí thứ i thuật toán thực hiện so sánh T[i,i+1,…,i+m-1] với xâu mẫu P, nếu thấy thì trả về vị trí i, nếu khơng thấy thì tiếp tục dịch sang vị trí thứ i+1. Nhược điểm của thuật toán này là kiểm tra tất cả các vị trí i (i=0,1,…,n-m) mà khơng </i>

quan tâm tới khả năng xuất hiện xâu mẫu hay khơng ở mỗi vị trí. Giả mã của thuật toán như sau:

<i><small>int BFmatcher(int n, int m){ </small></i>

Có thể thấy với mỗi vòng lặp, chúng ta mất tối đa mm phép so sánh để kiểm tra

<i>xâu P có xuất hiện trong văn bản hay khơng. Do đó: Thời gian tìm xâu mẫu P trong văn bản T của giải thuật là O(mn). </i>

<b>Thuật toán Knuth-Morris-Pratt </b>

Khắc phục hạn chế của thuật toán Brute Force, Knuth, Donald E., James H. Morris, Jr và Vaughan R. Pratt [1] đã đề xuất thuật tốn tìm kiếm KMP có độ phức tạp

<i>tuyến tính O(n+m), ý tưởng chính của thuật tốn là tìm kiếm vị trí của xâu mẫu P trong T, nếu tìm thấy vị trí sai thì chuyển sang vị trí tìm kiếm tiếp theo và q trình tìm </i>

kiếm sau này sẽ được tận dụng thông tin từ quá trình tìm kiếm trước để không phải

<i>kiểm tra những vị trí mà chắc chắn là vị trí khơng xuất hiện xâu mẫu P. Thuật tốn </i>

KMP được mơ tả như sau:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<i><b><small>Return {pos, matched} </small></b></i>

<i>Trong đó, matched là biến cho giá trị là 0 nếu khơng tìm thấy và giá trị là 1 nếu tìm thấy P xuất hiện trong T; pos là vị trí xuất hiện của P trong T;KMPlà bảng đối sánh một phần, với sự xuất hiện của KMP cho thấy thuật toán thực hiện với độ phức tạp là O(n), mục đích của bảng là cho phép thuật toán so sánh mỗi ký tự của T không quá một lần. Thuật toán xác định bảng KMP được mơ tả như sau: </i>

<i>Độ phức tạp của thuật tốn xây dựng bảng KMP là O(m). </i>

<i><b>Thuật toán Boyer-Moore (1977) [21] được xây dựng để kiểm tra các ký tự của </b></i>

mẫu từ phải sang trái. Khi phát hiện sự khác nhau sẽ tiến hành dịch mẫu sang phải văn

<i>bản một số vị trí với hai cách dịch chuyển mẫu là Good-suffix và Bad-character. Khoảng cách dịch chuyển Good-suffix gần giống trong thuật toán KMP, chúng ta dịch mẫu sang phải văn bản sao cho tại vị trí mới có đoạn u trên mẫu P khớp với đoạn u </i>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<i>trên văn bản T và ký tự c trên mẫu P ngay trước u phải khác a. Ta chọn đoạn dịch ngắn nhất. Nếu khơng có cả đoạn u trong P, ta chọn sao cho phần đuôi dài nhất của u xuất hiện ở đầu mẫu P. Với Bad-character, khi xuất hiện sự khác nhau giữa mẫu P và văn bản T với b T i j P i a         , ta sẽ dịch sao cho có một ký tự giống b trên mẫu khớp vào vị trí đó, nếu có nhiều vị trí xuất hiện b trên mẫu ta chọn vị trí bên phải nhất. Nếu khơng có ký tự b nào trong mẫu ta sẽ dịch sao cho ký tự trái nhất của mẫu vào vị trí ngay sau ký tự T i j b     để đảm bảo sự ăn khớp. Hai hướng tiếp cận sẽ tạo ra </i>

giá trị dịch chuyển khác nhau, từ đó sẽ lựa chọn giá trị lớn hơn làm giá trị dịch chuyển.

<i>Độ phức tạp trung bình của thuật toán BM là O(n/m) trong trường hợp các ký tự trong </i>

<i>T không thường xuyên xuất hiện trong mẫu P, trong trường hợp xấu nhất là O(n+m). </i>

Thời gian thực thi của BM sẽ giảm khi độ dài của mẫu tăng.

<i><b>Thuật toán Boyer-Moore-Horspool (1980) dựa trên việc tìm kiếm ký tự </b></i>

<i>lỗi với hai thủ tục tìm kiếm đơn giản dùng để tìm ký tự đầu tiên (SFC-search for first </i>

<i>character) và quét ký tự có tần suất xuất hiện ít nhất (SLFC- scan for lowest frequency character) nhằm hỗ trợ thuật toán Boyer-Moore để quá trình tìm kiếm được thực hiện </i>

khơng phụ thuộc vào trạng thái của chuỗi. Đầu tiên, giai đoạn tiền xử lý sẽ sinh ra mảng NEXT để quyết định việc di chuyển các vị trí tìm kiếm tiếp theo. Mảng NEXT có vai trị rất quan trọng trong việc thực thi thuật tốn, vị trí của ký tự tiếp theo trong chuỗi mẫu được định nghĩa như một con trỏ tham chiếu. Quá trình xây dựng mảng NEXT dựa trên tập qui tắc sau: (i) với mỗi ký tự trong chuỗi mẫu, xác định sự khác

<i>nhau về độ dài mẫu dựa vào vị trí của con trỏ NEXT [c] của chuỗi mẫu. (ii) với mỗi ký tự không thuộc chuỗi mẫu, xác định tăng chiều dài của chuỗi mẫu tại NEXT [c]. Nội </i>

dung của con trỏ tham chiếu được sử dụng như tiền điều kiện để sinh ra mảng NEXT cho phép thực thi dịch chuyển sang vị trí tiếp theo trong q trình tìm kiếm. Q trình đối sánh có thể được thực hiện từ trái sang phải hay từ phải sang trái. Cách tìm kiếm hiệu quả được thực hiện từ phải qua trái cho phép nếu phát hiện khơng khớp thì khơng cần xuất phát từ vị trí bắt đầu của chuỗi con mà vị trí hiện thời có thể bắt đầu từ vị trí các chuỗi con tiếp theo. Điều này cho phép hạn chế số lượng các phép so sánh cần

<i>thực hiện và được gọi là thuật toán đối sánh chuỗi AN (Array Next). </i>

<i><b>Thuật toán Apostolico-Giancarlo (1986) dựa trên tiếp cận ghi nhớ tất cả </b></i>

hậu tố của các mẫu được tìm thấy trong văn bản sử dụng bảng dịch chuyển kmpNext để tính số lần dịch chuyển. Từ đó tính tốn khoảng cách dịch chuyển phù hợp đến vị

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

trí ký tự cuối cùng trong mẫu với mỗi lần thử. Giai đoạn tiền xử lý bao gồm cơng đoạn tính tốn bảng kmpNext[] và số nguyên . Nĩ cĩ thể bị mất O(m) khơng gian và thời gian xử lý. Việc tìm kiếm mất O(n) thời gian, do vậy thuật tốn thuật tốn Apostolico–

<i>Giancarlo thực hiện so sánh n ký tự văn bản trong trường hợp xấu nhất. </i>

<i><b>Thuật tốn Quick Search (1990) là cải tiến đơn giản hĩa của thuật tốn </b></i>

<i>Boyer Moore chỉ sử dụng bảng dịch “Bad-character shift” khi xác định số bước </i>

dịch chuyển trong trường hợp xấu nhất. Thuật tốn Quick Search thực hiện rất nhanh với tập các mẫu ngắn và các văn bản lớn. Sau mỗi lần thử, cửa sổ trượt sẽ dịch chuyển sang vị trí tiếp theo trong gĩi tin dựa vào bảng qsBC, độ dài mỗi lần dịch ít nhất sẽ bằng 1.

<i><b>Thuật tốn Boyer-Moore-Smith (1991) là sự kết hợp việc đánh giá hiệu </b></i>

quả từ lựa chọn số ký tự dịch chuyển lớn nhất dựa trên tính tốn các bước dịch chuyển trong văn bản bên phải nhất của ký tự đang xét.

<i><b>Thuật tốn Colussi Algorithm (1991) cũng là một cải tiến từ thuật tốn </b></i>

KMP bằng cách chia các vị trí ký tự trong mẫu thành hai tập con tách biệt. Các vị trí trong tập thứ nhất sẽ được duyệt từ trái quá phải và các vị trí khơng khớp sẽ được duyệt lại trong tập con thứ hai từ phải qua trái.

<i><b>Thuật tốn Raita (1992): dựa trên sự hiệu chỉnh từ thuật tốn </b></i>

BoyerMoore-Horspool với chiến lược tìm kiếm bắt đầu bằng cách so sánh ký tự bên phải nhất của cửa sổ trượt và đếm từng vị trí tương ứng. Với các vị trí khớp sẽ tiếp tục so sánh ký tự bên trái của cửa sổ dịch chuyển với ký tự bên trái của mẫu. Cuối cùng sẽ so sánh tồn bộ các ký tự từ phải qua trái đến khi mẫu được tìm thấy hoặc loại bỏ mẫu đĩ.

<i><b>Thuật tốn Turbo-BM (1994): tiếp tục là một cải tiến của thuật tốn </b></i>

<i>Boyer-Moore bằng cách ghi nhớ các xâu con của văn bản T đã được xuất hiện trong </i>

phần hậu tố của mẫu khi so sánh các ký tự cuối cùng.

<i><b>Thuật tốn Berry-Ravindran (1999) [là cải tiến của thuật tốn Quick </b></i>

Search dựa trên việc sử dụng các luật cho phép thực hiện nhanh các lần lặp với các ký tự khơng khớp được tìm thấy.

Ngồi ra cịn rất nhiều thuật tốn khác như: Not So Nạve, Simon, GalilGiancarlo, Horspool, Zhu-Takaoka, Smith, Two way, KMPSkip, Alpha Skip,…

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>1.1.3. Các thuật tốn đối sánh chính xác dựa trên mơ hình Automat </b>

Các kỹ thuật đối sánh chính xác tiếp theo được đề xuất sử dụng mơ hình

<i>Automat tất định hữu hạn (Deterministic Finite Automata-DFA) để lưu trữ các ký tự </i>

tiền tố hoặc hậu tố của các mẫu. Việc sử dụng lược đồ chuyển trạng thái cho phép so khớp nhanh các chuỗi ký tự. Các thuật toán đề xuất đều hướng đến việc thu hẹp không gian trạng thái và bộ nhớ yêu cầu khi biểu diễn các mẫu. Các thuật toán đối sánh điển hình có thể kể đến gồm:

<i><b>Thuật toán Automaton Matcher (1974) : đây là thuật toán tuyến tính đầu</b></i>

tiên sựa trên automat tất định. Thuật toán cho phép duyệt từng ký tự từ trái qua phái dựa trên việc dịch chuyển trạng thái trong sơ đồ chuyển trạng thái tương ứng.

<i><b>Thuật toán Aho-Corasick (1975): Thuật toán KMP ở trên chỉ áp dụng trên các</b></i>

mẫu đơn, để mở rộng trên các tập đa mẫu, các tác giả trong [9] đã cải tiến của KMP và gọi là thuật toán Aho-Corasick (AC). Thuật toán AC cho tập đa mẫu sử dụng mơ hình

<i>otomat hữu hạn (S, Q, I, T, F). Trong đó: Q là tập hữu hạn trạng thái, I là trạng thái bắt đầu, T là tập các trạng thái kết thúc, F là hàm dịch chuyển. Trong đó otomat có thể là đơn định (DFA) hoặc không đơn định (NFA) với sự kết hợp của 3 hàm Goto function, </i>

<i>Failure function, Output function. Khi xây dựng được otomat chúng ta sẽ áp dụng</i>

thuật toán KMP đối với đối sánh đơn mẫu cho từng nhánh của otomat này. Thuật toán AC là cách sử dụng thuật toán KMP cho đơn mẫu nhiều lần. Độ phức tạp thời gian của

<i>thuật tốn AC là O(n) độc lập với kích thước chuỗi vào và cho tốc độ thực thi tốt với </i>

tập nhiều mẫu. Các cải tiến của AC là ACMS [8] và CIAC [9].

<i><b>Thuật toán Commentz-Walter (1979) [13] cho tìm kiếm đa mẫu kết hợp các</b></i>

kỹ thuật BM với thuật toán AC. Trong giai đoạn tiền xử lý, khác với thuật toán AC, thuật toán Commentz-Walter (CW) xây dựng một otomat hữu hạn từ các mẫu cần so khớp. Mỗi mẫu được để đối sánh sẽ thêm các trạng thái vào otomat, bắt đầu từ ký tự bên phải đến kí tự đầu tiên của mẫu, và kết hơp thành cùng một nút. Trong giai đoạn tìm kiếm, thuật toán CW sử dụng chiến lược của thuật toán Boyer-Moore. Chiều dài của cửa sổ trượt là chiều dài của mẫu ngắn nhất. Trong cửa sổ trượt, thuật toán CW so sánh các ký tự của mẫu từ bên phải sang trái (từ cuối lên đầu) bắt đầu với ký tự ngoài cùng bên phải. Trong trường hợp không phù hợp (hoặc hoàn toàn một đối sánh của toàn bộ mẫu) nó tính tốn lại để thay đổi cửa sổ trượt về bên phải. Một thuật toán so khớp đa mẫu được sử dụng để đối sánh từ điểm cuối của mẫu, giống như BoyerMoore,

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

sử dụng một otomat hữu hạn, như AC. Thuật toán CW được phát minh bởi Beate CW, và cũng giống như thuật tốn đối sánh mẫu AC, CW có thể dùng cho việc đối sánh đa mẫu.

<i><b>Thuật toán Reverse Factor (1994) : các phép toán so sánh được thực hiện</b></i>

từ phải qua trái sử dụng các nhân tố là mẫu đảo ngược để nhanh chóng tìm được các hậu tố. Giai đoạn tiền xử lý được thực thi trong thời gian tuyến tính với không gian bộ nhớ là độ dài của mẫu tương ứng.

<i><b>Thuật toán Backward Dawg Matching (1998) [16] được xây dựng để tìm kiếm</b></i>

vị trí xuất hiện các ký tự trong mẫu dựa trên nhân tố thực bằng cách xây dựng bảng mặt nạ mẫu, các vị trí xuất hiện bit 1 trong bảng tương ứng với vị trí ký tự đó xuất hiện trong mẫu. Việc tìm thừa số được thực hiện bằng cách thực hiện phép toán AND. Nếu kết quả phép AND trả lại một chuỗi toàn các bit 0 thì mẫu đó khơng xuất hiện trong chuỗi. Thuật tốn BDM nhanh chóng tìm ra việc có hay khơng xuất hiện các mẫu con của mẫu ban đầu trong văn bản T, từ đó dễ dàng loại bỏ mẫu và dịch chuyển nhanh trong văn bản.

<i><b>Thuật toán Backward Oracle Matching (1999) là cải tiến của BDM trên tập</b></i>

đơn mẫu , thuật toán BOM có thể thực thi tìm kiếm rất nhanh trên một tập mẫu lớn với số lượng các ký tự nhỏ. Trong giai đoạn tiền xử lý độ phức tạp về thời gian và

<i>không gian là O(m), độ phức tạp về thời gian tìm kiếm là O(m*n) nhưng lại cho kết </i>

quả tối ưu trong trường hợp trung bình. Các cải tiến của BDM và BOM dùng cho tập đa mẫu theo hướng tiếp cận thừa số là SBDM và SBOM [16].

<b><small>1</small>.1.4. Thuật toán đối sánh gần đúng dựa trên quy hoạch động </b>

Các cách tiếp cận đối sánh xấp xỉ chỉ đánh giá sự tương đồng của mẫu P so với mẫu T dựa trên một hàm khoảng cách với độ dài xâu con k cho trước. Đa số các thuật toán đối sánh khơng chính xác sử dụng khoảng cách Hamming hay khoảng cách Levenshtein (hay còn gọi là khoảng cách Edit) với k vị trí khác biệt được thiết lập trước .

Khoảng cách Hamming (Hamming distance) giữa hai xâu văn bản con đang xét và mẫu có chiều dài bằng nhau là số các ký hiệu ở vị trí tương đương có giá trị khác nhau. Nói một cách khác, khoảng cách Hamming đo số lượng thay thế cần phải có để đổi giá trị của một dãy ký tự sang một dãy ký tự khác, hay số lượng lỗi xảy

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

ra biến đổi một dãy ký tự sang một dãy ký tự khác. Chúng ta gọi các thuật toán so khớp gần đúng này sử dụng hàm khoảng cách Hamming và k vị trí lỗi.

Khái niệm Khoảng cách Levenshtein thể hiện khoảng cách khác biệt giữa 2

<i>chuỗi ký tự. Khoảng cách Levenshtein giữa chuỗi S và chuỗi T là số bước ít nhất biến chuỗi S thành chuỗi T thông qua 3 phép biến đổi là: Xoá 1 ký tự; thêm 1 ký tự; thay ký </i>

tự này bằng ký tự khác.

Khoảng cách này được đặt theo tên Vladimir Levenshtein, người đã đề ra khái niệm này vào năm 1965. Nó được sử dụng trong việc tính tốn sự giống và khác nhau giữa 2 chuỗi, như chương trình kiểm tra lỗi chính tả của winword spellchecker. Ví dụ: Khoảng cách Levenshtein giữa 2 chuỗi "kitten" và "sitting" là 3, vì phải dùng ít nhất 3 lần biến đổi.

kitten -> sitten (thay "k" bằng "s") sitten -> sittin (thay "e" bằng "i") sittin -> sitting (thêm ký tự "g")

Để tính tốn Khoảng cách Edit, ta sử dụng thuật toán quy hoạch động, tính

<i>tốn trên mảng 2 chiều (n+1)*(m+1), với n, m là độ dài của chuỗi cần tính. Sau đây là thuật toán quy hoạch động (S, T là chuỗi cần tính khoảng cách, n, m là độ dài của </i>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>1.2. Đối sánh đồ thị </b>

<b>1.2.1. Bài toán đối sánh đồ thị </b>

<i><b>Bài toán so khớp hai đồ thị như sau: Cho hai đồ thị GM = (VM, EM) và GD = (VD, ED) với |VM| = |VD|, mục tiêu của bài tốn là tìm ánh xạ một-một f: VM→ VD sao cho (u,v) </b></i><i><b>EM nếu và chỉ nếu (f(u), f(v))</b></i><i><b>ED. Nếu tồn tại một ánh xạ f như vậy </b></i>

<i><b>thì f được gọi là một đẳng cấu và GD được gọi là đẳng cấu với GM. Trường hợp này được biết như là đối sánh đồ thị chính xác (exact graph matching) [58]. Tuy nhiên, </b></i>

trong thực tế số đỉnh hoặc số cạnh của hai đồ thị thường khác nhau, do vậy chắc chắn không thể tồn tại một đẳng cấu giữa chúng. Trong những trường hợp như vậy, người ta thường so sánh xem chúng có những phần nào giống nhau hoặc chúng có là một đồ thị con của nhau hay khơng? Bài tốn này là khó hơn rất nhiều so với bài tốn đối sánh

<i><b>chính xác đồ thị và được biết như lớp bài toán đối sánh đồ thị không chính xác </b></i>

(inexact graph matching). Đối sánh đồ thị chính xác gồm đồ thị đẳng cấu (Graph Isomorphism) và đồ thị con đẳng cấu (Sub-Graph Isomorphism). Cịn đối sánh đồ thị khơng chính xác gồm đối sánh đồ thị thuộc tính (Attributed Graph Matching) và đối sánh đồ thị con thuộc tính (Attributed Sub-Graph Matching). Bài toán khi đó dẫn về

<i><b>việc tìm một đơn ánh giữa đồ thị mơ hình GM và đồ thị dữ liệu GD trong đó giả sử |VM| < |VD|. Bài tốn này có nhiều ứng dụng trong thực tế hơn lớp bài toán đồ thị đồ </b></i>

thị chính xác [43].

<b>1.2.2. Một số phương pháp đối sánh đồ thị </b>

<i><b>(1) Đối sánh đồ thị dựa trên đồ thị nhúng </b></i>

Ý tưởng của phương pháp sử dụng đồ thị nhúng là nhận dạng mẫu có cấu trúc dựa trên việc xem xét các đối tượng lân cận có cấu trúc tương đồng. Có nhiều kịch bản nhúng khác nhau với không gian đồ thị cho trước như: không gian nhúng không tương đồng (dissimilarity space embedding) [54], không gian nhúng metric (metric space embedding) [55]. Các thuật toán sử dụng tiếp cận này gồm: Nhúng đồ thị khoảng cách

(GED Embeding), nhúng lược đồ ký hiệu histogram (Symbolic histogram), nhúng khơng gian cấu trúc (Structure space) [58]

<i><b>(2) Thuật tốn SI - COBRA cho bài toán so khớp đồ thị gán nhãn </b></i>

Ý tưởng của thuật toán là cho hai đồ thị gán nhãn G và G’ (tương ứng với hai đồ thị mơ hình GM và đồ thị dữ liệu GD trong mục phát biểu bài toán) ta phải đi tìm một đồ thị con S của G sao cho S G. Bài toán này được gọi là bài tốn tìm đẳng cấu đồ

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

thị con. Năm 2005 Olmos, Gonzalez & Osorio phát triển thuật toán SI-COBRA (subgraph isomorphism). Họ đã phát triển thuật tốn trên để phát hiện chính xác một đồ thị G’nằm trong đồ thị G (được gọi là đẳng cấu đồ thị con) trong đó một chuỗi tuyến tính các mã được sử dụng để biểu diễn đồ thị [6].

<i><b>(3) Đối sánh đồ thị dựa trên thuật toán di truyền </b></i>

Trong [51][52], Andrew D.J. Cross và cộng sự đã trình bày những phân tích tập trung vào bài tốn đồ thị có gán nhãn trong giải bài toán bằng giải thuật di truyền. Tác giả đã xây dựng trên các nghiên cứu so khớp đồ thị và cho thấy độ đo bền vững Bayes có thể dược tối ưu một cách hiệu quả, có kết hợp với ý tưởng của thuật tốn leo đồi. Đề xuất mới của tác giả là trình bày một cách toán học về ý nghĩa của ý tưởng của thuật toán leo đồi cho phép nâng mức độ hội tụ khi kích thước của các nút trong đồ thị so khớp là lớn. Trong [53], Yong Wang và Naohiro Ishii cho thấy ý nghĩa của độ đo tương tự khi so khớp đồ thị theo cách song song hóa. Đối sánh đồ thị và độ đo tương tự trên đồ thị có nhiều ứng dụng trong việc nhận dạng mẫu, trong lập luận xấp xỉ dựa trên độ đo tương tự. Tác giả trình bày phương pháp đối sánh và đo độ tương tự giữa hai đồ thị được gán nhãn trực tiếp. Bài báo xác định mức độ tương tự đo tương ứng theo tương tự và khớp theo sự tương tự để so sánh các đồ thị với nhau. Với tiếp cận này tác giả sử dụng giải thuật di truyền GA để phát hiện sơ đồ về tính tương tự và tính tốn độ tương tự giữa các đồ thị. Để tăng tốc thuật toán, bài báo đã đề xuất kỹ thuật song song hóa đối với tất cả các bước của giải thuật di truyền. Các ý tưởng lý thuyết được chương trình hóa với ngôn ngữ C, cho giải thuật di truyền tuần tự và di truyền song song.

<i><b>(4) Đối sánh đồ thị dựa trên cây quyết định </b></i>

Hướng tiếp cận tiếp theo là sử dụng cây quyết định là một kiểu mơ hình dự báo (predictive model), nghĩa là một ánh xạ từ đồ thị thành các cây, tại đó mỗi một nút trong (internal node) tương ứng với một phần của đồ thị [6]. Ta biểu diễn đồ thị GM và GD bằng hai ma trận kề M1 và M2. Sau đó tìm tất cả các ma trận hốn vị có thể của M1, M2 rồi biểu diễn thành cây quyết định. Cây quyết định được xây dựng theo các phần tử hàng-cột của mỗi ma trận kề tương ứng. Ban đầu xuất phát từ một nút giả được khởi tạo là gốc của cây quyết định. Đây được coi là mức 0 trong cây. Tiếp theo chúng ta sẽ xây dựng các nút ở mức 1 của cây quyết định. Mỗi nút trong mức 1 sẽ có một cung nối với nút gốc ở mức 0 và cung này biểu diễn phần tử hàng-cột của mỗi ma

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

trận hốn vị. Khi đó đường nối giữa nút cha với nút con của nó thể hiện một giá trị cụ thể cho biến đó. Mỗi nút lá đại diện cho giá trị dự đoán khả năng khớp giữa 2 đồ thị.

Hai thuật toán tiêu biểu sử dụng cây quyết định trong đôi sánh đồ thị được biết đến là của Messmer và Bunke đề xuất năm 1998 và năm 1999 dùng để tìm ra đồ thị đẳng cấu và áp dụng trong so khớp đa đồ thị chính xác.

<i><b>(5) Đối sánh đồ thị dựa trên mạng neuron </b></i>

Để nâng cao hiệu quả của việc so khớp, nhiều nghiên cứu đã hướng đến việc áp dụng mạng neuron khi so sánh hai đồ thị. Các nghiên cứu tiêu biểu về hướng tiếp cận này có thể kể đến gồm: Mơ hình mạng neuron 3D, mơ hình mạng neuron nhận dạng đồ thị biểu diễn khuôn mặt của Hopfield và Huang (1998, 1999) đề xuất cho việc so sánh khuôn mặt với cơ sở dữ liệu khuông mặt mẫu dựa trên các đặc trưng biểu diễn ở dạng đồ thị. Riviere và cộng sự đã đề xuất thuật tốn hybrid RBF áp dụng cho đơi sánh đồ thị sử dụng mạng neuron năm 2000. Năm 2002, Lee và Liu đã cải tiến mơ hình áp dụng cho so khớp các liên kết động để đặc tả các thông về đồ thị biểu diễn khuôn mặt [40].

<b>KẾT LUẬN CHƯƠNG 1 </b>

Chương 1, luận văn đã trình bày tổng quan về bài toán đối sánh chuỗi, các thuật tốn đối sánh chính xác và gần đúng đối với bài toán đối sánh đơn mẫu và đa mẫu. Nội dung về đối sánh chuỗi sẽ là cơ sở cho việc tìm lời giải của bài toán lựa chọn phản biện. Ngoài ra, trong chương này cũng đã trình bày bài tốn đối sánh đồ thị chính xác và khơng chính xác, và các cách tiếp cận để giải quyết chúng. Nội dung này sẽ là cơ sở lý thuyết cho việc tìm lời giải bài toán phát hiện giả mạo trang Web.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<b>CHƯƠNG 2. ỨNG DỤNG KỸ THUẬT ĐỐI SÁNH MẪU ĐỐI VỚI MỘT SỐ BÀI TỐN TÌM KIẾM XẤP XỈ</b>

Chương này áp dụng các kỹ thuật đối sánh mẫu được trình bày ở chương 1 vào bài toán lựa chọn phản biện, bài toán phát hiện giả mạo trang web. Nội dung của chương được trình bày trong 2 mục. Mục 2.1: Bài toán lựa chọn phản biện, mục 2.2: Bài toán phát hiện giả mạo trang web.

<b>2.1. Bài toán lựa chọn phản biện </b>

<b>2.1.1. Tổng quan về hệ thống hỗ trợ lựa chọn phản biện </b>

Việc chọn ra người phản biện có cùng hướng nghiên cứu với nội dung bài báo từ cơ sở dữ liệu các nhà khoa học đảm bảo tính chất khách quan, đúng vấn đề cần phản biện là điều hết sức cần thiết đối với một tạp chí, hội nghị khoa học. Muốn vậy, việc phân loại và chọn phản biện cần phải dựa vào nội dung bài báo, hay phần tóm tắt bài báo hoặc các từ khóa cho mỗi bài báo…Điều này thực sự hết sức khó khăn cho việc tìm kiếm phản biện trong cơ sở dữ liệu các nhà khoa học nếu thực hiện thủ công và thay vào đó ta cần có thuật tốn hữu hiệu cho việc lựa chọn phản biện. Bài toán lựa chọn phản biện bài báo cho tạp chí hay hội nghị khơng phải là bái tốn mới, hiện nay đã có rất nhiều tác giả đã nghiên cứu tìm lời giải cho bài tốn trên nhiều góc độ khác nhau, với các cách tiếp cận khác nhau. Một số cách tiếp cận như: Phương pháp của Chumki Basu và cộng sự đề xuất khi chọn tập bài báo phù hợp với phản biện có sử dụng kết hợp các kỹ thuật thu thập thông tin và cơ sở dữ liệu bằng cách khai thác các nguồn thông tin từ web [14]; phương pháp chỉ mục ngữ nghĩa ẩn [14]; phương pháp mơ hình hóa chủ đề xác suất [15], phương pháp quy hoạch nguyên tuyến tính lựa chọn tập người phản biện cho tập bài báo có xét đến các điều kiện ràng buộc [16]; phương pháp luồng chi phí tối thiểu [17] và cách tiếp cận mơ hình lai ghép tri thức trong lựa chọn phản biện, đánh giá thẩm định cho các dự án nghiên cứu [18]. Gần đây, Tayal, Saxena, Sharma, Khanna và Gupta đưa ra một phương pháp mới giải bài toán lựa chọn phản biện trong chính sách tài chính của chính phủ [19]; Li và Watanabe đưa ra phương pháp tự động lựa chọn phản biện cho bài báo dựa trên mức độ chuyên môn của phản biện [20]; Long, Wong, Peng, và Ye đã đưa ra thuật toán xấp xỉ 1/3 nhằm

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

giải bài tốn cực đại hóa sự bao phủ chủ đề chuyên môn trong lựa chọn phản biện [21], theo cách tiếp cận này mỗi bài báo sẽ được lựa chọn phản biện sao cho các chủ đề của bài báo sẽ được phủ hoàn toàn (mức độ phủ là lớn nhất) bởi chuyên môn của các nhà phản biện và thỏa mãn 3 điều kiện: (1) mỗi bài báo được phản biện bởi một hay nhiều phản biện ở trong trạng thái “sẵn sàng”; (2) mỗi phản biện sẽ phản biện số lượng bài báo không lớn hơn số lượng bài quy định; (3) Khơng có sự xung đột giữa người phản biện và tác giả, điều này có nghĩa là khơng xảy ra trường hợp tác giả hoặc đồng tác giả lại đóng vai trị là người tham gia phản biện. Sau đây chúng tơi trình bày chi tiết một số phương pháp tìm lời giải cho bài tốn lựa chọn phản biện.

<b>(1) Thuật toán Kalmukov </b>

Thuật toán lựa chọn phản biện cho bài báo dựa trên từ khóa được thiết kế bởi Yordan Kalmukov năm 2006 [18], theo cách tiếp cận này thì giữa bài báo và phản biện có chung với nhau ít nhất một từ khóa thì bài báo sẽ được đưa vào phản biện; từ khóa bài báo và từ khóa của phản biện sẽ được chọn trong tập từ khóa cho trước; mỗi người phản biện sẽ có số lượng bài báo cần phản biện không được vượt quá giới hạn cho phép. Ngoài ra, khi lựa chọn phản biện thuật tốn phải đảm bảo tính phân phối đều về số lượng bài báo được phân cho các phản biện và được xác định bởi (1).

<i>Noppr=ceil((Nop * Norpp) / Nor); (1) Noppr: Số lượng bài báo được phân cho một người phản biện; </i>

<i>Nop: Số lượng bài báo; Norpp: Số lượng người phản biện cho một bài báo; Nor: Số người phản biện; ceil: Hàm làm trịn trên. </i>

Thuật tốn lựa chọn phản biện phù hợp nhất cho mỗi bài báo dựa trên độ tương tự và được xác định như sau:

<i>Ta ký hiệu SF(P<small>i</small>,R<small>j</small>) là hàm xác định độ tương tự của bài báo P<small>i</small></i> với phản biện

<i>R<small>j</small></i> và được xác định bởi công thức (2)

<i>KW<small>Pi</small>: Tập các từ khóa của bài báo P<small>i</small>; KW<small>Rj</small>: Tập các từ khóa của phản biện R<small>j</small></i>;

<i>count(S): Số lượng phần tử trong tập S. <small>KWKUKWKU</small></i>

<i>KU: là tập các từ khóa được xác định bởi hội nghị; </i>

Như vậy, công thức (2) cho thấy <i><small>SF</small></i><small>(</small><i><small>P</small><sub>i</sub></i><small>,</small><i><small>R</small><sub>j</sub></i><small>)[0,1]</small> là đại lượng chỉ ra mức độ

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i>phản biện R<small>j</small></i> hay không.

Để rõ hơn các khái niệm này, ta xét một ví dụ cụ thể như sau:

<i>Trong một hội nghị khoa học, tập các từ khóa được xác định là KU = {A, B, C, </i>

<i>D, E, F, G, H, I}; một bài báo có các từ khóa là KW<small>P</small> = {A, C, F}; xét 2 phản biện lần </i>

<i>lượt có tập các từ khóa là KW<small>R1</small> = {B, C, F, G}; KW<small>R2</small> = {A, F}. Xét trực quan ta dễ </i>

<i>thấy khả năng chuyên môn phản biện của R<small>1</small> và R<small>2</small> cho bài báo P là tương đương nhau, vì họ đều có cùng số lượng từ khóa thuộc vào KW<small>P</small></i>. Trong trường hợp này, để tìm

<i>được phản biện phù hợp nhất ta phải sử dụng đến hàm xác định độ tương tự SF(P<small>i</small>,R<small>j</small>) </i>

<i>và ta có SF(P,R<small>1</small>) = 2/5 < SF(P,R<small>2</small>) = 2/3. Vậy, từ hàm tương tự ta thấy bài báo P sẽ </i>

<i>được phân cho phản biện R<small>2</small></i> là phù hợp hơn. Xét về mặt ý nghĩa thì việc phân bài báo

<i>P cho phản biện R<small>2</small></i> sẽ tiết kiệm được tài nguyên khi quan tâm tới giới hạn tối đa số bài

<i>báo cho mỗi phản biện, vì count(KW<small>R1</small>)> count(KW<small>R2</small>), nên khả năng phản biện cho </i>

<i>bài báo khác của R<small>1</small> là lớn hơn R<small>2</small>, hơn nữa nếu có một bài báo kế tiếp là P1 có KW<small>P1</small> = {B, G } cũng cần được phản biện và giả thiết mỗi phản biện chỉ phản biện tối đa là 01 </i>

<i>bài báo. Khi đó, nếu ta phân P cho phản biện R<small>1</small> thì khi đó bài báo P<small>1</small></i> sẽ khơng có

<i>người phản biện mặc dù R<small>1</small> có chung 2 từ khóa với P<small>1 </small>(vì R<small>1</small> đã bận phản biện cho P). Vậy P được phản biện bởi R<small>2</small></i> là phù hợp nhất.

Ta gọi, PS và RS lần lượt là các bản ghi thông tin về bài báo và người phản biện và có cấu trúc như sau:

Thuật tốn lựa chọn phản biện gồm 4 bước chính như sau:

<i>Bước 1: Xây dựng ma trận độ tương tự K. </i>

<i>Trong bước này, mỗi bài báo P<small>i</small></i> sẽ được tính độ tương tự với tất cả các phản

<i>biện R<small>j</small> ta thu được K[i]={ SF(P<small>i</small>,R<small>j</small>)}. Sau đó sắp xếp K[i] theo thứ tự giảm dần của độ </i>

tương tự khi đó phản biện phù hợp nhất sẽ nằm trên đầu danh sách.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>Hình 2.1. Bước 1-Xác định ma trận độ tương tự </b>

Chuyển sang các bước sau, thuật toán xử lý hàng đầu tiên của ma trận, đó là hàng gợi ý chọn phản biện phù hợp nhất. Lưu đồ sau chỉ ra quá trình thực hiện thuật tốn:

<b>Hình 2.2. Bước 2 Xây dựng mảng cấu trúc invlovedReviewers; Bước 3 – Xử lý </b>

involvedReviewers và phân bài báo cho phản biện tại hàng đầu tiên của ma trận

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

K; Bước 4 – Kết thúc lựa chọn phản biện.

<i>Tại Bước 2, thuật toán xây dựng mảng cấu trúc involvedReviewers nhằm khắc </i>

phục hạn chế đối với những phản biện có số lượng bài báo vượt quá giới hạn cho phép, cấu trúc được xác định như sau:

<i>involvedReviewers[‘revUsername’][index][k_pid];[SFactor] </i>

revUsername: Username của phản biện; Sfactor: Độ tương tự bài báo và phản biện Ví dụ: ta có bảng K là

<i>involvedReviewers[‘R1’][1][k_pid]=2; [SFactor]=0.54 </i>

<i>Độ tương tự lưu trong involvedReviewers được xác định bao gồm hằng số C, mục đích của đại lượng C là để xác định và đảm bảo rằng nếu giữa bài báo và phản biện có chung nhau ít nhất một từ khóa thì bài báo sẽ được phân cho phản biện đó (đối </i>

với phản biện phù hợp nhất và có số lượng bài báo khơng vượt quá số lượng bài báo

<i>cho phép). Đại lượng C được chia làm 2 phần, C= C<small>1</small>+C<small>2</small></i>.

<i>C<small>1</small></i> được xác định như sau:

<i>Trong đó, number of non-zero SFs là số lượng các đại lượng đo độ tương tự khác không đối với bài báo P<small>i</small>; revsPerPaper số người phản biện cho mỗi bài báo, số </i>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i>lượng này được xác định bởi hội nghị, thường chọn là 2 hoặc 3; numberOfRevs for Pi là số người phản biện hiện thời được làm phản biện cho bài báo P<small>i</small></i>.

<i>Nếu người phản biện tại hàng đầu tiên của K[i] là phản biện duy nhất trong hàng thì phản biện này (R) sẽ được gán cho bài báo P<small>i</small></i> mà không cần quan tâm đến độ

<i>tương tự của R với các bài báo khác. Nếu không có phản biện nào phù hợp với P<small>i</small></i> (độ

<i>tương tự bằng 0 trong K[i]) thì C</i><small>1</small>=0.

<i>Đại lượng C<small>2</small></i> đảm bảo rằng bài báo được gán cho phản biện thứ 2 là phản biện

<i>có mức độ phù hợp thứ 2, C<small>2</small></i> được xác định như sau:

<i>C2 = 2 * (SF of first-suitable reviewer for Pi – SF of second-suitable reviewer </i>

<i>for Pi) </i>

<i>SF of first-suitable reviewer for Pi: Độ tương tự của phản biện thứ nhất đối với Pi; SF of second-suitable reviewer for Pi: Độ tương tự của phản biện thứ 2 đối với Pi. </i>

Trong q trình thực hiện tại bước 3, thuật tốn xác định bài báo sẽ được gán

<i>cho phản biện nào trong hàng đầu tiên của ma trận K. Có thể minh họa cho bước này </i>

bằng một ví dụ sau:

Nếu các điều kiện ràng buộc giới hạn đặt ra là mỗi phản biện được phản biện tối đa là 2 bài báo, mỗi bài báo sẽ được phản biện bởi 2 người phản biện thì sau khi thực hiện bước 2 ta được kết quả là

<i>Sắp xếp lại involvedReviewers[‘R1’] theo thứ tự giảm dần của độ tương tự ta được involvedReviewers[‘R1’]={P2, P5, P4, P1}. </i>

<i>Vì số lượng tối đa cho mỗi phản biện là 2 bài báo, nên P2 và P5 sẽ được gán cho R1, quá trình thực hiện tiếp tục tại bước này và các bước sau được mô tả chi tiết </i>

trong Hình 2. Trong trường hợp số lượng bài báo tối đa cho mỗi phản biện là khác nhau (phụ thuộc vào chuyên môn và các điều kiện của phản biện) và số lượng phản biện gán cho mỗi bài báo là khác nhau cũng đã được Maryam Karimzadehgan, ChengXiang Zhai đề xuất và đưa ra thuật toán tìm lời giải cho bài tốn này.

<b>(2) Bài tốn lựa chọn phản biện CMACRA </b>

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

của Yordan Kalmukov và đề xuất 2 thuật toán giải bài toán CMACRA (ConstrainedMulti-Aspect Committee Review Assignment) bao gồm thuật toán Greedy và thuật tốn quy hoạch ngun tuyến tính.

Bài toán CMACRA đặt ra là lựa chọn phản biện cho tập các bài báo sao cho thỏa mãn 4 điều kiện sau:

(1) Mỗi bài báo sẽ được phản biện bởi ít nhất một phản biện luôn trong trạng thái “sẵn sàng”;

(2) Số lượng bài báo cho mỗi phản biện không vượt quá giới hạn cho phép; (3) Mỗi phản biện được gán cho mỗi bài báo phải có chun mơn phù hợp với

bài báo;

(4) Chuyên môn tổng hợp của các phản biện phải phủ đủ tốt cho toàn bộ các chủ đề của bài báo đề cập.

Để giải quyết các vấn đề của bài tốn đặt ra, CMACRA được mơ hình hóa như

<i>sau: Gọi P={p<small>1</small>, p<small>2</small>,…,p<small>n</small>} là tập các bài báo p<small>i</small>; R={r<small>1</small>, r<small>2</small>,…,r<small>m</small>} - tập các phản biện r<small>i</small></i>;

<i>NR={NR<small>1</small>, NR<small>2</small>,…, NR<small>m</small>} – tập các giới hạn số lượng bài báo cho mỗi phản biện, NR<small>i</small></i> là

<i>số lượng bài báo tối đa cho phản biện r<small>i</small>; NP={NP<small>1</small>, NP<small>2</small>,…, NP<small>m</small>} – tập các số lượng </i>

<i>phản biện sẽ được gán cho mỗi bài báo, NP<small>i</small> là số lượng phản biện được gán cho bài </i>

<i>báo P<small>i</small>. Kết quả tính tốn sẽ cho ra một ma trận M={M<small>i,j</small>}<small>nxm</small>, trong đó M<small>ij</small></i><small></small><i>{0,1} (M<small>i,j</small>=1 nếu r<small>i</small> là phản biện cho bài báo p<small>j</small></i>).

Các điều kiện ràng buộc (1) và (2) có thể được mơ tả như sau:

Để đảm bảo đủ số lượng phản biện để phản biện cho các chủ đề của tất cả các bài báo thì cần phải đảm bảo điều kiện



<i>Giả sử trong một hội nghị có k chủ đề khác nhau, ta ký hiệu </i> <small>{</small><sub>1</sub><small>,</small><sub>2</sub><small>,...,</small><i><sub>k</sub></i><small>}</small> là tập các chủ đề, <i><sub>i</sub> là ký hiệu chủ đề thứ i (mỗi chủ đề có thể được đặc trưng như là một </i>

từ khóa mà đặc trưng chuyên môn của phản biện hay chủ đề bài báo đề cập sẽ được lựa chọn trong tập này). Gọi <i><small>P</small></i> và <i><small>R</small></i> lần lượt là 2 ma trận chỉ mức độ tương tự của các chủ đề với nội dung bài báo và độ tương tự của các chủ đề với chuyên môn phản

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

biện; <i><small>P</small></i> <small>{</small><i><small>P</small></i><sub>,</sub><i><sub>j</sub></i><small>}</small><i><sub>n</sub></i><sub></sub><i><sub>k</sub></i>, <i><small>P</small></i><sub>,</sub><i><sub>j</sub></i> là mức độ tương tự của chủ đề <i><sub>j</sub> với bài báo p<small>i</small></i>; <i><small>R</small></i> <small>{</small><i><small>R</small></i><sub>,</sub><i><sub>j</sub></i><small>}</small><i><sub>m</sub></i><sub></sub><i><sub>k</sub></i>,

Bước 1: Sắp xếp các bài báo theo thứ tự giảm dần về số lượng chủ đề mà bài báo đề cập (Số lượng từ khóa của bài báo).

Bước 2: Chọn phản biện có mức độ chun mơn phù hợp nhất cho bài báo đứng đầu danh sách (phản biện có chuyên môn phủ các chủ đề bài báo đề cập).

Bước 3: Kiểm tra các ràng buộc: giới hạn về số lượng bài báo cho phản biện, giới hạn về số lượng phản biện cho mỗi bài báo. Nếu đạt được giới hạn về số lượng bài báo cho phản biện thì loại bỏ phản biện ra khỏi danh sách, làm tương tự như vậy đối với bài báo nếu đạt được giới hạn về số lượng phản biện cho mỗi bài báo.

Bước 4: Lặp lại bước 2 cho đến khi các phản biện được gán cho tất cả các bài báo.

Thuật toán thứ 2 mà Maryam Karimzadehgan sử dụng để tìm lời giải cho bài toán CMACRA là thuật toán quy hoạch tuyến tính ngun. Để sử dụng thuật tốn này, bài tốn CMACRA được mơ hình hóa như sau:

<i>Nếu coi t<small>i,j</small></i> là số lượng phản biện có chuyên môn phủ chủ đề <i><sub>j</sub> của bài báo p<small>i</small></i>,

<i>thì bài tốn đặt ra là tìm t<small>i,j</small></i> sao cho

Vậy, từ (9), (10), (11) kết hợp với các điều kiện (7), (8) ta có thể phát biểu bài tốn CMACRA như sau:

<i>Tìm tìm t<small>i,j</small></i> sao cho

</div>

×