Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
0,95 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI PHẠM CÔNG HỒNG CÁCTHUẬTTOÁNĐỐISÁNHMẪUVÀỨNGDỤNGTÌMKIẾMTRÊNWEBSITE LUẬN VĂN THẠC SĨ KỸ THUẬTTOÁN TIN Hà Nội – Năm 2014 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI PHẠM CÔNG HỒNG CÁCTHUẬTTOÁNĐỐISÁNHMẪUVÀỨNGDỤNGTÌMKIẾMTRÊNWEBSITE Chuyên ngành: TOÁN TIN Mã đề tài: TOAN-VINH06 LUẬN VĂN THẠC SĨ KỸ THUẬTTOÁN TIN NGƯỜI HƯỚNG DẪN KHOA HỌC TIẾN SĨ: NGUYỄN THỊ THANH HUYỀN Hà Nội – Năm 2014 LỜI CẢM ƠN Trước hết em xin gửi lời cảm ơn chân thành đến toàn thể thầy cô giáo Viện Toánứngdụng Tin học tận tình dạy dỗ chúng em suốt trình học tập Viện Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc tới cô giáo Tiến sĩ Nguyễn Thị Thanh Huyền, Viện Toánứngdụng Tin học, trường Đại học Bách Khoa Hà Nội quan tâm hướng dẫn đưa gợi ý, góp ý, chỉnh sửa vô quý báu cho em trình làm luận văn tốt nghiệp Cuối xin chân thành cảm ơn gia đình, người bạn giúp đỡ, chia sẻ với em suốt trình học tập làm luận văn LỜI CAM ĐOAN Tôi xin cam đoan kết đạt luận văn sản phẩm cá nhân thực nghiêm túc hướng dẫn Tiến sĩ Nguyễn Thị Thanh Huyền Trong toàn nội dung luận văn, điều trình bày cá nhân tổng hợp từ nhiều nguồn tài liệu Tất tài liệu tham khảo có xuất xứ rõ ràng trích dẫn hợp pháp Tôi xin hoàn toàn chịu trách nhiệm chịu hình thức kỷ luật theo qui định cho lời cam đoan Hà Nội, ngày 12 tháng 03 năm 2014 Phạm Công Hồng DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT Các ký hiệu ε Xâu rỗng wi Kí tự thứ i xâu w Pi Kí tự thứ i xâu P Sj Kí tự thứ j xâu S Ci,j Là độ dài dãy lớn hai dãy P1 i S1 j Các chữ viết tắt CSDL Cơ sở liệu DFA Otomat đơn định hữu hạn NFA Otomat đa định hữu hạn KMP Knuth–Morris–Pratt BM Boyer–Moore DANH MỤC CÁC HÌNH VẼ Hình 2.1 Ý nghĩa mảng Next………………………… ………….… 15 Hình 2.2 Ý nghĩa mảng next vị trí m + 1…………………… … 16 Hình 3.1 Sự thay đổi trạng thái mờ gặp kí tự b 34 Hình 4.1 Mô hình lập trình ứngdụng 57 MỤC LỤC MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nội dung Phạm vi nghiên cứu Chương 1: TỔNG QUAN VỀ VẤN ĐỀ ĐỐISÁNHMẪU 1.1 Đốisánhmẫu 1.2 Bài toánđốisánhmẫu tình hình nghiên cứu 1.3 Các dạng toánđốisánhmẫu 1.3.1 So đơn mẫu 1.3.2 So đa mẫu 1.3.3 Đốisánhmẫu mở rộng 1.4 Đốisánhmẫu xấp xỉ 11 1.4.1 Phát biểu toán 11 1.4.2 Độ tương tự hai xâu 12 1.4.3 Các tiếp cận giải toánđốisánhmẫu xấp xỉ 13 Chương CÁCTHUẬTTOÁNĐỐISÁNHMẪU CHÍNH XÁC 15 2.1 Thuậttoán KMP ( Knuth- Morris- Pratt) 15 2.2 Thuậttoán BM ( Boyer- Moore) 19 2.3 Thuậttoán KMP mờ 23 2.3.1 Khái niệm Độ mờ 23 2.3.2 Otomat mờ so mẫu 24 2.3.3 Thuậttoán 25 2.4 Kết luận chương 28 Chương ĐỐISÁNHMẪU XẤP XỈ 29 3.1 Vấn đề đốisánhmẫu xấp xỉ 29 3.2 Độ tương tự dựa độ dài khúc chung hai xâu 30 3.2.1 Phát biểu toán 30 3.2.2 Otomat đốisánh mẫu: mô hình sở toán học 31 3.2.3 Thuậttoán 35 3.2.4 Một phương pháp tính hàm chuyển trạng thái TFuzz 36 3.3.5 Đánh giá thuậttoán 39 3.3 Độ tương tự dựa dãy chung dài 40 3.3.1 Bài toántìm dãy chung dài 40 3.3.2 Thuậttoán quy hoạch động 40 3.3.3 Thuậttoán quy hoạch động tìm dãy chung dài 40 3.4 Kết luận chương 44 Chương SỬ DỤNGTHUẬTTOÁNĐỐISÁNHMẪU TRONG TÌMKIẾMTRÊNWEBSITE 45 4.1 Đặt vấn đề 45 4.2 Cài đặt chương trình 46 4.2.1 Thiết kế DataBase 46 4.2.2 Nền tảng ứngdụng 55 4.3 Cấu trúc hệ thống 56 4.3.1 Lớp Domain 56 4.3.2 Lớp Framework 57 4.3.3 Lớp Website 57 4.3.4 Mô tả cách thực cài đặt kịch chương trình: 58 4.3.5 Kịch tìm kiếm: 63 4.3.6 Kết tìmkiếmwebsite 64 4.4 Kết luật chương 68 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 70 MỞ ĐẦU Lý chọn đề tài Máy tính ngày sử dụng hầu hết lĩnh vực góp phần quan trọng vào việc thúc đẩy phát triển kinh tế, xã hội, khoa học kỹ thuật, Máy tính đời nhằm phục vụ cho mục đích định người Với tất xử lý máy tính để lấy thông tin hữu ích trình xử lí vấn đề đặc biệt quan trọng tìmkiếm thông tin với khối lượng lớn, độ xác cao, thời gian nhanh Ngày số lượng thông tin kích thước hệ thống tin ngày lớn, nhu cầu tìmkiếm người dùngđòi hỏi ngày cao phức tạp Người dùng luôn mong muốn có kết với thời gian nhanh nhất, đáp ứng linh hoạt, đa dạng yêu cầu tìm kiếm, xác mà cho ta kết gần đúng, phù hợp với từ khóa đưa vào Để nâng cao tốc độ tìmkiếm đáp ứng yêu cầu người dùng Vậy việc nghiên cứu tìm hiểu thuậttoánđốisánhmẫu để ứngdụng công việc cần thiết Để tìmkiếm thông tin cần phải xem thông tin lưu trữ dạng liệu nào? Dữ liệu lưu trữ nhiều dạng, song phổ biến dạng text nên chọn đề tài cụ thể Cácthuậttoánđốisánhmẫuứngdụngtìmkiếmwebsite Mục tiêu nội dung Luận văn tập trung nghiên cứu thuậttoánđốisánhmẫuứngdụngtìmkiếmwebsite - Tìm hiểu vấn đề tìmkiếm thông tin đốisánhmẫu - Nghiên cứu số thuậttoánđốisánhmẫu xác xấp xỉ - Cài đặt số thuậttoánđốisánhmẫuứngdụng xây dựng tính tìmkiếmwebsite Phạm vi nghiên cứu Luận văn tập trung nghiên cứu kiến thức có liên quan, sở lý thuyết: Tổng quan vấn đề tìm kiếm, thuậttoántìmkiếmmẫu theo cách tiếp cận quy hoạch động otomat mờ; sử dụng ngôn ngữ cài đặt thuậttoánứngdụngtìmkiếmwebsite http://truongthcsdaiminh.edu.vn/ Nội dung luận văn gồm chương, phần kết luận, tài liệu tham khảo phụ lục: Chương 1: Tổng quan vấn đề đốisánhmẫu Giới thiệu chung toánđốisánhmẫu (hay đốisánh mẫu), tập trung vào trường hợp mẫu xâu nhắc lại số khái niệm sở có liên quan đến luận văn Chương 2: Cácthuậttoánđốisánhmẫu xác Chương trình bày nội dung số thuậttoán kinh điển đốisánhmẫu xác hai thuật KMP BM Chương Thuậttoánđốisánhmẫu xấp xỉ Chương trình bày kết luận văn đốisánhmẫu xấp xỉ ứngdụngthuậttoán kinh điển thuậttoán quy hoạch động để tìm dãy chung lớn hai xâu Chương 4: Ứngdụngthuậttoánđốisánhmẫu để tìmkiếmwebsite - Controllers: Controller thành phần dùng để quản lý tương tác người dùng, làm việc với model chọn view để hiển thị giao diện người dùng Trong ứngdụng MVC, view dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý đáp trả nội dung người dùng nhập tương tác với người dùng Ví dụ, controller quản lý liệu người dùng gởi lên (query-string values) gởi giá trị đến model, model lấy liệu từ CSDL nhờ vào giá trị 4.3 Cấu trúc hệ thống 4.3.1 Lớp Domain Lớp định nghĩa Class information entiy entity framwork đối tượng sử dụng thao tác với tầng csdl, phương thức thao tác Interface đối tượng thực thao tác với CSDL thuộc vào namespace CIK.News.Entities NewsAgg: - Entity: Category định nghĩa trường csdl bao gồm thuộc tính navigation danh sách đối tượng Item tin Nó thể quan hệ mô hình CSDL - CategoryFactory: Định nghĩa thao tác tạo entity Category phục vụ cho việc thực thi hành động website thành phần - IcategoryRepository: định nghĩa interface phương thức thực đối tượng Category - Item: entity thông tin tin tin phân thành category Và chi tiết tin tức đối tượng ItemContent - ItemFactory: Định nghĩa thao tác tạo entity Item phục vụ cho việc thực thi hành động website thành phần AdvertisementAgg: cấu trúc tương tự News - DocumentAgg: cấu trúc tương tự News 56 - DownloadAgg: cấu trúc tương tự News - SupportAgg: cấu trúc tương tự News - UserAgg: cấu trúc tương tự News Lớp CIK.News.Mapping thực việc mapping entity thuộc lớp CIK.News.Entities vào CSDL để thực thao tác với CSDL 4.3.2 Lớp Framework Gồm project thực xây dựng lớp thư viện phục vụ cho việc thao tác với CSDL tầng liệu Là lớp thư viện xây dựng cho thực hiên tính entity framwork 4.3.3 Lớp Website CIK.News.Web.Infras: - ActionResults: xây dựngđối tượng trả cho phương thức thực website phục vụ cho tầng control nhằm điều hướng website Trong thư mục xây dưng thành phần phần Admin phần Client bên bao gồm đầy đủ phương thức cho thành phần gồm view, thêm, sửa, xóa đối tượng - MediaItem: thư viện thực thi ghi đối tượng media vào đường dẫn xách định Nó phục vụ cho việc cập nhật hình ảnh cho tin, tài liệu cho phần download văn - Profiles: tạo mapping tới phương thức Edit đối tượng Thực nhấn thành phần edit lên thông tin lưu CSDL lấy lên xử lý Với bảng tạo class - Repository: thành phần xử lý logic mà định nghĩa tầng domain interface Nó thực thi xử lý liệu đưa vào view cập nhật vào CSDL Đây gọi phần tầng Model Nó bao gồm việc cài đặt thuậttoán tối ưu vào để đưa liệu mong muốn nội dung đề tài đặt 57 cài đặt tìmkiếm xấp xỉ phương pháp quy hoạch động Chúng ta mô tả rõ phần - ViewModels: Thực phương thức tầng view bao gồm phần admin phần client 4.3.4 Mô tả cách thực cài đặt kịch chương trình: Thuậttoán qui hoạch động cài đặt class Until sau: - Hàm lấy max số phục vụ cho hàm tìm kiếm: FullSearch private static int MaxAB(int a, int b) { if (a > b) return a; else return b; } - Hàm cài đặt tìmkiếm bao gồm cài đặt tạo ma trận thực việc truy vết để tìm kết xấp xỉ: public static string FullSearch(string X,string Y) { string teamp = ""; int m = X.Length + 1; int n = Y.Length + 1; int[,] L = new int[n, m]; char[] Z = new char[n]; for (int i = 0; i < n; i++) { L[i, 0] = 0; } for (int j = 0; j < m; j++) { L[0, j] = 0; 58 } for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) { if (Y[i - 1] == X[j - 1]) { L[i, j] = L[i - 1, j - 1] + 1; } else { L[i, j] = MaxAB(L[i - 1, j], L[i, j - 1]); } } } //Truy vet(Trace) int t = 0; int ii = n; int jj = m; ii ; jj ; while (ii > && jj > 0) { if (Y[ii - 1] == X[jj - 1]) { Z[t] = Y[ii - 1]; t++; 59 ii ; jj ; } else { if (L[ii - 1, jj] > L[ii, jj - 1]) { ii ; } else jj ; } } while (t > 0) { t; teamp = teamp + Z[t]; } return teamp; } Qui trình trình tìm kiếm: public IEnumerable FullSeachByTitle(string titleSearchText, int index, int numOfpage, out int numOfRecords) { var itemsearch = this.GetItems(); numOfRecords = itemsearch.Count(); if (!string.IsNullOrWhiteSpace(titleSearchText)) { 60 int maxList = 0; Dictionary IdList = new Dictionary(); List ListItem = new List(); foreach (Item newItem in itemsearch) { string maxau = Until.FullSearch(titleSearchText.ToLower(), newItem.ItemContent.Title.ToLower()); if (maxList < maxau.Length) { maxList = maxau.Length; } Item temp = new Item(); temp.ItemContentId = newItem.ItemContentId; temp.ModifiedDate = newItem.ModifiedDate; temp.Id = newItem.Id; temp.CreatedDate = newItem.CreatedDate; temp.CreatedBy = newItem.CreatedBy; temp.Category = newItem.Category; temp.ItemContent = new ItemContent(); temp.ItemContent.Id = newItem.ItemContent.Id; //Xac dinh vi tri de replate string replaceString = newItem.ItemContent.Title.ToLower(); int position = replaceString.IndexOf(maxau); if (position >= && maxau.Length>0 && !string.IsNullOrEmpty(maxau)) { string getString = newItem.ItemContent.Title.Substring(position, maxau.Length); 61 temp.ItemContent.Title = newItem.ItemContent.Title.Replace(getString, "" + getString + ""); temp.ItemContent.SortDescription = newItem.ItemContent.SortDescription; // ListItem.Add(temp); IdList.Add(temp.ItemContentId, maxau.Length); } } List ListItemSeach = new List(); while (IdList != null && IdList.Count>0) { int maxa = 0; foreach (var keyitem in IdList) { if(maxa < keyitem.Value) { maxa = keyitem.Value; }; } if (maxa > 0) { var maxItem = IdList.FirstOrDefault(x => x.Value == maxa); ListItemSeach.Add(ListItem.FirstOrDefault(x => x.ItemContentId == maxItem.Key)); } IdList.Remove(IdList.FirstOrDefault(x => x.Value == maxa).Key); } 62 itemsearch = ListItemSeach; } return itemsearch.Skip((index - 1) * numOfpage).Take(numOfpage); } Mô tả phương thức: Lấy tất Item new đếm số lượng Item Nếu tiêu đề truyền vào khác null thực thi: - Tạo danh sách kết - Duyệt tất Item lấy tìmkiếm phương thức tạo lớp thư viện sau: string maxau =Until.FullSearch(titleSearchText.ToLower(), newItem.ItemContent.Title.ToLower()); - Xác định vị trí thay để format lại tiêu đề vừa tìm thấy sau: xác định vị trí mẫu xâu vị trí Nếu vị trí lớn độ dài xâu tìmkiếm bước b thay dòng font để format lại tiêu đề để người dùng nhìn thấy từ xấp xỉ tìmkiếm lệnh sau phương thức trên: newItem.ItemContent.Title.Replace(getString, "" + getString + ""); thêm Item vào danh sách tìmkiếm - Duyệt lại danh sách để trả giá trị cho view 4.3.5 Kịch tìmkiếm Tại HomeController có controler sau để thực điều hướng với phương thức Search lúc SearchViewModelActionResult thực thi việc xử lý triệu gọi thông qua ExecuteResult SearchViewModelActionResult để trả view class lại gọi tới phương BindingDataForSearchLeftColumnViewModel thức SearchViewModelActionResult class phương thức biding gọi tới lớp cài đặt phương thức tìmkiếm nội dung để trả kết cho người dùng 63 4.3.6 Kết tìmkiếmwebsite a Tìmkiếm xác sử dụngthuậttoán KMP - Trong trình biên tập nội dungwebsite dành quản trị website thể cài đặt chương trình thuậttoán KMP (mục 2.1) vào phần quản trị để tìmkiếm danh mục thông tin xác giúp người quản trị tìmkiếm nội dung biên tập cách nhanh chóng sau Chương trình cài đặt: namespace CIK.News.Web.Infras { public static class Until { #region seach function private static int[] preKMP(string[] p) { int m = p.Length; int[] MP_map = new int[m + 1]; MP_map[0] = -1; int i = 0; int j = MP_map[i]; while (i < m) { while (j >= && (p[i] != p[j])) j = MP_map[j]; j++; i++; MP_map[i] = j; } return MP_map; } private static int[] KMP(string[] p) 64 { int m = p.Length; int[] aKMP = new int[m + 1]; int[] MP_map = preKMP(p); aKMP[0] = -1; aKMP[m] = aKMP[m]; for (int i = 1; i < m; i++) { int j = aKMP[i]; if (p[i] != p[j]) aKMP[i] = j; else aKMP[i] = aKMP[j]; } return aKMP; } public static bool Knuth_Morris_Pratt(string[] s, string[] p) { bool status = false; int[] map = KMP(p); int n = s.Length; int m = p.Length; int i = 0; for (int j = 0; j < n; j++) { while ((i >= 0) && (p[i] != s[j])) i = map[i]; i++; if (i == m) { status = true; break; } 65 } return status; } #endregion Ví dụ 4.1 kết tìm xác 66 b Tìmkiếm xấp xỉ sử dụngthuậttoántìm dãy chung dài theo phương pháp quy hoạch động Ví dụ 4.2 Kết tìmkiếmwebsite ví dụ tìm “kkhuyên” cho kết Ví dụ 4.3 Khi sử dụngtìmkiếm với từ “trường th” 67 Ví dụ 4.4 Khi sử dụngtìmkiếm với từ “muốnn học” 4.4 Kết luật chương Chương kết cài đặt thành công hai thuậttoán quy hoạch động trình bày chương thuậttoán KMP trình bày chương Chương trình cài đặt viết ngôn ngữ lập trình C# tảng Net Framework Microsoft sử dụng SQL Server 2005 để lưu trữ sở liệu Chương trình thực việc tìmkiếm thông tin website theo hướng xác, xấp xỉ 68 KẾT LUẬN Các kết đạt luận văn: Trình bày tổng quan so sánh mẫu, dạng tìmkiếmmẫu Trình bày thuậttoánđốisánhmẫu xác KMP Boyer – Moore Trên sở mã nguồn mở, ngôn ngữ lập trình C# công nghệ ASP.NET xây cài đặt thuậttoán KMP tìmkiếm xác phần quản trị thuậttoán quy hoạch động để tìm dãy chung dài ứngdụngtìmkiếm xấp xỉ thông tin website http://truongthcsdaiminh.edu.vn/ Hướng nghiên cứu tiếp theo: - Tìm hiểu thuậttoán tối ưu - Cài đặt chương trình tìmkiếm để ứngdụng chương trình tìmkiếm thông tin website Do thời gian khả có hạn, luận văn thiếu sót nhiều, em mong nhận góp ý, dẫn thêm thầy cô, bạn bè để em xây dựngứngdụng hoàn thiện Một lần em xin chân thành cảm ơn cô giáo Tiến sĩ Nguyễn Thị Thanh Huyền, thầy cô Viện tạo điều kiện thuận lợi để em hoàn thành luận văn 69 TÀI LIỆU THAM KHẢO [1] Nguyễn Thị Thanh Huyền, Luận án tiến sĩ, Viện Toánứngdụng Tin học, trường Đại học Bách khoa Hà Nội, 2007 [2] Hồ Thuần, Hồ Cẩm Hà, Trần Thiên Thanh, Cấu trúc liệu, Phân tích thuậttoán phát triển phần mềm, NXBGD, 2008 [3] Christian Charras, Thierry Lecroq (2000), Handbook of Exact String matching Algorithms [4] Gonzalo Navarro, A guided tour to approximate string matching, 70 ... Các thuật toán đối sánh mẫu ứng dụng tìm kiếm website Mục tiêu nội dung Luận văn tập trung nghiên cứu thuật toán đối sánh mẫu ứng dụng tìm kiếm website - Tìm hiểu vấn đề tìm kiếm thông tin đối sánh. .. chọn sử dụng thuật toán off–line Tìm kiếm mục thực dựa tìm kiếm on–line 1.3 Các dạng toán đối sánh mẫu Dựa đặc tính mẫu, toán đối sánh mẫu phân loại sau: so đơn mẫu, so đa mẫu, đối sánh mẫu mở... hoạch động để tìm dãy chung lớn hai xâu Chương 4: Ứng dụng thuật toán đối sánh mẫu để tìm kiếm website Chương 1: TỔNG QUAN VỀ VẤN ĐỀ ĐỐI SÁNH MẪU 1.1 Đối sánh mẫu Đối sánh mẫu, hay so mẫu (pattern