Phát biểu bài toán Giới thiệu phương pháp thực hiện Phân tích bài toán Giải pháp đệ quy Áp dụng vào bước tạo bảng Tạo bảng Tổng hợp kết quả Minh họa bằng ví dụ Phân tích độ phức tạp thời gian, không gian
Trang 2NỘI DUNG TRÌNH BÀY
Phát biểu bài toán
Giới thiệu phương pháp thực hiện
Phân tích bài toán
Trang 3PHÁT BIỂU BÀI TOÁN
Xâu con cực đại :
S là xâu con của T nếu S nhận được bằng cách xoá đi một số ký tự nào đó trong T
Ví dụ: ‘EAC’ là xâu con của ‘C EA EE C ’
Xâu con chung:
Nếu xóa một số ký tự của hai xâu thì hai xâu con
còn lại của chúng bằng nhau
Ví dụ: S1=‘ A B CD AE’ và S2=‘XY AC A D K’ có xâu
‘ACD’ là xâu con chung có độ dài cực đại.
Bài toán đặt ra :
Cho 2 xâu S1, S2 Tìm một xâu S là xâu con chung của S1 và S2 có độ dài cực đại.
Trang 4PHƯƠNG PHÁP THỰC HIỆN
Phân tích bài toán (biểu diễn bài toán dưới dạng một bài toán nhiều mức)
Xây dựng giải pháp đệ quy (lập công thức truy hồi)
Lập bảng (sử dụng các mảng để tính toán các giá trị theo kiểu lên)
dưới- Tổng hợp kết quả (kiến tạo một lời giải cho bài toán từ các thông tin
đã tính toán)
Trang 5PHÂN TÍCH BÀI TOÁN
Giả sử ta có:
Xâu A có độ dài xâu là m
Xâu B có độ dài xâu là n,
L(k, h) là bài toán xâu con chung cực đại, với
k ∈ N*: Độ dài dãy a1a2…ak ( k ≤ m )
Trang 6GIẢI PHÁP ĐỆ QUY
Trường hợp đơn giản nhất
Nếu (i=0) hoặc (j=0) thì L(i,j)=0
Nếu ( i>0 ) and ( j>0 ) and ( a i <> b j )
LCS(i,j) = Max(LCS(i-1,j), LCS(i,j-1))
Nếu (i>0) and (j>0) and (a i =b j )
LCS(i,j)= 1 + LCS(i-1,j-1)
Độ phức tạp cao và dễ tràn stack do phải tính lại nhiều lần kết quả các bài toán con
Trang 7 Nếu ai<>bj , lúc này cho S 1 là LCS của Ai-1 và Bj, và S2
là LCS của Ai và Bj-1 S sẽ là giá trị lớn hơn trong 2 giá trị S1 và S2.
Trang 8TẠO BẢNG
Cho L[i, j] = LCS[i, j], lúc này
L[i, j] sẽ phụ thuộc vào 3 giá trị sau
Phần tử L[i-1, j]
Phần tử L[i, j-1]
Phần tử L[i-1, j-1]
Trang 10TỔNG HỢP KẾT QUẢ
Để tìm xâu kết quả S
Đi ngược từ ô l[m n] hướng về l0, 0]
Nếu ai = bj thì đặt ai hoặc bj vào bên trái dãy
S (ở đầu xâu)
Nếu ai <> bj thì
lùi về L[i - 1, j] trong trường hợp L[i - 1, j] > L[i, j – 1]
ngược lại, lùi về L[i, j – 1] trong trường hợp L[i - 1, j]
≤ L[i, j – 1]
Trang 11 Xâu con chung lớn nhất
Bảng p (được tạo ra từ bước lập bảng)
Trang 16If L[i, j] <> L[i-1, j] then dec(j)
Trang 22XIN CẢM ƠN !!!