1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ Án cuối kỳ môn phân tích thiết kế giải thuật algorithm design strategies for solving longest common subsequence problem over multiple sequences

17 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Algorithm design strategies for solving Longest Common Subsequence problem over multiple sequences
Tác giả Phạm Thanh Tuần, Nguyễn Gia Bảo
Người hướng dẫn TS Nguyễn Chí Thiện
Trường học Trường Đại học Tôn Đức Thắng
Chuyên ngành Phân Tích Thiết Kế Giải Thuật
Thể loại Đồ Án Cuối Kỳ
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 1,08 MB

Nội dung

Vấn đề LCS có thể được giải quyết bằng cách sử dụng các thuật toán lập trình động... Điều này có thể được thực hiện bằng cách sử dụng công thức đệ quy có tính đến độ dài của chuỗi con hi

Trang 1

TONG LIEN DOAN LAO DONG VIET NAM

TRUONG DAI HQC TON DUC THANG

KHOA CONG NGHE THONG TIN

DO AN CUOI KY MON PHAN TICH THIET KE GIAI THUAT

Algorithm design strategies for solving Longest Common Subsequence problem

over multiple sequences

Người hướng dân: TS NGUYÊN CHÍ THIỆN Người thực hiện: PHẠM THANH TUẦN - 51900460

NGUYEN GIA BAO - 52000631 Lớp : 19050302, 20050281

Khoa : 23,24

THANH PHO HO CHI MINH, NAM 2023

Trang 2

LOI CAM ON

Đầu tiên, chúng em bày tỏ lòng cảm ơn sâu sắc và chân thành nhất đến với giáo viên giảng dạy trực tiếp là thầy Nguyễn Chí Thiện trong Phân tích thiết kế giải thuật Thây là người giảng dạy và hướng dẫn chúng em trong quá trình làm bài thuyết trình, báo cáo hoàn thiện một cách xuất sắc nhất Do đó, nếu không có được những lời dạy bao tận tình đó, chung em e rang việc hoàn thiện bài báo cáo nay sé rất khó để hoàn thiện được một cách nhanh chóng, cũng như là việc hoàn thành một bài báo cáo hoàn chính

Khi bắt đầu học môn học thì đối với chúng em, đây là một môn học hoàn toàn mới, nên kiến thức của chúng em còn rất là hạn chế Bên cạnh đó là sự bỡ ngỡ, có thê còn rất nhiều điểm thiết sót trong quá trình học tập và trong bài báo cáo, điều này chắc chắn là không tránh khỏi Từ sự giúp đỡ từ quý Thầy Cô nói chung và từ thầy Nguyễn Chí Thiện nói riêng, đối với chúng em là một điều quý báu và đáng trân trọng Cuối cùng, chúng em rất mong nhận được nhiều những sự góp ý từ quý Thầy

Cô để chúng em có thê nâng cao, tim hiéu, biết thêm nhiều kiến thức mới và bồ ích hơn nữa trong lĩnh vực môn học này

Một lần nữa, chúng em xin chân thành cảm ơn thầy người đã hỗ trợ trực tiếp, quan tâm, và cũng như là người lái đò hướng dẫn chúng em hoàn thiện bài báo cáo một cách hoàn thiện nhất trong suốt thời gian vừa qua

Lời viết cuối cùng, chúng em xin chân thành kính chúc quý Thầy Cô trong khoa Công Nghệ Thông Tin, cũng như là gửi lời chúc cụ thể đến thầy Nguyễn Chí Thiện thật dồi dào sức khỏe và gặt hái được nhiều thành công trong con đường giảng dạy của minh

Trang 3

il

ĐÔ ÁN ĐƯỢC HOÀN THÀNH “ TAI TRUONG DAI HOC TON BUC THANG

Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi / chúng tôi và được sự hướng dẫn của TS Nguyễn Chí Thiện; Các nội dung nghiên cứu, kết quá trong đề tải nay là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phân tài liệu tham khảo

Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tô chức khác đều có trích dẫn và chú thích nguồn gốc

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm

về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)

TP Hồ Chí Minh ngày tháng năm 2023

Tác giả (ý tên và ghỉ rõ họ tên)

Phạm Thanh Tuần

Nguyễn Gia Bảo

Trang 4

1H

PHẢN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Phần xác nhận của GV hướng dẫn

Tp Hồ Chí Minh ngày tháng năm

(kí và phi họ tên)

Phần đánh giá của GV chấm bài

Tp Hồ Chí Minh ngày tháng năm

(kí và phi họ tên)

Trang 5

TOM TAT Trinh bay tom tat vấn đề nghiên cứu, các hướng tiếp cận, cách giải quyết van dé

và một số kết quả đạt được, những phát hiện cơ bản trong vòng | -2 trang

Trang 6

MUC LUC

PHAN XAC NHAN VA DANH GIA CUA GIANG VIEN u sseecssesssesseceseeeeteeseeeesees iti

¡90v iv )/I09 09 9 1 DANH MUC CAC BANG BIEU, HINH VẼ, ĐÔ THỊ -2:5522ccsvsvvsssrrvee 3 CHƯƠNG I— LONGEST COMMON SUBSEQUENCE 2552 2222 s22 4

li on - 4 1.2 Defne the problem mathematicalÏy - L S0 2212221222111 112 2tr ekey 5 I6 oi na 6 1.3.1 Lập trình động (Dynamie progTam1ng) - -: scs + ccss+scsxss2 6 1.3.2 Phương pháp đệ quy - 2c 122112211122 12 22tr ke 6 1.3.3 Chia dé tri (Divide and conquer) cc.ccccccscscsseseseesseeesesveeseeees 7 1.3.4 Thuật toán tham lam (Greedy algorithm) 0.00.00000 cece 7 1.3.5 Nhánh và giới hạn (branch and bound) 00 0 cece 8

1.3.6 Cay hau t6 (Suffix Tree) c.ccccccccccsccccesessessesessessvssestsseevseseteeevees 9

1.4 Algorithm compÏ€xIfy c2 221112112 1121511155115 18111 ke nay 10 1.4.I Thuật toán lập trình động 0 2222222 He 10

1.4.2 Thuật toán cây hậu tỐ 5.55 S1 TS rờn 10

Trang 7

DANH MUC ki HIEU VA CHU VIET TAT

Trang 8

DANH MUC CAC BANG BIEU, HINH VE, DO THI

Trang 9

CHUONG I- LONGEST COMMON SUBSEQUENCE

1.1 Introduction

Trong Khoa hoc may tinh, the Longest Common Subsequence (LCS) la nhigém

vụ tìm chuỗi con dài nhất phô biến cho hai hoặc nhiều chuỗi (mảng hoặc chuỗi) Bài toán chuỗi con chung dài nhất là một trong những bài toán khoa học máy tính cô điền,

là cơ sở của các chương trỉnh so sánh dữ liệu như dif£ và có các ứng dụng trong ngôn ngữ học tính toán và tin sinh học Nó cũng được sử dụng rộng rãi bởi các hệ thống

quản lý phiên bản như Git đề điều chỉnh nhiều thay đổi được thực hiện cho một bộ sưu

tập tệp được kiểm soát sửa đổi Một dãy con là một chuỗi có thê được suy ra từ một chuỗi khác bằng cách xóa một số hoặc không có phần tử nào mà không thay đối thứ tự các phan tử còn lại

Ví dụ, hãy xem xét hai chuỗi sau:

Chuỗi 1 : ABCBDAB

Chuỗi 2 : BDCABA

Ở đây, một dãy con của dãy I là "ABD" và một dãy con của dãy 2 là "BDCA" Một dãy con phô biến của hai chuỗi nay la "BD", và nó cũng là dãy con dài nhất chung cho cả hai

Về mặt hình thức, bài toán LCS có thể được định nghĩa như sau: Cho hai hoặc

nhiều dãy X = {xI, x2, xm} và Y = ƒyl, y2, ., yn}, tìm dãy con chung dài nhat Z =

{2l, 22, ., zk} sao cho Z là một dãy con của X và Z cũng là một dãy con của Y Vấn

đề LCS có thể được giải quyết bằng cách sử dụng các thuật toán lập trình động

Trang 10

1.2 Define the problem mathematically

Vidu |:

Giả sử chúng ta có hai chuỗi X và Y:

X =[A, B, C, B, D, A, B]

Y =[B, D, C, A, B, A]

LCS cua X va Y là [B, C, A, BỊ, là dãy con của cả X và Y

Ví dụ 2:

Giả sử chúng ta có hai chuỗi X và Y:

X= [l, 2, 3, 4, 5, 6]

Y =[L, 3, 5, 7, 9]

LCS cua X va Y là [1, 3, 5], la day con cua ca X va Y

Ví dụ 3:

Giả sử chúng ta có hai chuỗi X và Y:

X= [a, b, c, d]

Y =[a, e, b, d,c]

LCS của X và Y là [a, b, c, đ], là dãy con của cả X va Y

Để giải quyết vấn đề LCS, chúng ta có thê sử dụng quy hoạch động Phương pháp lập trình động liên quan đến việc xây dựng một bảng trong đó mỗi ô (¡, j) chứa độ dài của LCS của các tiền tổ của X và Y cho đến chỉ số ¡ và j, tương ứng Sau đó, chúng

ta có thê sử dụng bảng này đề tự xây dựng LCS

Độ phức tạp về thời gian của giải pháp quy hoạch động là O(mn), trong đó m và

n lần lượt là độ dài của X và Y Tuy nhiên, có nhiều thuật toán hiệu quả hơn có thê giải bai toan LCS trong thoi gian O(m + n) sử dụng độ phức tạp không gian O(mm(m, n)) Một thuật toán như vậy là thuật toán Hirschberg

Trang 11

1.3 Literature review

Bài toán dãy con chung dài nhất (LCS) trên nhiều dãy là một bài toán cỗ điển

trong khoa học máy tính liên quan đến việc tìm dãy con dài nhất có mặt trong tất cả các

dãy đã cho Dưới đây là một số chiến lược thiết kế thuật toán để giải quyết vẫn đề này: 1.3.1 Lập trình động (Dynamic programing) : Dây là một cách tiếp cận phố biến nhất đề giải quyết vấn đề LCS trên nhiều trình tự Phương pháp lập trình động liên quan đến việc xây dựng một ma trận lưu trữ LCS của tất

cả các tiền tố có thể có của các chuỗi đầu vào Điều này có thể được thực hiện bằng cách sử dụng công thức đệ quy có tính đến độ dài của chuỗi con hiện tại và các ký tự khớp với các chuỗi đầu vào Phương pháp này có mức

độ phức tạp thời gian là O(mn), trong đó có m và n là độ dài của hai chuỗi Thuật toán quy hoạch động cho LCS hoạt động bằng cách xây dựng một

bảng hai chiều có kích thước (m+1) x (n+1), trong đó m và n lần lượt là

độ dài của các chuỗi đầu vào A và B Bảng này lưu trữ độ dài của LCS của tất cả các tiền tố có thể của A và B

Thuật toán quy hoạch động bắt đầu bằng việc khởi tạo hàng đầu tiên và cột đầu tiên của bảng bằng số không, vì LCS của một chuỗi rỗng và bất

kỳ chuỗi khác đều bằng không Sau đó, nó điền vào các mục còn lại của bảng bằng cách sử dụng một quan hệ đệ quy, dựa trên quan sát rằng LCS của A và B có thê được tạo ra bằng cách bao gồm ký tự cuối cùng của A

và không bao gồm ký tự cuối cùng của B, hoặc bao gồm ký tự cuối cùng của B và không bao gồm ký tự cuối cùng của A, hoặc không bao gồm cả hai ký tự cudi cung

1.3.2 Phương pháp đệ quy: Giai bai toan LCS bang phương pháp đệ quy là một trong những cách tiếp cận cô điền nhất để giải quyết bài toán này Phương pháp đệ quy tìm kiếm tất ca các chuỗi con của hai chuỗi đầu vào

và so sánh chúng đề tìm chuỗi con chung dài nhất

Trang 12

1.3.3 Chia dé tri (Divide and conquer): Mot cach tiép can khac là sử dụng thuật toán chia để trị Điều này liên quan đến việc chia nhỏ bài toán thành

các bài toán con nhỏ hơn và giải quyết từng bài toán con một cách độc lập

Chia đề trị có thể được sử dụng để tìm kiếm LCS của hai chuỗi đầu vào

Thuật toán sẽ chia các chuỗi thành các phần nhỏ hơn, đến khi các phần trở nên đơn giản và có thể giải quyết trực tiếp Sau đó, các kết quả con sẽ được kết hợp lại để tạo ra kết quả cho bài toán ban đầu

Cụ thẻ, thuật toán Chia đề trị trong bài toán LCS sẽ thực hiện các bước sau:

1 Chia các chuỗi đầu vào thành hai phần bằng cách chọn một vị trí tùy ý trong chuỗi đầu tiên Việc chọn vị trí nay co thê dựa trên các tiêu chí như

độ dài chuỗi, độ phức tạp của thuật toán, hoặc các tiêu chí khác

2 Tìm LCS của hai phần được chia nhỏ bằng cách sử dụng một thuật toán khác như Chương trình động (Dynamic Programming) hoặc Hirschberg, Sau đó, kết hợp các kết quả con để tạo ra kết quả cho bài toán ban đầu

Giải pháp cho vấn đề ban đầu sau đó có thê thu được bằng cách kết hợp các giải

pháp cho các vẫn đề con

1.3.4 Thuật toún tham lam (Greedy algorithm): Thuat toan tham lam là

một cách tiếp cận khác có thê được sử dụng đề giải quyết vẫn đề LCS trên nhiều chuỗi Thuật toán tham lam hoạt động bằng cách chọn lặp đi lặp lại

ký tự tiếp theo trong LCS dựa trên tần sô của nó trên tất cả các chuỗi đầu vảo

Cụ thẻ, thuật toán Grecdy trong bài toán LCS sẽ thực hiện các bước sau: Khởi tạo chuỗi LCS rỗng

1 Chọn một ký tự từ chuỗi đầu tiên và kiêm tra xem ký tự đó có xuất hiện trong chuỗi thứ hai hay không

Trang 13

2 Néu ký tự được chọn xuất hiện trong chuỗi thứ hai, thêm ký tự đó vào chuỗi LCS và tiếp tục tìm kiếm các ký tự tiếp theo

3 Nếu ký tự không xuất hiện trong chuỗi thứ hai, chọn một ký tự khác từ chuỗi đầu tiên và lặp lại bước 2 và 3

4 Lặp lại quá trình cho đến khi tìm được chuỗi LCS hoàn chỉnh

Cách tiếp cận này có thê hiệu quả đối với các chuỗi đầu vào nhất định, nhưng

không phải lúc nào nó cũng tạo ra một giải pháp tối ưu nên trong thực tế phương pháp này thường sử dụng như phương pháp tiền xử lý trước khi các sử dụng các thuật toán khac nhu Dynamic Programing hay Suffix Tree,

13.5 Nhánh và giới hạn (branch and bound): Dây là thuật toán tim kiém

có thê được sử dụng đề tìm giải pháp tối ưu cho vấn đề LCS trên nhiều chuỗi

Trong bài toán LCS, Nhánh và giới hạn có thê được sử dụng dé tim kiém LCS chính xác của hai chuỗi đầu vào Phương pháp này xây dựng một cây trạng thái, trong

đó mỗi nút đại diện cho một phương án tìm kiếm LCS của hai chuỗi đầu vào Các nút con của một nút được tạo ra bằng cách thêm một cặp ký tự mới vào LCS, hoặc không thêm vào Các nút được đánh giá dựa trên độ dài của LCS đã xác định được, va chỉ các nút tiềm năng có thể tìm kiếm được LCS có độ dài lớn hơn nút hiện tại được tiếp tục

xử ly

Kỹ thuật Nhánh và giới hạn trong bài toán LCS sử dụng một số hàm phụ trợ để giới hạn số lượng nút được xử lý, bao gồm:

Hàm giới hạn dưới (Lower Bound Function): Đây là hàm đánh giá ước tính LCS nhỏ nhất có thể tìm kiếm được từ một nút Hàm nảy giúp xác định các nút không thê tìm kiếm được LCS lớn hơn nút hiện tại, và được

sử dụng đề cắt ngắn các nhánh không tiềm năng

Ham gidi han trén (Upper Bound Function): Day la ham danh gia wéc tính LCS lớn nhất có thể tìm kiếm được từ một nút Hàm này giúp đánh

Trang 14

gia cac nut tiém nang co thé tim kiếm được LCS lớn hơn nút hiện tại, và được sử dụng để ưu tiên xử lý các nhánh tiềm năng Cách tiếp cận này có thê tôn kém về mặt tính toán đổi với các chuỗi đầu vào lớn, nhưng nó được đám bảo để tìm ra giải pháp tôi ưu

13.6 Cây hậu tổ (Suffix Tree): Đây được cho là phương pháp giải quyết bài toán LCS nhanh nhất cho đến hiện tại

Ý tưởng chính của giải thuật suflix tree là xây dựng một cây có gốc, mỗi nút trên cây đại diện cho một chuỗi hậu tố của chuỗi ban đầu

Với mỗi nút, các cạnh đi từ nút đó đến các nút con đại điện cho các chuỗi hậu tố khác Tại mỗi nút lá, có một chỉ số được gắn kèm, chỉ số này là vị tri đầu tiên của chuỗi hậu tố đó trong chuỗi ban dau

Sử dụng cây hậu tô này, ta có thể tìm tất cả các chuỗi con chung của hai chuỗi trong thời gian tuyến tính Đầu tiên, ta sẽ xây dựng cây hậu tố cho chuỗi A và sau đó tìm kiếm tất cả các chuỗi con của chuỗi B trong cây hậu tô đó Trong khi tìm kiếm, ta

sẽ tạo ra một danh sách các chuỗi con chung và xác định chuỗi con chung dài nhất

Tuy nhiên, xây dựng Sufñx Tree là một quá trình đòi hỏi rất nhiều thời gian và không phải là phương pháp tốt nhất để giải quyết bài toán LCS nếu chỉ cần tìm một lần

Nhìn chung, việc lựa chọn chiến lược thiết kế thuật toán sẽ phụ thuộc vào các chuỗi đầu vào cụ thể đang được xem xét và các tài nguyên tính toán sẵn có đề giải quyết vẫn đề

Ngày đăng: 01/10/2024, 20:46