Tỡm độ dài xõu con chung lớn nhất bằng quy hoạch động

Một phần của tài liệu Bài toán tìm kiếm văn bản sử dụng giải thuật di truyền (Trang 48 - 50)

4. PHƯƠNG PHÁP NGHIấN CỨU

3.4. Tỡm độ dài xõu con chung lớn nhất bằng quy hoạch động

- Định nghĩa xõu con: Xõu s1 được gọi là con của xõu s2 nếu mọi s1[i] thuộc s1 đều xuất hiện trong s2 theo thứ tự.

- Bài toỏn tỡm độ dài xõu con chung lớn nhất: Cho 2 xõu X,Y. Hóy tỡm xõu con của X và của Y cú độ dài lớn nhất.

* Cụng thức QHĐ:

Gọi L(i,j) là độ dài xõu con chung dài nhất của xõu X(i) gồm i kớ tự phần đầu của X (X(i) = X[1..i]) và xõu Y(j) gồm j kớ tự phần đầu của Y (Y(j) =Y[1..j]).

Ta cú cụng thức quy hoạch động như sau: L(0,j)=L(i,0)=0.

L(i,j) = L(i - 1,j - 1)+1 nếu X[i] = Y[j].

L(i,j) = max(L(i - 1,j), L(i,j - 1)) nếu X[i] ≠ Y[j].

* Cài đặt:

Bảng phương ỏn là một mảng 2 chiều L[0..m, 0..n] để lưu cỏc giỏ trị của hàm QHĐ L(i,j). Đoạn chương trỡnh cài đặt cụng thức QHĐ trờn như sau: for i:=0 to m do L[i,0]:=0;

for j:=0 to n do L[0,j]:=0; for i:=1 to m do

for j:=1 to n do

if X[i]=Y[j] then L[i,j]:=L[i - 1,j - 1]+1 else L[i,j]:=max(L[i - 1,j],L[i,j - 1]]);

Như vậy chi phớ khụng gian của bài toỏn là O(n2), chi phớ thời gian là O(n2). Cú một phương phỏp cài đặt tốt hơn, chỉ với chi phớ khụng gian O(n) dựa trờn nhận xột sau: để tớnh ụ L[i,j] của bảng phương ỏn, ta chỉ cần 3 ụ L[i - 1,j-1],L[i-1,j] và L[i,j-1]. Tức là để tớnh dũng L[i] thỡ chỉ cần dũng L[i -1]. Do đú ta chỉ cần 2 mảng 1 chiều để lưu dũng vừa tớnh (P) và dũng

đang tớnh (L) mà thụi. Cỏch cài đặt mới như sau: for j:=0 to n do P[j]:=0; for i:=1 to m do begin L[0] := 0; for j:=1 to n do if X[i]=Y[j] then L[j]:=P[j - 1]+1 else L[i,j]:=max(P[j], L[j -1]); P := L; end;

Kết quả trả về độ dài xõu con chung dài nhất là P[n].

Cần lưu ý rằng với bài toỏn tỡm kiếm văn bản là ta đi tỡm xõu con chung dài nhất của hai chuỗi văn bản cú cựng độ dài M (cựng độ dài với chuỗi văn bản mẫu). Khi đú nếu xõu con dài nhất cú độ dài bằng M cú nghĩa là hai xõu giống nhau. Độ dài của xõu con chung càng tịnh tiến đến M cú nghĩa là hai xõu so sỏnh càng giống nhau. Trờn cơ sở đú ta cú thể đưa ra một vị trớ xuất hiện đoạn văn bản gần giống với văn bản mẫu theo yờu cầu đặt ra cho bài toỏn tỡm kiếm văn bản ở trờn.

Một phần của tài liệu Bài toán tìm kiếm văn bản sử dụng giải thuật di truyền (Trang 48 - 50)