TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG...

13
ĐẠ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 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2016

Transcript of TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG...

Page 1: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

ĐẠ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

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

Hà Nội – 2016

Page 2: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

ĐẠ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

Page 3: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

3

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 .......................................... 8

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

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

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

1.2. Tìm kiếm chuỗi con ......................................................................................... 10

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

1.2.2. Các cách tiếp cận: ......................................................................................... 11

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

1.2.4. Ứng dụng của tìm kiếm chuỗi ...................... Error! Bookmark not defined.

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 ................................. Error! Bookmark not defined.

2.1.3. Thuật toán Knuth – Morris – Pratt ............... Error! Bookmark not defined.

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 ............... Error! Bookmark not defined.

2.3. Tóm tắt chƣơng ................................................. Error! Bookmark not defined.

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: .................................... Error! Bookmark not defined.

Page 4: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

4

3.3. Tóm tắt chƣơng ................................................... Error! Bookmark not defined.

KẾT LUẬN ................................................................................................................... 12

Đánh giá kết quả đề tài : ............................................ Error! Bookmark not defined.

Hạn chế : .................................................................... Error! Bookmark not defined.

Hƣớng phát triển trong tƣơng lai: .............................. Error! Bookmark not defined.

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

Page 5: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

8

MỞ ĐẦU

1. Lý do chọn đề tài:

Cùng với sự phát triển của công nghệ thông tin, số lƣợng các tài liệu điện tử

cũng đƣợc tăng lên đáng kể. Trong khi đó, nhu cầu khai thác trong kho tài liệu khổng

lồ này để tìm kiếm những thông tin cần thiết đang là nhu cầu thƣờng ngày và thiết thực

của ngƣời sử dụng. Tuy nhiên, một trong những khó khăn con ngƣời gặp phải trong

việc khai thác thông tin là khả năng tìm chính xác thông tin họ cần. Để trợ giúp công

việc này, các hệ thống tìm kiếm đã lần lƣợt đƣợc phát triển nhằm phục vụ cho nhu cầu

tìm kiếm của ngƣời sử dụng. Những hệ thống tìm kiếm bắt đầu phát triển và đƣa vào

ứng dụng, phổ biến là các hệ thống tìm kiếm theo từ khóa. Nhiều hệ thống hoạt động

hiệu quả trên Internet nhƣ Google, Bing, Yahoo!… Tuy nhiên, phần lớn các công cụ

tìm kiếm này là những sản phẩm thƣơng mại và mã nguồn đƣợc giữ bí mật. Hoặc các

hệ thống tìm kiếm trên máy cá nhân nhƣ Windows Search, Google Desktop… đã đáp

ứng phần nào nhu cầu của ngƣời sử dụng, miễn phí cho cá nhân, tuy nhiên cũng chỉ

đáp ứng đƣợc trên phạm vi nhỏ và mới chỉ dừng lại ở mức độ tìm kiếm từ khóa theo

tiêu đề và phần tóm tắt.

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ăn

bả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ếm

xâu kí tự ví dụ nhƣ thuật toán Brute Force, thuật toán Knuth - Morris- Pratt, thuật toán

DFA (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.

Page 6: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

8

- 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 :

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

Page 7: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

9

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ếm

chuỗ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ìm

kiế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ói

tin 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 đặt

thử nghiệm và đánh giá kết quả thuật toán.

Page 8: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

10

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ợp

trong thời gian tuyến tính là do Knuth, Morris và Pratt [3]. Ý tƣởng chính của phƣơng

phá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ìm

thấ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 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 xét các

trƣờ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 sang

trá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ới

nhữ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 automat

trong 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ủa

automat 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ăn

bả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ự

Page 9: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

11

đá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ăn

bả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 gian chuẩ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ên mộ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ăm

1992; Wu và Manber 1992. Bit-song song là một kỹ thuật sử dụng tính chất hoạt động

song 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ật

toá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-song

song 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ài

nhƣ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ác ký

Page 10: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

43

tự

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 khi

khô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ết

hợp gần đây, tên là Two-Sliding-Windows, dựa trên so sánh kí tự và trong đó sử dụng

hai 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 quy

luậ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ăn

họ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ụng

phâ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 tin

tuyế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 axit

amin.

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ăn

bản.

Tìm một (hoặc nhiều) vị trí xuất hiện cuả một xâu ký tự 𝑃[1⋯𝑚] (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 đó

𝑇[1⋯𝑛], 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 :

Page 11: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

43

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 (Σ = 0,1 ) hay có thể là tập các ký tự DNA trong

sinh học Σ = {𝐴,𝐶,𝐺,𝑇}).

- Đầu vào : Xâu mẫu 𝑃[1⋯𝑚]

Xâu tìm kiếm 𝑇[1⋯𝑛]

- Đầu ra : Tất cả vị trí xuất hiện của P trong T

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

- 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

Ví dụ : Thuật toán Karp – Rabin

- 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

Page 12: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

44

TÀI LIỆU THAM KHẢO

[1] Christian Charras, Therry Lecroq, T, Handbook of Exact String Matching

Algorithms, King's College Publications, 2004.

[2] Simone Faro, Thierry Lecroq. The exact online string matching problem A review

of the most recent results.

[3] Knuth et al. 1977, Algorithms and Theory of Computation Handbook

[4] Maxime Crochemore, Thierry Lecroq, Pattern matching and text compression

algorithms, King's College Publications, 2004.

[5] R. Boyer and J. Moore. A Fast String Searching Algorithm, Commun. ACM,

1977,pages 762-772.

[6] Beate Commentz – Walter , A String Matching Algorithm Fast on the Average

Extended Abstract, 1979

[7] S. Faro and T. Lecroq . Efficient Variants of the Backward-Oracle-

Matching Algorithm . Proceedings of the Prague Stringology Conference 2008,

pp.146—160

[8] Gusfield, D., 1997, Algorithms on strings, trees, and sequences: Computer

Science and Computational Biology, Cambridge University Press.

[9] R. N. Horspool (1980). "Practical fast searching in strings". Software - Practice

& Experience

[10] Jan Holub1, William F.Smyth, and Shu Wang, Hybrid Pattern – Matching

Algorithms on Indeterminate Strings

[11] STEPHEN, G.A., 1994, String Searching Algorithms, World Scientific.

[12] SEDGEWICK, R., 1988, Algorithms in C, Chapter 19, Addison-Wesley

Publishing Company.

[13] LECROQ, T., 1995, Experimental results on string matching algorithms, Software

- Practice & Experience

[14] CROCHEMORE, M., LECROQ, T., 1996, Pattern matching and text

compression algorithms, in CRC Computer Science and Engineering Handbook, A.

Tucker ed., Chapter 8, pp 162-202, CRC Press Inc., Boca Raton, FL.

[15] CROCHEMORE, M., HANCART, C., 1999, Pattern Matching in Strings,

in Algorithms and Theory of Computation Handbook, M.J. Atallah ed., Chapter 11, pp

11-1--11-28

Page 13: TÌM HIỂU MỘT SỐ GIẢI THUẬT TÌM KIẾM CHUỖI CON VÀ ỨNG …repository.vnu.edu.vn/bitstream/VNU_123/16262/1/00050007200.pdf · 11 đánh giá chính xác hơn vì việc

45

[16] GONNET, G.H., BAEZA-YATES, R.A., 1991. Handbook of Algorithms and

Data Structures in Pascal and C, 2nd Edition, Chapter 7, pp. 251-288, Addison-Wesley

Publishing Company.

[17] GOODRICH, M.T., TAMASSIA, R., 1998, Data Structures and Algorithms in

JAVA, Chapter 11, pp 441-467, John Wiley & Sons.

[18] Zongwei Zhou, Yibo Xue, Junda Liu, Wei Zhang, Jun Li, A high speed multi –

phase Dynamic Hash String Matching Algorithm for Large – Scale Pattern Set.