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

Nghiên cứu phương pháp so sánh xâu xấp xỉ và ứng dụng

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.4 MB, 61 trang )

i

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

Nguyễn Thanh Hùng

NGHIÊN CỨU PHƢƠNG PHÁP
SO SÁNH XÂU XẤP XỈ VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Thái Nguyên - Năm 2015

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

ii

LỜI CAM ĐOAN
Tôi xin cam đoan số liệu và kết quả nghiên cứu trong luận văn này là trung
thực và chƣa đƣợc sử dụng để bảo vệ học hàm, học vị nào.
Tôi xin cam đoan: Mọi sự giúp đỡ cho việc thực hiện luận văn này đã đƣợc
cám ơn, các thông tin trích dẫn trong luận văn này đều đã đƣợc chỉ rõ nguồn gốc.
Thái Nguyên, ngày 18 tháng 8 năm 2015
TÁC GIẢ LUẬN VĂN

Nguyễn Thanh Hùng

Số hóa bởi Trung tâm Học liệu - ĐHTN



/>

iii

LỜI CẢM ƠN

Trong thời gian nghiên cứu và thực hiện luận văn này, em đã may mắn đƣợc
các thầy cô chỉ bảo, dìu dắt và đƣợc gia đình, bạn bè quan tâm, động viên. Em xin
bày tỏ lời cảm ơn sâu sắc nhất tới tất cả các tập thể, cá nhân đã tạo điều kiện giúp
đỡ em trong suốt quá trình thực hiện nghiên cứu luận văn này.
Trƣớc hết em xin trân trọng cảm ơn Ban giám hiệu trƣờng Đại học Công
nghệ thông tin và truyền thông, Phòng Đào tạo và Khoa Sau đại học của nhà
trƣờng cùng các thầy cô giáo, những ngƣời đã trang bị kiến thức cho em trong
suốt quá trình học tập.
Với lòng biết ơn chân thành và sâu sắc nhất, em xin trân trọng cảm ơn thầy
giáo – PGS.TS Nguyễn Trí Thành, giảng viên khoa Công nghệ thông tin – Trƣờng
Đại học Công nghệ - Đại học Quốc gia Hà Nội; ngƣời thầy đã trực tiếp chỉ bảo,
hƣớng dẫn khoa học và giúp đỡ em trong suốt quá trình nghiên cứu, hoàn thành
luận văn này.
Xin chân thành cảm ơn tất cả các bạn bè, đồng nghiệp đã động viên, giúp đỡ
nhiệt tình và đóng góp nhiều ý kiến quý báu để em hoàn thành luận văn này.
Do thời gian nghiên cứu có hạn, luận văn của em chắc hẳn không thể tránh
khỏi những sơ suất, thiếu sót, em rất mong nhận đƣợc sự đóng góp của các thầy cô
giáo cùng toàn thể bạn đọc.
Xin trân trọng cảm ơn!
Thái Nguyên, ngày 18 tháng 8 năm 2015
TÁC GIẢ LUẬN VĂN

Nguyễn Thanh Hùng

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

iv

MỤC LỤC
MỞ ĐẦU ........................................................................................................................................................1
CHƢƠNG 1: GIỚI THIỆU CHUNG VỀ XẤP XỈ ..............................................................................4
1.1 Khái niệm xấp xỉ ............................................................................................................ 4
1.1.1 Đối sánh chuỗi........................................................................................................................4
1.1.2 Đối sánh chính xác ................................................................................................................5
1.2.3 Đối sánh chuỗi xấp xỉ............................................................................................................6
1.2 Nội dung và ý nghĩa ứng dụng.................................................................................... 10
1.2.1 Nội dung ............................................................................................................................... 10
1.2.2 Ý nghĩa ứng dụng ................................................................................................................ 12
1.3 Kết luận chƣơng ........................................................................................................... 12
CHƢƠNG 2: TÌM HIỂU MỘT SỐ THUẬT TOÁN ....................................................................... 14
2.1 Thuật toán của Galil-Park............................................................................................ 14
2.2 Thuật toán của Ukkonen-Wood và một số cải tiến................................................... 18
2.3 Thuật toán của Boyer-Moore ...................................................................................... 21
2.4 Thuật toán đối sánh xâu vòng tròn gần đúng ............................................................ 29
2.5 Kết luận chƣơng ........................................................................................................... 36
CHƢƠNG 3: THỰC NGHIỆM VÀ ỨNG DỤNG .......................................................................... 38
3.1 Chƣơng trình ứng dụng asmf-master ......................................................................... 38
3.1.1 Giới thiệu chung.................................................................................................................. 38
3.1.2 Các hàm asmf-master ........................................................................................................ 39
3.1.3 Thiết lập môi trường cài đặt và chạy ứng dụng ............................................................ 40
3.1.4 Thực nghiệm với chương trình asmf-master.................................................................. 41
3.2 Thực nghiệm, ứng dụng trong bài toán sửa lỗi chính tả ........................................... 43

3.2.1 Giới thiệu về ứng dụng sửa lỗi chính tả .......................................................................... 43
3.2.2 Thực nghiệm ứng dụng ...................................................................................................... 46
3.3 Thực nghiệm, ứng dụng trong bài toán gợi ý truy vấn từ điển ................................ 47
3.3.1 Giới thiệu về ứng dụng gợi ý truy vấn từ điển ............................................................... 47
3.3.2 Thực nghiệm ứng dụng ...................................................................................................... 48
3.4 Nhận xét ........................................................................................................................ 51
3.5 Kết luận chƣơng ........................................................................................................... 52
KẾT LUẬN................................................................................................................................................. 54
TÀI LIỆU THAM KHẢO....................................................................................................................... 55

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

v

DANH MỤC HÌNH VẼ

Hình 1.1: Cây hậu tố cho S= "xabxac" ........................................................... 10
Hình 1.2: Hoạt động cơ bản của thuật toán Boyer-Moore .............................. 11
Hình 2.1: cây hậu tố cho S= "xabxac" ............................................................ 18
Hình 2.2: Cây hậu tố cho chuỗi "xabxac$" ..................................................... 18
Hình 2.3: Cây bao hàm cho chuỗi "xabxa$" ................................................... 19
Hình 2.4: Cây bao chùm cho chuỗi axabxb .................................................... 20
Hình 2.5 : Cây biểu diễn hậu tố cho chuỗi ...................................................... 21
Hình 3.1: Giao diện ứng dụng sửa lỗi chính tả ............................................... 45
Hình 3.2: Sửa từ cho từ sai .............................................................................. 46
Hình 3.3: Thực nghiệm với từ khóa ................................................................ 46
Hình 3.4: Thực nghiệm với từ "Cổng" ............................................................ 47
Hình 3.5: Thực nghiệm với từ "Tỏa"……………………………………….. 47

Hình 3.6: Hệ thống gợi ý từ điển..………………………………………….. 47
Hình 3.7: Thực nghiệm hệ thống gợi ý với từ khóa "Gợi" ............................. 49
Hình 3.8: Thực nghiệm với từ khóa "Tổng" ................................................... 50
Hình 3.9: thực nghiệm với từ khóa "Trƣờng" ................................................. 50
Hình 3.10: Thực nghiệm với từ khóa "Việt"................................................... 51

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

1

MỞ ĐẦU

1. Lý do chọn đề tài
Kiểu dữ liệu văn bản (Text) là dạng trình bày thông tin gần gũi nhất với con
ngƣời, vì vậy, đây cũng là dạng trình bày thông tin số rất phổ biến. Chính vì lẽ đó,
bài toán tìm kiếm văn bản (text searching) là một trong những bài toán quan trọng
nhất trong hoạt động tìm kiếm thông tin của con ngƣời. Trong thời đại ngày nay,
văn bản số hóa đang tăng trƣởng "bùng nổ" trong các cơ sở dữ liệu trên Internet,
dung lƣợng tăng gấp đôi sau mỗi chu kỳ 18 tháng. Trong bối cảnh đó, vấn đề tìm
kiếm văn bản một cách tự động đã rất quan trọng thì lại ngày càng quan trọng hơn.
Dạng phổ biến nhất của bài toán tìm kiếm văn bản là: Cho trƣớc nguồn tìm
kiếm là một tập D các văn bản (hoặc là cơ sở dữ liệu văn bản, hoặc là tập các văn
bản trên Internet). Cho một câu hỏi dạng văn bản q (thƣờng là một từ, một xâu văn
bản ngắn), hãy tìm tất cả các văn bản thuộc D mà có chứa q. Trong nhiều trƣờng
hợp (chẳng hạn, tìm kiếm thông qua máy tìm kiếm) thì q còn đƣợc gọi là "truy vấn"
và bài toán còn có tên gọi là "tìm kiếm theo truy vấn". Để tìm đƣợc các văn bản có
chứa văn bản truy vấn q, hệ thống tìm kiếm cần phải kiểm tra văn bản truy vấn q có
là một xâu con của các văn bản thuộc tập D hay không (sánh mẫu) và đƣa ra các

văn đáp đáp ứng. Trong nhiều trƣờng hợp, bài toán còn đòi hỏi tìm tất cả các vị trí
của các xâu con trong văn bản trùng với q. Đồng thời, điều kiện tìm kiếm có thể
đƣợc làm "xấp xỉ" theo nghĩa văn bản kết quả có thể không cần chứa q (không cần
có một xâu con của văn bản trùng một cách hoàn toàn chính xác với q) mà chỉ cần
"liên quan" tới q (có xâu con trong văn bản "xấp xỉ" q). Có thể thấy, các máy tìm
kiếm sử dụng cả cơ chế tìm kiếm xấp xỉ khi mà văn bản kết quả tìm kiếm không
chứa hoàn toàn chính xác văn bản truy vấn [1].
Thời gian gần đây, bài toán sánh mẫu càng trở nên quan trọng và đƣợc quan
tâm nhiều do sự tăng trƣởng nhanh chóng của các hệ thống tìm kiếm thông tin và
các hệ thống sinh- tin học. Một lý do nữa, con ngƣời ngày nay không chỉ đối mặt
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

2

với một lƣợng thông tin khổng lồ mà còn đòi hỏi những yêu cầu tìm kiếm ngày
càng phức tạp. Các mẫu đƣa vào không chỉ đơn thuần là một xâu ký tự mà còn có
thể chứa các ký tự thay thế, các khoảng trống và các biểu thức chính quy. Sự “tìm
thấy” không đơn giản là xuất hiện chính xác mẫu trong văn bản mà còn cho phép
“một xấp xỉ” giữa mẫu và xuất hiện của nó trong văn bản. Từ đó, bên cạnh vấn đề
kinh điển là “tìm kiếm chính xác”, nảy sinh một hƣớng nghiên cứu là "sánh mẫu
xấp xỉ / tìm kiếm xấp xỉ” (approximate matching / approximate searching) [2].
So sánh thực nghiệm của thời gian chạy của thuật toán xấp xỉ chuỗi kết hợp
cho k vấn đề khác nhau đƣợc trình bày. Với một chuỗi mô hình, một chuỗi văn bản,
và một số nguyên k, nhiệm vụ là để tìm tất cả các lần xuất hiện gần đúng của mô
hình trong văn bản với ít nhất k khác biệt (chèn thêm, xóa, thay đổi). Xem xét bảy
thuật toán dựa trên phƣơng pháp tiếp cận khác nhau bao gồm lập trình năng động,
Boyer-Moore chuỗi kết hợp, hậu tố bị tự động, và sự phân bố của các nhân vật. Nó
chỉ ra rằng không ai trong số các thuật toán là tốt nhất cho tất cả các giá trị của các

thông số vấn đề, và sự khác biệt tốc độ giữa các phƣơng pháp có thể là đáng kể.
Xuất phát từ những yêu cầu và lý do trên, em lựa chọn đề tài luận văn là:
"Nghiên cứu phƣơng pháp so sánh xâu xấp xỉ và ứng dụng".
Luận văn này định hƣớng nghiên cứu một số thuật toán so sánh mẫu xâu xấp
xỉ, tập trung vào một số thuật toán của Galil Park, Ukkonen Wood Boyer-Moore,
thuật toán xâu vòng tròn gần đúng với độ phức tạp là hàm tuyến tính và tiến hành
thực nghiệm ứng dụng.
2. Mục tiêu nghiên cứu
- Nghiên cứu để hiểu các khái niệm và đặc trƣng liên quan tới bài toán so
sánh xâu xấp xỉ.
- Nghiên cứu các lớp thuật toán so sánh xâu xấp xỉ.
- Khảo sát, phân tích một số thuật toán và các bƣớc tiến hóa và hiệu suất
(nghiên cứu khả năng về ý tƣởng cải tiến thuật toán).

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

3

- Khảo sát chƣơng trình ứng dụng asmf-master để có thể khai thác vào
trƣờng hợp của luận văn.
- Cài đặt thử nghiệm tìm vị trí các câu hỏi trong nội dung, kết quả trả về của
một máy tìm kiếm.
3. Đối tƣợng và phạm vi nghiên cứu
Nghiên cứu một số thuật toán so sánh xâu xấp xỉ miền dữ liệu văn bản. Tiếp
đó, luận văn thi hành một số thuật toán trong họ thuật toán nói trên, cài đặt thử
nghiệm tìm kiếm.
4. Ý nghĩa thực tiễn của luận văn
Nghiên cứu thuật toán so sánh xâu xấp xỉ và ứng dụng của chúng vào hệ

thống tìm kiếm văn bản. Vì vậy, nó có ý nghĩa rất lớn trong lý thuyết và thực tiễn.
5. Phƣơng pháp nghiên cứu
- Phƣơng pháp nghiên cứu tài liệu, phân tích, tổng hợp.
- Phƣơng pháp thực nghiệm và đối chứng qua chƣơng trình thử nghiệm.

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

4

CHƢƠNG 1: GIỚI THIỆU CHUNG VỀ XẤP XỈ
Trong chƣơng này sẽ trình bày về một số số khái niệm xấp xỉ, khái quát về
một số thuật toán đối sánh mẫu xấp xỉ, các giải pháp thực hiện cho áp dụng ứng
dụng cho thuật toán đối sánh chuỗi xấp xỉ mà tác giả đã nghiên cứu trong thời gian
vừa qua.
1.1 Khái niệm xấp xỉ
Khái niệm xấp xỉ trong luận văn này, đƣợc sử dụng đồng nghĩa với khái
niệm đối sánh chuỗi xấp xỉ. Luận văn này sẽ trình bày một số giải thuật về đối
sánh chuỗi xấp xỉ mà tác giả đã nghiên cứu và tìm hiểu đƣợc các ứng dụng thực tế
nhƣ tìm và sửa từ lỗi, gợi ý tìm kiếm trong hệ thống tìm kiếm từ điển. Đối sánh
thể hiện việc so sánh chuỗi T và chuỗi P. Các kỹ thuật đối sánh đƣợc ứng dụng
nhiều trong các lĩnh vực khác nhau của tin học. Trong luận văn này, các kỹ thuật
đƣợc sử dụng để phát hiện từ sai chính tả và sử lại các từ sai.
1.1.1 Đối sánh chuỗi
Đối sánh thể hiện việc so sánh chuỗi T và chuỗi P. Các ký tự của T đƣợc so
sánh với các ký tự của P. Với phƣơng pháp so sánh khác nhau sẽ trả lời các yếu tố
tƣơng quan của T và P theo góc độ của thuật toán cụ thể. Ví nhƣ đối sánh theo các
thao tác chuyển ký tự của T để T chuyển thành P và ngƣợc lại, phƣơng pháp này thể
hiện độ đo khoảng các đối sánh. Ngoài ra còn nhiều phƣơng pháp đối sánh khác

nhau cho phép đối sánh T và P theo n_gram, đối sánh mẫu theo tiền tố, hậu tố …
Bài toán đối sánh chuỗi là kỹ thuật thực hiện tìm kiếm sự xuất hiện của chuỗi
T trong chuỗi P. Cho chuỗi T và chuỗi P, sử dụng giải thuật F tìm kiếm và trả về
kết quả R là các vị trí của chuỗi T xuất hiện trong chuỗi P.
R = F(T,P)
Nhƣ vậy có thể thấy kết quả trả về của giải thuật F phụ thuộc vào:

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

5

- Cung cấp dữ liệu đầu vào T: Nếu cung cấp dữ liệu T không tốt sẽ cho kết
quả không nhƣ mong đợi, thậm trí không có kết quả.
- Cung cấp dữ liệu xử lý P: Chuỗi cần xử lý để đƣa ra kết quả xem có sự xuất
hiện của T trong P hay không. Phụ thuộc vào nguồn cung cấp P. Nếu nguồn cung
cấp P không chứa chuỗi T thì việc đối sánh trả về kết quả là không tìm thấy kết quả
mà nguồn T cung cấp.
- Bản thân giải thuật F: Giải thuật sẽ thực hiện phƣơng pháp đối sánh T với
P và trả về kết quả theo yêu cầu. Giải thuật ảnh hƣởng trực tiếp đến kết quả. Tùy
thuộc vào cách tiếp cận mà có kết quả khác nhau. Nếu giải thuật tiếp cận theo
hƣớng đối sánh chính xác cần phải thực hiện sánh đúng chuỗi T chuỗi P để trả lời
câu hỏi P có trùng T hay không.
Các kỹ thuật đối sánh có thể phân thành hai loại đó là kỹ thuật so sánh đối
sánh chính xác, kỹ thuật còn lại là so sánh đối sánh không chính xác (xấp xỉ). Trong
luận văn này chỉ đề cập tới các thuật toán xấp xỉ.
1.1.2 Đối sánh chính xác
Tìm chính xác là phƣơng pháp trả lời câu hỏi chuỗi T có chính xác tồn tại
trong chuỗi P hay không? Nếu có hãy chỉ ra vị trí xuất hiện của T có trong P [3].

Khái niệm trùng đƣợc chỉ ra ở đây có thể hiểu theo ý nghĩa là T đƣợc sánh đúng với
chuỗi con của P theo từng thứ tự ký tự, độ dài của T và chuỗi con phải bằng nhau.
Ví dụ : Cho chuỗi T="Các"
và chuỗi P ="Chào các bạn. Chúc các bạn ngày mới tốt lành".
Nhƣ vậy kết quả của đối sánh trả về thứ tự 1 và 4 là vị trí xuất hiện của T
trong P.
Đối sánh chính xác đƣa ra một số ý nghĩa của nó thực hiện trong các hệ
thống tìm kiếm cần trả về kết quả chính xác. Hệ thống sẽ trả lời câu hỏi T có thật sự
tồn tại trong P hay không? Với các phƣơng pháp của tìm kiếm chính xác đủ mạnh
để có một hiệu quả tìm kiếm tốt.
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

6

Ứng dụng của tìm kiếm chính xác:
- Trong máy tìm kiếm: Trả lời chính xác đƣợc câu hỏi từ khóa k đƣợc cung
cấp. Máy tìm kiếm thực hiện tìm kiếm trong hệ thống dữ liệu và trả ra các tài liệu có
chứa từ khóa k đã cung cấp. Nếu không có sẽ chỉ ra không có kết quả.
- Trong xử lý văn bản: Trả lời câu hỏi từ khóa k có tổn tại trong văn bản hay
không?
- Các phần mềm diệt virus: Có thể chứng minh sự tồn tại của đoạn mã code
độc trong file cần quét. Chƣơng trình thực hiện tìm kiếm Virus và thực hiện loại bỏ
virus nếu phát hiện có trong file đƣợc nghi là bị nhiễm.
- Trong hệ thống tìm kiếm theo từ điển: Xây dựng đƣợc hệ thống tra cứu từ
điển. Ngƣời dùng cung cấp từ và hệ thống thực hiện tìm kiếm từ mà ngƣời dùng đã
cung cấp để đƣa ra định nghĩa và mô tả cho từ khóa.
Ví dụ: Cho chuỗi T="cac" và chuỗi P = "Chào các bạn. Chúc các bạn một
ngày mới tốt lành".

Với các hệ thống tìm kiếm phát triển mạnh mẽ hiện nay, nhất là các máy truy
tìm thông tin ngày càng đƣợc cải tiến hiệu quả, và các hệ thống có sử dụng các
phƣơng pháp đối sánh chuỗi. Việc tìm ra cách thức tìm kiếm chính xác tỏ ra kém
hiệu quả hơn trong một số trƣờng hợp cụ thể nhƣ: Hệ thống tìm kiếm mong muốn
trả về nhiều giá trị hơn và bỏ qua điều kiện chính xác hoàn toàn mà tập chung vào
các yếu tố liên quan tới, gần đúng, xấp xỉ … Để giải quyết đƣợc yêu cầu này tác giả
giới thiệu một số giải thuật hỗ trợ tìm kiếm xấp xỉ.
1.2.3 Đối sánh chuỗi xấp xỉ
Nhƣ đã nói ở mục trƣớc, việc hệ thống tìm kiếm có thể trả về nhiều kết quả
hơn. Với các kết quá có phần yếu tố tƣơng tự liên quan. Ngày nay việc cung cấp các
phƣơng pháp đối sánh mẫu xấp xỉ ngày càng đƣợc quan tâm và đã mang về các kết
quả tốt hơn cho ngƣời sử dụng hệ thống.

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

7

- Hệ thống tìm kiếm mong muốn cung cấp các kết quả nhiều hơn chon ngƣời
sử dụng càng tốt. Ngƣời sử dụng mong muốn có nhiều kết quả hơn (liên đới). Với
kết quả này làm cho ngƣời dùng có thể ít hiểu biết (ít thông tin) về vấn đề cần tìm
kiếm cũng sẽ đƣợc hài lòng.
- Nhận dạng mẫu: Hệ thống đối sánh không những là văn bản mà có thể ứng
dụng trong tìm kiếm các chuỗi nhị phân. Mở ra đƣợc dựa trên mẫu (ảnh/ audio) có
thể tìm kiếm các file ảnh/audio tƣơng tự. Áp dụng trong lĩnh vực quân sự (nhận
dạng khuôn mặt).
- Hệ thống sửa lỗi cho từ và gợi ý các từ cần sửa. Giúp các phần mềm soạn
thảo trở nên thông minh hơn và hữu ích hơn khi hỗ trợ ngƣời soạn thảo có văn bản
đƣợc tin cậy hơn khi giúp họ sửa từ và gợi ý từ cần sửa.

"Bài toán đối sánh xấp xỉ" [4], [7] là kỹ thuật tìm kiếm sự xuất hiện của các
chuỗi T’ gần giống (xấp xỉ) T nằm trong chuỗi P. Có thể phát biểu theo cách khác:
kỹ thuật tìm kiếm chuỗi T trong chuỗi P, kết quả tìm kiếm trả về các chuỗi T’ gần
đúng (xấp xỉ) T.
Ví dụ: Cho chuỗi T="cac" và chuỗi P ="Chào các bạn. Chúc các bạn ngày mới
tốt lành!". Ở đây có thể tìm thấy từ T’="các" là gần đúng T theo ý nghĩa nào đó.
Vấn đề đặt ra ở đây là làm thế nào để biết đƣợc T và T’ là xấp xỉ nhau mà
không phải T’’ nào khác. Để thực hiện điều này có một cách tiếp cận đó là quy
chung về một con số định lƣợng cho tất cả các chuỗi. Công việc còn lại là phƣơng
pháp xác định con số này. Việc tìm kiếm ra các các T’ có ý nghĩa rất qua trọng
trong các ứng dụng sử dụng phƣơng pháp xấp xỉ. Chính vì việc có thể chỉ ra đƣợc
các T’ càng gần T thể hiện độ hữu dụng của bài toán. Nếu không thể tìm ra hoặc là
thuật toán kém hiệu quả về tìm kiếm kết quả sẽ làm cho ứng dụng giảm độ tin cậy
và không thực hiện đƣợc đúng mục tiêu đƣợc đề ra.
Một cách tổng quát để thực hiện đƣa ra các T’ xấp xỉ T chúng ta có một cách
khá đơn giản là tìm ra các thao tác chuyển T’ thành T. Gọi D là tổng các thao tác để
thực hiện chuyển T’ thành T một cách chính xác.
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

8

- Nếu D = 0; cho thấy T và T’ trùng nhau.
Ví dụ: T ="Các" và T’ ="Các".
- Nếu D > 0: Cho thấy phải mất ít nhất một thao tác để chuyển T thành T’ và
ngƣợc lại.
Ví dụ: Cho T = "Thiên" và T’ = "hiên". D > 0 cần thao tác thêm ký tự "T" vào
T’ để T’="Thiên" hoặc bỏ ký tự "T" trong T để T= "hiên".
Nhận xét: nếu D càng nhỏ thì T và T’ càng gần nhau. Hay nói một cách khác.

Nếu D = 0 thì T và T’ trùng nhau. Nếu D > 0 thì độ gần nhau (xấp xỉ) càng nhỏ khi
D càng nhỏ, D càng lớn thì độ xấp xỉ càng lớn.
Đối sánh chuỗi xấp xỉ đƣợc thực hiện dựa trên các thao tác chủ yếu sau đây:
- Xóa ký tự: Thao tác đƣợc thực hiện khi chuyển chuỗi T thành chuỗi T’ mà
độ dài của T lớn hơn độ dài của T’ thì cần thực hiện xóa bớt các ký tự.
Ví dụ: Cho chuỗi T="Thiên thanh" và T’="Thiên". Cần phải bỏ các ký tự
"thanh" trong T.
- Chèn thêm ký tự: Thao tác đƣợc thực hiện khi chuyển chuỗi T thành chuỗi
T’ mà độ dài của T nhỏ hơn độ dài của T’ thì cần thực hiện thêm các ký tự.
Ví dụ cho chuỗi T="hiên" muốn chuyển thành T’="Thiên", cần phải chèn
thêm ký tự "T" vào đầu của T khi đó T="Thiên" và trùng với T’.
- Thay thế ký tự: Thao tác đƣợc thực hiện khi chuyển chuỗi T thành chuỗi T’
mà độ dài là nhƣ nhau nhƣng tại các vị trí cùng thứ tự các ký tự của T’ khác với T.
Ví dụ: Cho T="Hiên" và T’="Hiển", nhƣ vậy cần thay ký tự "ê" trong T thành
ký tự "ể" trong T’. Có đƣợc T="Hiển".
- Hoán đổi ký tự: Đƣợc thực hiện khi T và T’ có vị trí T[i] = T’[j] và T[j] =
T’[i]. Cần phải thực hiện hoán đổi T[i] cho T[j]. Nhƣ thế thì T mới chuyển thành T’.

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

9

Trong các thao tác trên, với ba thao tác thêm, xóa, thay thế ký tự là các thao
tác hay đƣợc sử dụng nhiều hơn cả. Thao tác hoán đổi sẽ ít sử dụng hơn và chỉ có
một số thuật toán áp dụng thao tác này.
Một chú ý đáng thú vị ở đây là khoảng cách xấp xỉ này chỉ ra đƣợc tổng số
các thao tác cần phải đƣợc thực hiện để chuỗi T chuyển thành chuỗi T’, không chỉ
rõ từng thao tác phải thực hiện.

Hầu hết các thuật toán về sánh chuỗi xấp xỉ sử dụng cách tiếp cập này để
thực hiện đƣa ra giá trị xấp xỉ [5]. Các thuật toán có thể kể đến sau đây là:
- Levenshtein Distance: Thực hiện đối sánh chuỗi xấp xỉ theo các thao tác
(chèn, xóa, thay thế). Với các chuỗi có độ dài không nhất thiết phải bằng nhau. Đây
là một thuật toán khá dễ dàng cài đặt và cho ra số bƣớc chuyển ngắn nhất.
- Hamming Distanse: Thực hiện đối sánh chuỗi với một thao tác là thay thế
với độ dài chuỗi đối sánh phải bằng nhau.
- Episode Distanse: Thực hiện trên ý tƣởng với một thao tác là thêm một ký
tự vào T để chuyển T thành P.
- Longest Common Subsequence distance: Dựa trên ý tƣởng tìm kiếm chuỗi
con dài nhất của T xuất hiện trong P.
Ngoài ra các thuật toán đối sánh chuỗi xấp xỉ còn đƣợc phân chia thành hai
kỹ thuật khác nhau [4]: Online – search và Offline – search.
- Online – search: Thực hiện tiền xử lý chuỗi T (mẫu đối sánh) để đối sánh
mà không xử lý chuỗi P (văn bản đối sánh). Các thuật toán đƣợc trình bày trong
luận văn này đƣợc phân loại vào nhóm on-line. Các thuật toán đƣợc trình bày trong
luận văn đều tiến hành xử lý chuỗi T trƣớc khi tiến hành thực hiện đối sánh. Trong
thuật toán của Galil-park thực hiện đƣa các chuỗi tiền tố của T. Trong thuật toán của
Ukkonen- Wood thực hiện tiến hành chuyển T thành cây hậu tố sau đó thực hiện tìm
kiếm. Trong thuật toán của Boyer-Moore thực hiện xử lý T bằng cách tìm ra BadCharacter và Good- Suffix.
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

10

- Offline – search: Nhóm các giải thuật này sẽ không thực hiện tiền xử lý
chuỗi T hoặc chuỗi P trƣớc khi thực hiện đối sánh chuỗi.
1.2 Nội dung và ý nghĩa ứng dụng
1.2.1 Nội dung

Trong luận văn này sẽ thực hiện nhiệm vụ nghiên cứu một số thuật toán về
đối sánh chuỗi xấp xỉ áp dụng cho bài toán sửa lỗi chính tả trong văn bản bằng cách
sử dụng chƣơng trình ứng dụng asmf-master có sẵn.
Luận văn chủ yếu đi sâu vào các thuật toán về đối sánh chuỗi xấp xỉ sau:
- Thuật toán của Galil Park: Đƣợc tác giả công bố năm 1989 với ý nghĩa
chính xây dựng các tiền tố cho T để tìm kiếm trong chuỗi văn bản. Kỹ thuật này cho
phép cung phƣơng pháp tìm kiếm chủ đạo cho đối sánh với k ký tự khác biệt (thể
hiện tƣơng tự) [4], [7], [9].
- Thuật toán của Ukkonen Wood: Thuật toán đƣợc Ukkonen Wood công bố
năm 1995. Thuật toán dựa trên việc xây dựng tree suffix (các ký tự cây hậu tố) cho
phép chứa các ký tự đầu tiên trong chuỗi dƣới cấu trúc tree. Việc xây dựng cây bằng
cách đƣa các ký tự cuối cùng của chuỗi P vào trong cây, xây dựng kết thúc khi
không còn ký tự. Việc tìm kiếm là chỉ ra các chuỗi hậu tố của T từ ngắn nhất đến
dài nhất có trong cây. Kỹ thuật xây dựng cây hậu tố sẽ đƣợc trình bày chi tiết ở
chƣơng 2 của luận văn này. Thuật toán đối sánh thực hiện việc đối sánh chính xác
hậu tố của T với để đƣa ra kết luận [8], [10].

Hình 1.1: Cây hậu tố cho S= "xabxac"

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

11

- Thuật toán của Boyer-Moore: Được Robert S. Boyer và J Strother Moore
công bố năm 1977. Thuật toán cho phép tìm chuỗi T trong chuỗi P với khoảng cách
xấp xỉ k. Thuật toán cho phép so sánh theo khoảng từng chuỗi. Khi tính toán đến
khoảng cách xấp xỉ k+1, thuật toán sẽ tìm kiếm tới kết quả tiếp theo [1], [11], [13].
(k+1)-suffix


T
P
k-prefix

Hình 1.2: Hoạt động cơ bản của thuật toán Boyer-Moore
Thuật toán thực hiện dựa trên cửa sổ trƣợt theo Bad-Character và Goodsuffix. Mỗi khi gặp một trong 2 trƣờng hợp trên thì thuật toán thực hiện ghi nhận và
dịch chuyển theo cửa sổ (hình 1.2) Mô tả cách hoạt động cơ bản của thuật toán.
- Thuật toán đối sánh mã vòng với độ phức tạp là hàm tuyến tính: Do Carl
Barton, Costas S Iliopoulos và Solon P Pissis công bố năm 2014 trên tạp chí AMB
(Algorithms for Molecular Biology – Thuật toán sinh học phân tử). Tác giả đã trình
bày hai thuật toán đối sánh xâu vòng tròn gần đúng với k không đối xứng qua bộ lọc
(thuật toán ACSMF và thuật toán ACSMF-Đơn giản) trong trƣờng hợp nhanh trung
bình với k khác biệt (không đối sánh), theo mẫu khoảng cách Hamming, cần thời
gian O(n) cho các giá trị trung bình của k, đó là k = O(m/log m) [12].
Các thuật toán này đƣợc trình bày cụ thể và chi tiết trong chƣơng 2 của luận
văn này.
Chƣơng trình ứng dụng asmf-master: Cho phép áp dụng phƣơng pháp đối
sánh chuỗi xấp xỉ. Tác giả sử dụng công cụ này nhằm thực hiện và thực nghiệm về
thuật toán đối sánh xấp xỉ áp dụng cho bài toán kiểm tra và sửa lỗi chính tả.
Đây là chƣơng trình đƣợc cài đặt rất nhiều thuật toán về đối sánh chuỗi xấp
xỉ, cụ thể đƣợc thể hiện bằng thuật toán đối sánh chuỗi xấp xỉ theo mã vòng với kmismatch, trong đó có thể kể tới các thuật toán mà tác giả đang nghiên cứu và áp

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

12

dụng. Chƣơng trình này có thể chạy trên các môi trƣờng Ubuntu, linux, Windows...

Công cụ sẽ đƣợc giới thiệu chi tiết ở chƣơng 3 trong luận văn này.
1.2.2 Ý nghĩa ứng dụng
Các thuật toán đối sánh chuỗi xấp xỉ [4] đƣợc áp dụng trong khá nhiều vấn
đề của tin học nhƣ:
- Tìm và sửa lỗi chính tả trong các phần mềm soạn thảo văn bản. Các văn bản
đƣợc xây dựng có thể tồn tại các từ sai chính tả. Nhiệm vụ lúc này cần phải có công
cụ đủ mạnh và hiệu quả để thực hiện phát hiện ra lỗi chính tả và gợi ý các từ để sửa
lỗi chính tả. Trong luận văn này tác giả sử dụng chƣơng trình chạy asmf để thực
nghiệm các thuật toán đã nêu trong luận văn.
- Trong hệ thống máy tìm kiếm của các website tìm kiếm: Hệ thống hỗ trợ
ngƣời nhập dữ liệu cần tìm (chuỗi từ khóa). Hệ thống dựa trên chuỗi từ khóa này
phát hiện các từ sai, hoặc các từ tƣơng tự để gợi ý ngƣời dùng lựa chọn các từ.
Ngƣời dùng nhập dữ liệu chƣa biết chính xác các từ cần tìm hoặc gõ sai từ. Nhƣ vậy
đây là một ý tƣởng rất tốt cho hệ thống máy tìm kiếm.
- Trong các phần mềm diệt virus: Hệ thống có thể dựa trên mẫu virus có sẵn
và tiến hành tìm kiếm các mẫu virus tƣơng tự với nó. Nhờ vào đó có thể phát hiện
ra một file có bị nhiễn virus hay không.
- Trong y học: Có thể tìm ra các GEN gây bệnh dựa trên mẫu GEN bệnh
phẩm đã có sẵn. Dựa trên ý tƣởng tìm ra cấc GEN tƣơng tự GEN mẫu (cho là GEN
gây bệnh), hệ thống tìm kiếm phát hiện ra các GEN tƣơng tự có nguy cơ gây bệnh
đối với con ngƣời.
1.3 Kết luận chƣơng
Nhƣ chúng ta đã biết, các phƣơng pháp đối sánh chính xác cần thực hiện
sánh đúng về thứ tự từng ký tự trong quá trình thực hiện thao tác sánh đúng. Việc
này thật sự cần thiết với các yêu cầu cần biết chính xác dữ liệu T có tồn tại trong dữ
liệu P hay không. Bài toán này phục vụ các vấn đề đòi hỏi chính xác.
Số hóa bởi Trung tâm Học liệu - ĐHTN

/>


13

Trong một số trƣờng hợp chúng ta cần phải tiếp cận vấn đề theo cách thức
xấp xỉ.
- Chúng ta chấp nhận các kết quả xấp xỉ để có thể cung cấp thêm nhiều hơn
các kết quả liên đới mà ở đó không quan trọng yếu tố chính xác. Nếu chúng ta cung
cấp dữ liệu T và đƣợc trả lời bởi các T’ không giống hoàn toàn T và kết quả này vẫn
có thể chấp nhận đƣợc. Chúng ta không biết đích xác T mà chỉ cung cấp các T’ gần
đúng T sử dụng T’ thay T và đƣợc kết quả mong đợi nhƣ cung cấp T.
- Chƣơng trình ứng dụng asmf-master đƣợc sử dụng cho phép đối sánh chuỗi
bằng phƣơng pháp xấp xỉ. Đây là một công cụ rất hiệu quả và đƣợc cài đặt nhiều
thuật toán về đối sánh chuỗi.
Phƣơng pháp đối sánh chuỗi xấp xỉ đƣợc ứng dụng trong nhiều bài toán cụ
thể nhƣ: Kiểm tra lỗi chính tả trong văn bản, máy tìm kiếm, trình diệt virus, trong y
học...
Tiếp theo trong chƣơng 2 tác giả đi sâu vào tìm hiểu các thuật toán về đối
sánh chuỗi xấp xỉ. Tác giả trọng tâm vào thuật toán đối sánh chuỗi vòng với kmismath, đây là thuật toán với độ phức tạp trung bình là hàm tuyến tính.

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

14

CHƢƠNG 2: TÌM HIỂU MỘT SỐ THUẬT TOÁN
Nhƣ đã trình bày ở chƣơng trƣớc, các thuật toán sánh xấp xỉ thực hiện tìm
kiếm các chuỗi P gần giống với chuỗi P’ nằm trong văn bản T. Việc thực hiện tìm
kiếm nhằm mục đích trả về kết quả vị trí của P’ nằm trong T. Ngày nay có nhiều
thuật toán đối sánh xấp xỉ đƣợc thiết kế nhằm tăng tính hiệu quả và giảm thời gian
đƣợc áp dụng một cách đáng kể. Trong chƣơng này tác giả thực hiện giới thiệu và

nghiên cứu một số thuật toán cơ bản phục vụ cho luận văn. Các thuật toán đƣợc
trình bày cụ thể nhƣ Galil Park, thuật toán Ukkonen Wood, thuật toán BoyerMoore. Thuật toán mới đƣợc công bố gần đây nhất là thuật toán đối sánh mã vòng
với độ phức tạp là hàm tuyến tính.
2.1 Thuật toán của Galil Park
Galil và Park [5], [7] đƣa ra giải thuật thực hiện tìm toàn bộ xuất hiện của
mẫu P trong chuỗi T, dựa trên ma trận D. Ma trận D đƣợc khởi tạo với kích thƣớc
D[m,n], n là chiều dài của T và m là chiều dài của P. Các giá trị đƣợc xét theo hình
2.1 dựa trên kỹ thuật bộ ba quy chiếu (Reference trips) để thực hiện tìm kiếm chuỗi
P trong chuỗi T.
D(|0,j) = 0,

0 ≤ j ≤ n;

D(| i  1, j )  1


D(k,j) = min D(| i  1, j  1)  ifp i  t j then 0 else 1

D(| i, j  1)  1


Bƣớc đầu khởi tạo D(0,j) =0; và thực hiện tiến hành đối sánh lần lƣợt ký tự
P[i] với ký tự T[j] và D[i,j] sẽ đƣợc định kết quả dựa trên các xác định nhƣ sau:
- Nếu P[i]=T[j] thì D[i,j] = min(D[i-1,j]+1, D[i-1,j-1], D[i,j-1]+1)
- Ngƣợc lại P[i]!= T[j] thì D[i,j]= min(D[i-1,j], D[i-1,j-1], D[i,j-1]) +1

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>


15

Giải thuật dựa trên việc tính toán theo đƣờng chéo ma trận D, và sử dụng
phƣơng pháp đối sánh mẫu xấp xỉ. Giải thuật đƣợc thể hiện theo hai kỹ thuật
"Preprocessing patten P" và kỹ thuật bộ ba tham chiếu "Reference triple" [7].
- Kỹ thuật: Tiền xử lý mẫu đối sánh P "Preprocessing P". Đƣợc xử lý theo
tiền tố Preffix xử dụng bảng tam giác trên của ma trận D priffix(|i,j).1đó priffix(|i,j) là độ dài nhất của các chuỗi tiền tố chung của p[i..m] và p[j..m]. Thủ
tục tiền xử lý P nhƣ sau:
Algorithm MN2
// initialization //
for d  0 to n - m + k + 1 do C(-1, d)  d - 1;
for d  - (k+1) to - 1 do
C(|d| -1, d)  -1;
C(|d| -2, d)  - ;
end for
for c  0 to n - m + k do
for e  0 to k do
d  c - e;
col  max(C(e - 1, d - 1) + 1, C(e - 1, d) + 1, C(e - 1, d + 1));
while col < n and col - d < m and ycol + 1 - d = xcol + 1 do
col  col + 1
end while
C(e,d)  min (col, m + d)
end for
end for
- Kỹ thuật bộ ba tham chiếu Referencetrips(u,v,w). Trong đó u thể hiện vị trí
bắt đầu, v thể hiện vị trí kết thúc, w thể hiện vị trí xuất hiện của chuỗi con sub=p[v-

Số hóa bởi Trung tâm Học liệu - ĐHTN


/>

16

w... u-w] nằm trong T nhƣng T[v+1]!= P[v+1-w+v]. Giải thuật dùng biến rth làm đối
cho các hàm U(r), V(r), W(r). Thực hiện đối sánh lại.
Ví dụ: Chuỗi x="abbdadcbc" và chuỗi y="adbbc" với k=2. Với vị trái bắt đầu
c và ký hiệu * thể hiện tìm thấy nhiều bộ (Bảng bộ quy chiếu Referencetrips(u,v,w):
c

Reference triples
0

1

2

1

(1,1,0)

(2,3,-1)

(4,3,-2)*

2

(2,1,0)*


(2,3,-1)

(5,4,-1)*

3

(3,2,2)*

(3,3,-1)

(5,4,-1)*

4

(4,3,3)*

(4,4,2)

(5,4,-1)*

5

(5,6,4)

(7,6,3)*

(7,7,2)

6


(6,6,4)

(8,9,4)

(10,8,3)*

- Thủ tục xử lý within(t,k,r). Thực hiện trả về giá trị tham chiếu của kỹ thuật
bộ ba Referencetrips(u,v,w). Cụ thể nhƣ sau:
procedure within (t,k,r)
while r  k and t > vr do  r + 1;
if r > k then return(false);
else
if t  ur then return(true);
else return(false);
end if
end

Giải thuật thực hiện của Galil-Park [9] đƣợc thể hiện nhƣ sau:
Algorithm Galil-park
beign
Prewfixes(P);
for i in -1 ... k loop

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

17

c(i,1):= - infinity; c(i,2): = -1;

end loop;
b1:= 0; b2:=1; b3:=2;
for j in 0 … n-m+k loop
C(-1,b1):= j; r:=0;
for e in 0 … k loop
h= j-e;
Col = max ((c(e-1, b2)+1, c(e-1, b3)+1, c(e-1, B1)+1));
se= Col+1; found:= flase;
while not found loop
If within(Col +1) then
F:=v(r)-col; g:=prefix(col+1–h, col+1-w(r));
if f=g then Col:= Col+f;
else Col:= Col + Min (f,g); found:= true;
else
if Col –h Col:= Col + 1;
else found:= true; end if;
end if;
end loop;
c[e,b1]:= min (Col,m+h);
If(c[e,b1]= h+m and c[e-1,b2] Report_Match((h+m));
end if;
if v[e]>= C[e,b1] then
if e=0 then u(e):= j+1;
Else u(e)= max(u(e), v(e-1)+1); end if;
else
v(e)=c(e,b1); w(e):= h;
if e=0 then u(e):= j+1;
Else u(e):= max(se, v(e-1)+1); end if

end if;
end loop;
b:=b1; b1:=b3; b3:=b2; b2:=b;
end loop;
end;

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

18

2.2 Thuật toán của Ukkonen Wood và một số cải tiến
Thuật toán xây dựng cây hậu tố đƣợc Ukkonen và Wood công bố năm 1995
[5], [6], [7], [8]. Thuật toán cho phép tiền xử lý chuỗi mẫu dựa trên việc chuyển mẫu
P với các hậu tố đƣợc tổ chức trong cấu trúc cây (tree), suffix tree (ST). Xây dựng
Suffix Tree (ST) T cho chuỗi S có độ dài m. Nút gốc có m lá đƣợc đánh số 1 tới m.
Mỗi một nút trong không bao gồm gốc của T có 2 nút con. Mỗi một cung của T đánh
nhãn với chuỗi con không rỗng của S. Không có một cung nào đƣợc gán nhãn bởi bắt
đầu cùng một ký tự. Với nhánh i, xuất phát từ gốc và đến cuối nhánh đƣợc đánh nhãn
khi tổng hợp lại sẽ đƣợc một hậu tố của S, đặt chuỗi con S[i,m] bắt đầu từ vị trí i.
Ví dụ: xây dựng cây hậu tố cho chuỗi S="xabxac"

Hình 2.1: cây hậu tố cho S= "xabxac"
- Tồn tại cây hậu tố S: Nếu mỗi hậu tố Sj của S đƣợc sánh đúng với một tiền
tố của hậu tố Si trong S, thì đƣờng dẫn sau đó của Sj sẽ không dừng tại nút lá.
Ví dụ: S = "xabxa" và có S1 = "xabxa" và S4 = "xa" nhƣ vậy để tránh trƣờng
hợp này bởi việc thêm ký tự "$" vào cuối S.
Ví dụ: Cây hậu tố cho S="xabxac$"


Hình 2.2: Cây hậu tố cho chuỗi "xabxac$"

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>

19

- Cây hậu tố bao hàm: Giải thuật của Ukkonen thực hiện thiết lập cây hậu tố
bao hàm. Để lấy về cây hậu tố cần phải thực hiện thao tác:
+ Loại bỏ hoàn toàn các cung có nhãn $.
+ Loại bỏ một số cung không đƣợc gắn nhãn.
+ Loại bỏ một số nút khi nó không chứa ít nhất là 2 nút con.
Cây hậu tố bao hàm cho tiền tố S[i,i] của S hoàn toàn giống cây hậu tố cho
chuỗi tiền tố S[1,i]$.
Ii Đại diện cho cây bao hàm hậu tố cho chuỗi S[1.i]
Mỗi hậu tố trong cây có thể không kết thúc tại một nút lá
Ví dụ: Cây bao hàm ST cho chuỗi xabxa bởi cây cho chuỗi xabxa$
{xabxa$, abxa$, bxa$, xa$, a$, $}

Hình 2.3: Cây bao hàm cho chuỗi "xabxa$"
* Giải thuật của Ukkonen's:
Ii is the implicit suffix tree of the string S[1, i]
Construct I1
/* Construct Ii+1 from Ii */
for i = 1 to m-1 do /* phase i+1 */
for j = 1 to i+1 do /* extension j */

Số hóa bởi Trung tâm Học liệu - ĐHTN


/>

20

Find the end of the path P from the root whose label is S[j, i] in Ii and
extend P with S[i+1] by suffix extension rules;
Convert Im into a suffix tree S
* Các luật mở rộng: Mở rộng S[j,i] đến S[j,i+1]
- Nguyên tắc 1: S[j,i] là nút lá. Thêm ký tự S(i+1) vào phần cuối của nhãn
trên cung chứa nút lá.
- Nguyên tắc 2: S[j,i] không phải là nút lá, các ký tự sau đây không kèm theo
S(i+1). Tạo một cung lá mới cho S(i+1). Có thể tạo thêm một nút nằm bên trong
nếu S[j,i] là kết thúc phần giữa của một cung.
- Nguyên tắc 3: S[j,i+1] đã nằm trong cây. Không thực hiện cập nhật lại cây.
Ví dụ: Cây bao chùm cho "axabxb" từ cây của chuỗi "axabx"

Hình 2.4: Cây bao chùm cho chuỗi axabxb
Giải thuật Ukkonen’s với độ phức tạp O(m). Giải thuật thực hiện các kỹ
thuật: Liên kết hậu tố "Suffix links", bỏ qua và đếm giả "Skip and count trick", nén
nhãn và cung nén nhãn cạnh " edge label compression", một nút chai và một nút lá
thì luôn là nút lá.
* Tạo liên kết hậu tố Suffix Links:
Giải thuật thực hiện lựa chọn hai chuỗi a và xa. Giả sử một số nút v nội bộ
của cây đƣợc gắn nhãn với xa và một nút khác s(v) trong cây đƣợc dán nhãn với

Số hóa bởi Trung tâm Học liệu - ĐHTN

/>


×