1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu một số giải thuật tìm kiếm chuỗi con và ứng dụng

57 91 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 163,98 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài toán tìm kiếm xâu kí tự string searching, hay đôi khi gọi là đối sánh xâu string matching là một trong những bài toán cơ bản và quan trọng trong các thuật toán-xử lý về xâu ký tự hay

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ĐÀO THỊ DUNG

TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM

CHUỖI CON VÀ ỨNG DỤNG

Ngành: Công nghệ thông tin

Chuyên ngành: Hệ thống thông tin

Mã số: 60480104

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN TRÍ THÀNH

Hà Nội – 2016

Trang 3

LỜI CẢM ƠN

Sau thời gian nghiên cứu, làm việc khẩn trương và được sự hướng dẫn tận tình

giúp đỡ của thầy giáo PGS.TS Nguyễn Trí Thành, luận văn với đề tài “ Tìm hiểu một

số giải thuật tìm kiếm chuỗi con và ứng dụng” đã được hoàn thành.

Tác giả xin bày tỏ lòng biết ơn sâu sắc tới:

Thầy giáo hướng dẫn PGS.TS Nguyễn Trí Thành đã tận tình chỉ dẫn, giúp đỡ

tác giả hoàn thành luận văn

Các thầy cô giáo Trường Đại học công nghệ và một số đồng nghiệp, đã quan tâmđộng viên, giúp đỡ tác giả trong suốt quá trình học tập để hoàn thành luận văn này.Mặc dù đã cố gắng hết sức, song do điều kiện thời gian và kinh nghiệm thực tếcủa bản thân còn ít, cho nên đề tài không thể tránh khỏi thiếu sót Vì vậy, tác giả mongnhận được sự đóng góp ý kiến của các thầy giáo, cô giáo và các bạn bè đồng nghiệp.Tôi xin chân thành cảm ơn!

Hà Nội, ngày 10 tháng 03 năm 2016

Tác giả

Đào Thị Dung

1

Trang 4

LỜI CAM ĐOAN

Tên tôi là: Đào Thị Dung

Sinh ngày 30 tháng 12 năm 1989

Học viên lớp cao học khoá 20 HTTT - Trường đại học công nghệ -

ĐHQGHN Hiện đang công tác tại : Trường THPT DTNT Tỉnh Vĩnh Phúc

Xin cam đoan luận văn “ Tìm hiểu một số giải thuật tìm kiếm chuỗi con và

ứng dụng” do thầy giáo PGS.TS Nguyễn Trí Thành hướng dẫn là công trình nghiên

cứu của riêng tôi Tất cả các tài liệu tham khảo đều có nguồn gốc, xuất xứ rõ ràng.Tác giả xin cam đoan tất cả những nội dung trong luận văn đúng như nội dungtrong đề cương và yêu cầu của thầy giáo hướng dẫn Nếu có vấn đề gì trong nội dungcủa luận văn tác giả xin hoàn toàn chịu trách nhiệm với lời cam đoan của mình

Hà Nội, ngày 10 tháng 03 năm 2016

Học viên

Đào Thị Dung

2

Trang 5

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

Danh mục các ký hiệu và chữ viết tắt 5

Danh mục các bảng 6

Danh mục hình ảnh 7

MỞ ĐẦU 8

CHƯƠNG 1 TỔNG QUAN VỀ TÌM KIẾM CHUỖI CON 13

1.1 Lịch sử về tìm kiếm chuỗi con 13

1.1.1 Thuật toán trước những năm 2000 13

1.1.2 Thuật toán sau năm 2000 14

1.2 Tìm kiếm chuỗi con 15

1.2.1 Khái niệm về tìm kiếm chuỗi con 15

1.2.2 Các cách tiếp cận: 16

1.2.3 Các dạng tìm kiếm chuỗi 16

1.2.4 Ứng dụng của tìm kiếm chuỗi 20

1.3 Tóm tắt chương 18

CHƯƠNG 2 CÁC THUẬT TOÁN TÌM KIẾM CHUỖI CON 19

2.1 Các thuật toán tìm kiếm chuỗi con thông dụng 19

2.1.1 Thuật toán Brute Force 19

2.1.2 Thuật toán Karp-Rabin 27

2.1.3 Thuật toán Knuth – Morris – Pratt 32

2.1.4 Thuật toán Boyer – Moore 29

2.2 So sánh các thuật toán tìm kiếm chuỗi 42

2.3 Tóm tắt chương 43

CHƯƠNG 3 KẾT QUẢ THỰC NGHIỆM VÀ ỨNG DỤNG 36

3.1 Thực nghiệm 36

3.1.1 Môi trường thực nghiệm 36

3.1.2 Đánh giá kết quả thực nghiệm 39

3.2 Chương trình ứng dụng : 40

3.2.1 Tập CSDL sử dụng: 48

3

Trang 6

3.3 Tóm tắt chương 50

KẾT LUẬN 52

Đánh giá kết quả đề tài : 51

Hạn chế : 51

Hướng phát triển trong tương lai: 51

TÀI LIỆU THAM KHẢO 52

4

Trang 8

Danh mục các bảng

Bảng 1.1: Phân loại các dạng tìm kiếm chuỗi 18

Bảng 2.1: Bảng kmpNext 27

Bảng 2.2 : Bảng bmBc[c] 33

Bảng 2.3 : Bảng bmGs[i] 33

Bảng 2.4: Bảng so sánh các thuật toán tìm kiếm 42

Bảng 3.1: Cấu hình phần cứng Windows 36

Bảng 3.2 : Cấu hình phần cứng Linux 36

Bảng 3.3: Cấu hình phần mềm 36

Bảng 3.4: Bảng thống kê kết quả số 1 37

Bảng 3.5: Bảng thống kê kết quả số 2 38

Bảng 3.6: Bảng thống kê kết quả số 3 38

Bảng 3.7: Bảng thống kê kết quả số 4 39

Bảng 3.8 : Bảng thống kê kết quả số 5 39

6

Trang 9

Danh mục hình ảnh

Hình 2.1 : mis-match trong khi đang so sánh tại vị trí j 29

Hình 2.2 : good-suffix shift, trường hợp u lại xuất hiện trong x 37

Hình 2.3 : good-suffix shift, trường hợp chỉ suffix của u xuất hiện trong x 37

Hình 2.4 : bad-character shift 37

Hình 3.1 : Giao diện chương trình 41

Hình 3.2: Giao diện chương trình tìm kiếm theo từ viết tắt 41

Hình 3.3 : Giao diện chương trình tìm kiếm theo từ đầy đủ 42

7

Trang 10

Bài toán tìm kiếm xâu kí tự (string searching, hay đôi khi gọi là đối sánh xâu string matching) là một trong những bài toán cơ bản và quan trọng trong các thuật toán

-xử lý về xâu ký tự hay -xử lý văn bản (text processing) Đây là thuật toán -xử lý xâu vănbản quan trọng và có nhiều ứng dụng trong thực tế Có rất nhiều thuật toán tìm kiếmxâu kí tự ví dụ như thuật toán Brute Force, thuật toán Knuth - Morris- Pratt, thuật toánDFA (Deterministic Finite Automaton - máy automat hữu hạn), thuật toán Karp -Rabin,

Luận văn này nghiên cứu thuật toán tìm kiếm chuỗi con và ứng dụng chúng vào

hệ thống tìm kiếm văn bản

2 Hướng nghiên cứu :

-Nghiên cứu và cài đặt thử nghiệm 4 thuật toán : thuật toán Brute Force,thuật toán Knuth - Morris- Pratt, thuật toán Karp – Rabin, thuật toán Boyer– Moore

-Đánh giá hiệu năng của 4 thuật toán

-Xây dựng chương trình ứng dụng : từ điển viết tắt smartDictionary

3 Nội dung chính :

8

Trang 11

Luận văn được chia làm 3 chương với nội dung như sau:

8

Trang 12

Chương 1 : Tổng quan về tìm kiếm chuỗi con: Nghiên cứu tổng quan về tìm kiếmchuỗi con và ứng dụng của tìm kiếm chuỗi con trong thực tế.

Chương 2 : Các thuật toán tìm kiếm chuỗi con : Nghiên cứu các thuật toán tìmkiếm chuỗi con kèm theo đánh giá, so sánh giữa các thuật toán tìm kiếm chuỗi con

Chương 3 : Kết quả thực nghiệm và ứng dụng tìm kiếm chuỗi con trong xâu góitin và cài đặt thử nghiệm: Sử dụng các thuật toán tìm kiếm chuỗi con Từ đó cài đặtthử nghiệm và đánh giá kết quả thuật toán

9

Trang 13

CHƯƠNG 1 TỔNG QUAN VỀ TÌM KIẾM CHUỖI CON

Bài toán tìm kiếm xâu ký tự (string searching, hay đôi khi gọi là đối sánh xâu string matching) là một trong những bài toán cơ bản và quan trọng trong các thuật toán

-xử lý về xâu ký tự hay -xử lý văn bản (text processing)

1.1 Lịch sử về tìm kiếm chuỗi con

1.1.1 Thuật toán trước những năm 2000

Thuật toán dựa trên so sánh : Hầu hết các thuật toán dựa trên so sánh thể hiện

trong thời gian này bằng cách cải thiện hoặc kết hợp các ý tưởng của thuật toán công

bố trước đây Một trong những thuật toán đầu tiên để giải quyết vấn đề chuỗi kết hợptrong thời gian tuyến tính là do Knuth, Morris và Pratt [3] Ý tưởng chính của phươngpháp này như sau : trong quá trình tìm kiếm vị trí của mẫu P trong xâu gốc T, nếu tìmthấy một vị trí sai ta chuyển sang vị trí tìm kiếm tiếp theo và quá trình tìm kiếm saunày sẽ được tận dụng thông tin từ quá trình tìm kiếm trước để không phải xét cáctrường hợp không cần thiết Việc tìm kiếm được thực hiện bằng cách duyệt văn bản từtrái sang bên phải và với mỗi vị trí văn bản j, nhớ lại những tiền tố dài nhất của môhình đó cũng là một hậu tố của

Thuật toán Boyer-Moor có sự thay đổi bằng cách duyệt mô hình p từ phải sangtrái và khi phát hiện sự khác nhau đầu tiên thuật toán sẽ tiến hành dịch cửa sổ :

Cách thứ 1: Dịch sao cho những phần đã so sánh trong lần trước khớp vớinhững phần giống nó trong lần sau

Cách thứ 2: Coi ký tự đầu tiên không khớp trên văn bản là b=T[j+i-1] ta sẽ dịch

sao cho có một ký tự giống b trên xâu mẫu khớp vào vị trí đó (nếu có nhiều vị trí xuất hiện b trên xâu mẫu chọn vị trí phải nhất)

Thuật toán dựa trên Ô – tô – mát tất định: Trong thuật toán này, quá trình

tìm kiếm được đưa về một quá trình biến đổi trạng thái automat Hệ thống automattrong thuật toán DFA sẽ được xây dựng dựa trên xâu mẫu Mỗi trạng thái (nút) củaautomat sẽ đại diện cho số ký tự đang khớp của mẫu với văn bản Các ký tự của vănbản sẽ làm thay đổi các trạng thái Và khi đạt được trạng cuối cùng có nghĩa là đã tìmđược một vị trí xuất hiện ở mẫu

Thuật toán này có phần giống thuật toán Knuth-Morris-Pratt trong việc nhảy vềtrạng thái trước khi gặp một ký tự không khớp, nhưng thuật toán DFA có sự

10

Trang 14

đánh giá chính xác hơn vì việc xác định vị trí nhảy dựa trên ký tự không khớp của vănbản (trong khi thuật toán KMP lùi về chỉ dựa trên vị trí không khớp).

Việc xây dựng hệ automat khá đơn giản khi được cài đặt trên ma trận kề Khi

đó thuật toán có thời gian xử lý là O(n) và thời gian để tạo ra hệ automat là O(m*n)(tùy cách cài đặt) Nhưng ta nhận thấy rằng trong DFA chỉ có nhiều nhất M cung thuận

và M cung nghịch, vì vậy việc lưu trữ các cung không cần thiết phải lưu trên ma trận

kề mà có thể dùng cấu trúc danh sách kề Forward Star để lưu trữ Như vậy thời gianchuẩn bị và lượng bộ nhớ chỉ là O(m) Tuy nhiên thời gian tìm kiếm có thể tăng lênmột chút so với cách lưu ma trận kề

Thuật toán song song theo bit: Bit-song song là một kỹ thuật được giới thiệu

trong Domolki 1968 [2], và sau đó xem xét lại trong Baeza-Yates và Gonnet năm1992; Wu và Manber 1992 Bit-song song là một kỹ thuật sử dụng tính chất hoạt độngsong song bên trong máy tính, cho phép cắt giảm số lượng các hoạt động mà một thuậttoán thực hiện bởi một yếu tố lên đến W, nơi ω là số bit trong từ máy tính Bit-songsong là đặc biệt thích hợp cho các mô phỏng hiệu quả của máy tự động không đơnđịnh

Các thuật toán được xem xét trong phần này làm cho việc sử dụng các hoạtđộng trên bit, tức là hoạt động dựa trên một hoặc nhiều vectơ bit ở cấp độ bit riêng lẻcủa họ Trên các kiến trúc hiện đại, hoạt động trên bit có tốc độ giống như ngoàinhưng nhanh hơn đáng kể so với phép nhân và phép chia

1.1.2 Thuật toán sau năm 2000

Thuật toán dựa trên so sánh:

+Các biến thể của thuật toán Boyer – Moore:

- Các thuật toán AKC, một biến thể của thuật toán Apostolico-Giancarlo [8]nhớ lại tất cả các hậu tố của mô hình được tìm thấy trong các văn bản và tính những thay đổi cho phù hợp ở phần cuối của mỗi lần so sánh

- Thuật toán Fast- Search Family dựa trên thực tế rằng ở cuối mỗi lần so sánhđược tính toán với các quy tắc bad-character khi so sánh kí tự đầu tiên là không phùhợp và sự thay đổi được tính bằng cách sử dụng quy tắc hậu tố tốt

- Thuật toán SSABS và TVSBS, quét các kí tự đầu tiên ngoài cùng bên phải của

mô hình, sau đó tận cùng bên trái và cuối cùng các kí tự còn lại của mô hình;

- Các thuật toán Boyer-Moore Horspool [9] sử dụng xác suất, có thể quét cácký

11

Trang 15

của mô hình theo tần số

- Các thuật toán FJS [10], thuật toán kết hợp giữa thuật toán KMP và QS;

- Các thuật toán 2Block, theo dõi tất cả các ký tự tương ứng trước đó trong cửa

sổ hiện tại và không để di chuyển vị trí đọc vô điều kiện đến cuối của mô hình khikhông phù hợp xảy ra

+Two Windows: Trong phần này chúng tôi trình bày một thuật toán chuỗi kếthợp gần đây, tên là Two-Sliding-Windows, dựa trên so sánh kí tự và trong đó sử dụnghai cửa sổ văn bản trong khi tìm kiếm cho tất cả các lần xuất hiện của các mẫu Nóquét song song các phần bên trái và phần bên phải của văn bản và sử dụng một quyluật thay đổi của thuật toán Berry-Ravindran [1]

+ Hàm băm và g-gram:

Thuật toán dựa trên Ô – tô – mát tất định:

+ Biến thể của thuật toán BOM:

Thuật toán song song theo bit:

1.2 Tìm kiếm chuỗi con

Mặc dù dữ liệu được ghi nhớ trong nhiều cách khác nhau nhưng văn bản vẫn làhình thức chính để lưu trữ thông tin Điều này đặc biệt rõ ràng trong ngôn ngữ vănhọc, nơi dữ liệu được cấu tạo từ các văn thể rất lớn và từ điển Điều này được áp dụngphân tử sinh học nơi mà một số lượng lớn các dữ liệu được lưu trữ trong các tập tintuyến tính

Ví dụ các phân tử sinh học biểu diễn các trình tự nucleotide hoặc các axitamin

1.2.1 Khái niệm về tìm kiếm chuỗi con

Tìm kiếm chuỗi là việc so sánh một hoặc một vài chuỗi (thường được gọi làmẫu hay pattern) với văn bản để tìm nơi và số lần xuất hiện của chuỗi đó trong vănbản

Tìm một (hoặc nhiều) vị trí xuất hiện cuả một xâu ký tự (mẫu tìm kiếm - pattern) ở trong một xâu ký tự lớn hơn hay trong một đoạn văn bản nào đó , m<=n.

Ví dụ: ta có thể tìm thấy vị trí của xâu ―abc‖ trong xâu ―abcababc‖ là

1 và 6

Phát biểu hình thức bài toán như sau :

12

Trang 16

Gọi Σ là một tập hữu hạn (finite set) 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 { } hay có thể là tập các ký tự DNA trong sinh học

- Có 4 cách tiếp cận chính để làm tăng tốc độ thuật toán :

 Classical Algorthms : Thuật toán cổ điển chủ yếu dựa vào phép so sánh giữa các ký tự

- Ví dụ : Thuật toán Quick Search, Brute Force,…

 Suffix Automata Algorthms : Thuật toán máy tự động hậu tố sử dụng cấu trúc dữ liệu hậu tố tự động để nhận ra tất cả các hậu tố của Pattern

- Ví dụ : Thuật toán Knuth – Morris – Pratt

 Bit-Parallelism Algorithms : Thuật toán Bit song song khai thác bản chất song song của các dữ liệu bit để thực hiện các thao tác cùng lúc

- Ví dụ : Thuật toán Shift – Or

 Hashing Algorithms : Thuật toán băm sử dụng kỹ thuật hàm băm, tránh việc so sánh các ký tự có độ phức tạp bậc 2

- Các thuật toán đối sánh chuỗi thường có 2 bước xử lý sau:

- Bước tiền xử lý (Preprocessing Phase) :

+ Xử lý Pattern

+ Khởi tạo cấu trúc dữ liệu

- Bước tìm kiếm (Searching Phase) : Tìm kiếm Pattern trong Text

1.2.3 Các dạng tìm kiếm chuỗi

Phân loại các thuật toán tìm kiếm chuỗi dựa trên các đặc tính của mẫu ta có các dạng : tìm kiếm đơn mẫu, tìm kiếm đa mẫu, tìm kiếm mẫu mở rộng

Trang 17

12

Trang 18

Cơ sở

Trang 19

CW(Commentz & Walter)SBMH

(Backward-Dawg-Matching)

WMSBDM

(Backward-Oracle Matching)

Bảng 1.1: Phân loại các dạng tìm kiếm chuỗi

1.2.3.1 Thuật toán tìm kiếm dựa trên tiền tố

Knuth, Morris và Pratt đưa ra thuật toán KMP tìm kiếm dựa trên tiền tố bằngcách không so sánh mẫu với lần lượt từng vị trí trong văn bản như trong thuật toánBrute-Force mà có thể dịch chuyển mẫu sang phải văn bản một số vị trí do sử dụngnhững thông tin của những lần dịch chuyển trước cho lần dịch chuyển sau Thuật toánKMP đã cải tiến thời gian thực hiện vì đã giảm được số phép so sánh dựa trên các mẫuđược tiền xử lý để tìm ra các mẫu con từ đó xây dựng mảng Next để xác định ký tựtiếp theo trong mẫu được kiểm tra trên mô hình

Thuật toán tính mảng Next:

int* InitNext(char *p,int m)

{ int i,j,*kmpNext;

i= -1; j = 0; *kmpNext = -1; while (j < m )

{ while (i > -1)&&( p[i] != p[j])

Trang 20

14

Trang 21

else *( kmpNext + j) = i;}

return kmpNext; }

Thuật toán KMP chỉ áp dụng trên các tập mẫu đơn, để mở rộng trên các tập mẫukhác ta sử dụng cải tiến của thuật toán KMP, là thuật toán AC (Aho- Corasick) Thuậttoán AC cho tập đa mẫu sử dụng mô hình otomat hữu hạn (S,Q,I,T,F) Trong đó

:Q là tập hữu hạn các 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 địnhNFA Việc tìm kiếm trên DFA nhanh hơn quá trình tìm kiếm NFA Thuật toán DFAgồm 2 bước: bước tiền xử lý, mô hình DFA được xây dựng trên thuật toán AC, việctìm tìm trong DFA sẽ tìm các cột có giá trị bằng 0 trong ma trận Chuyển ma trận thànhAho-Corasick DFA bằng cách dịch các nút trạng thái thành các nút ký tự, với mỗi nút

ký tự có n mục trạng thái tiếp theo ứng với tất cả các trạng thái Tiếp theo các cột đượctìm kiếm có giá trị bằng 0 trên các dòng sẽ được trộn lại thành một dòng

1.2.3.2 Thuật toán tìm kiếm dựa trên hậu tố

Thuật toán Boyer – Moore được đưa ra năm 1977 [5] để kiểm tra các ký tự củamẫu từ phải sang trái Khi xuất hiện sự khác nhau ta sẽ tiến hành dịch mẫu sang phảivăn bản một số vị trí Thuật toán có 2 cách dịch chuyển mẫu là Good suffix và Bad -Character Good -suffix: gần giống trong thuật toán KMP, 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 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 Bad-character: xuất hiện sự khác nhau giữa mẫu P và văn bản T:

, 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ự

để đảm bảo sự ăn khớp Hai hướng tiếp cận sẽ tạo ra 2 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

Các thuật toán cải tiến của BM : BMH (BM-Horspool) đưa ra năm 1980 dùngcho tập đơn mẫu CW (Commentz & Walter) đưa ra năm 1979 [6] , SBMH năm 2002

và YBHK năm 2003, WM (Wu & Manner) năm 1994 dùng cho tập đa mẫu

15

Trang 22

Thuật toán BDH (Backward Dawg Matching) được xây dựng để tìm kiếm vị trí

xuất hiện các ký tự trong mẫu dựa trên thừa số 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 trongmẫ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ếtquả 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 toán BDH nhanh chóng tìm ra việc có hay không xuất hiện các mẫu concủ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 Cải tiến của BDM trên tập đơn mẫu là BOM (Backward Oracle Matching) [7], 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à

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

qủa tối ưu trong trường hợp trung bình Các cải tiến của BDH và BOM dùng cho tập

đa mẫu theo hướng tiếp cận thừa số là SBDM và SBOM

1.2.3.4 Thuật toán tìm kiếm dựa trên hàm băm

Thuật toán này được mở rộng từ thuật toán WM Các mục trong bảng HASH

và PREFIX có mối quan hệ một-một, thuật toán MDH [18] sử dụng hai bảng nén HASH, bảng các mẫu so khớp khả dĩ PMT (Possible matching patterns) kết hợp với bảng SHIFT Bảng HASH đầu tiên giống bảng HASH ở trên và bảng HASH thứ hai, MDH băm lại giá trị trong bảng SHIFT và lưu chúng trong bảng PTM Trong giai đoạn tìm kiếm, kích thước B của cửa sổ sẽ được trượt từ trái sang phải Với mỗi cửa

sổ ký tự có kích thước B, tính toán hàm băm và kiểm tra các mục liên quan trong bảng SHIFT Nếu giá trị của SHIFT là 0 thì di chuyển cửa sổ sang phải Ngược lại, băm các

ký tự trong cửa sổ lần nữa sử dụng hàm băm thứ hai, bây giờ sử dụng giá trị băm mới

để định danh sách mục trong bảng PMT Bước cuối cùng, cần xác minh tất cả các mẫu

thích hợp khả dĩ được liên kết trong các mục và di chuyển cửa sổ văn bản sang phải đểkhởi động lại thủ tục một lần nữa

1.2.4 Ứng dụng của tìm kiếm chuỗi

Tìm kiếm chuỗi (string matching) là một lĩnh vực quan trọng trong lĩnh vực xử

lý văn bản Các thuật toán tìm kiếm chuỗi được xem là thành phần cơ sở để cài đặt các

16

Trang 23

hệ thống thực tế Các thuật toán tìm kiếm chuỗi được áp dụng cho nhiều ứng dụng và trong nhiều lĩnh vực khác nhau của khoa học máy tính như :

- Máy tìm kiếm : Máy tìm kiếm là công cụ được xây dựng trên nền tảng

gõ Đề làm việc này các máy tìm kiếm thường gửi các web crawler, web spider hayweb robot ví dụ : googlebot của Google, Yahoo slurp của Yahoo đến các trang đánh chỉ

số Các bọ tìm kiếm này sẽ truy cập phân tích và gửi nội dung về các máy tìm kiếm.Máy tìm kiếm sắp xếp các trang Web dựa vào nội dung HTML của trang Có thể kểđến một số công cụ tìm kiếm phổ biến sau:

 Index:

Thu nhận tất cả thông tin mà các spider mang về và dùng thuật toán để lập chỉmục tất cả dữ liệu này theo từng từ, cụm từ Việc lập chỉ mục này sẽ giúp các bộ máytìm kiếm nhanh chóng tìm ra và tiếp cận nguồn dữ liệu khổng lồ mà nó lưu giữ Ngoàiviệc lập chỉ mục, các phần mềm index còn sử dụng nhiều thuật toán khác nhau để phântích, đánh giá các trang web và ấn định thứ hạng cho chúng Nhờ vào đó bộ máy tìmkiếm đánh giá tầm quan trọng của mỗi trang web đối với người dùng đang tìm kiếm

 Query:

Là giao diện mà người dùng nhìn khi sử dụng bộ máy tìm kiếm Nó bao gồm ô

để gõ từ khóa và ra lệnh tìm kiếm Máy tìm kiếm sẽ đưa ra những trang web phù hợp,

17

Trang 24

liên quan đến từ khóa của bạn Tuy vậy, thực chất thì phần mềm query không trực tiếptìm kiếm các trang web, nó chỉ lấy ra các dữ liệu đã được phần mềm index lưu trữ,đánh giá và sắp xếp.

Tóm lại máy tìm kiếm là tập hợp, phân tích và sắp xếp các trang web Bạn chỉviệc gõ từ hoặc cụm từ cần tìm và ra lệnh tìm kiếm, các Search Engine sẽ đưa ra danhsách kết quả phù hợp với yêu cầu của bạn

- Trình soạn thảo văn bản: Chức năng search trong các trình soạn thảo văn bản

và Web browser

- Sinh học phân tử: tìm kiếm sự tương đồng các chuỗi trình tự, đo lường sự

giống nhau giữa các chuỗi trình tự Các trình tự là các chuỗi DNA, RNA hoặc các trình

tự amino acid (protein) Là cách thức so sánh giữa 2 hay nhiều trình tự dựa trên việc sosánh một chuỗi các ký tự của trình tự để tìm ra điểm tương đồng, giống nhau giữa cáctrình tự Dựa trên phương pháp, người ta chia thành 2 loại tìm kiếm

 Phép tìm kiếm theo hướng toàn cục : được áp dụng trên toàn bộ chuỗitrình tự Thường được sử dụng khi các trình tự so sánh có kích thước gần tươngđương và các trình tự này có độ tương đồng cao

 Phép tìm kiếm theo hướng cục bộ : được áp dụng trên một phần của chuỗitrình tự Thường được sử dụng khi các trình tự có độ dài lớn, độ tương đồngkhông cao hoặc khi các trình tự có kích thước khác biệt lớn

- Trong an ninh mạng: tìm kiếm mẫu hoặc vết của tấn công, đột nhập và các

phần mềm độc hại trong lĩnh vực an toàn mạng và an toàn thông tin

1.3 Tóm tắt chương

Tìm kiếm chuỗi là một kỹ thuật đóng vai trò quan trong việc xử lý văn bản.Hiện nay dữ liệu được lưu trữ dưới nhiều hình thức khác nhau nhưng văn bản vẫn làhình thức phổ biến nhất để lưu trữ và trao đổi thông tin

Chương 1 trình bày tổng quan về tìm kiếm chuỗi con và các ứng dụng của tìmkiếm chuỗi Ứng dụng của tìm kiếm chuỗi được sử dụng trong nhiều lĩnh vực nhưtrong máy tìm kiếm, trình soạn thảo văn bản, trình duyệt Web, sinh học phân tử vàtrong phát hiện đột nhập mạng

Chương 2 của luận văn chúng ta đi sâu nghiên cứu về các thuật toán tìm kiếmchuỗi thông qua đó so sánh và đánh giá hiệu năng của từng thuật toán

18

Trang 25

CHƯƠNG 2 CÁC THUẬT TOÁN TÌM KIẾM CHUỖI

CON 2.1 Các thuật toán tìm kiếm chuỗi con thông dụng

2.1.1 Thuật toán Brute Force

2.1.1.1 Ý tưởng:

Thuật toán này thử kiểm tra tất cả các vị trí trên văn bản từ 1 cho đến

Sau mỗi lần thử, mẫu được dịch sang bên phải một ký tự cho đến khi kiểm tra hết văn bản

2.1.1.2 Phát biểu bài toán

-Các thuật toán brute force không đòi hỏi có giai đoạn tiền xử lý và không gian liêntục

-Thuật toán:

Void BF (char *x, int m, char *y, int n) {

int i , j ; /* Searching */

for ( j=0 ; j <= n-m ; ++j) { for ( i =0; i < m && x[i] == y[i+ j] ; ++i) ;

if ( i >= m) OUTPUT (j);

} }

2.1.1.3 Đánh giá thuật toán:

Trường hợp xấu nhất là tìm đến hết chuỗi T mà không thấy Khi đó với vị trí

tìm kiếm, ta phải so sánh m ký tự của chuỗi P với các ký tự tươngứng của chuỗi T Số lần so sánh: Thông thường m rất nhỏ

so với n nên ta có thể coi Như vậy đ ộ phức tạp thuật toán này là

Trang 26

19

Trang 27

GCAGAGAG

20

Trang 28

GCAGAGAG Thirteenth attempt

GCATCGCAGAGAGTATACAGTACG 1 2

GCAGAGAG

21

Ngày đăng: 16/10/2020, 21:46

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w