nhỏ|So sánh hai bản sửa đổi của một tệp ví dụ, dựa trên dãy con chung dài nhất của chúng (màu đen)
Vấn đề chuỗi con chung dài nhất (tiếng anh: Longest common subsequence - LCS) là vấn đề trong việc tìm kiếm một chuỗi con chung dài nhất cho tất cả các chuỗi trong một bộ chuỗi (thường chỉ hai chuỗi). Nó khác với vấn đề về xâu con chung dài nhất ở chỗ: không giống như các xâu con, các chuỗi con không bắt buộc phải chiếm các vị trí liên tiếp trong các chuỗi ban đầu. 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ư diff, 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.
Ví dụ, hãy xem xét các chuỗi (ABCD) và (ACBAD). Chúng có 5 chuỗi con chung có độ dài bằng 2: (AB), (AC), (AD), (BD) và (CD); 2 chuỗi con chung có độ dài bằng 3: (ABD) và (ACD); và không còn chuỗi con chung nào khác có độ dài lớn hơn nữa. Vì vậy (ABD) và (ACD) là hai dãy con chung dài nhất của hai chuỗi ban đầu.
Độ phức tạp
Đối với trường hợp tổng quát với số lượng chuỗi trình tự đầu vào là tùy ý, vấn đề là NP-khó. Khi số lượng chuỗi trình tự không đổi, bài toán có thể giải được trong thời gian đa thức bằng quy hoạch động.
Thuật toán cho hai chuỗi
Bài toán LCS có một cấu trúc con tối ưu: Có nghĩa là bài toán có thể được chia thành các bài toán con nhỏ hơn và đơn giản hơn, và các chính bài toán con cũng được chia thành các bài toán con đơn giản hơn, và cứ thế, cho đến khi, cuối cùng, nghiệm của bài toán trở nên đơn giản và dễ nhận thấy. LCS nói riêng có các bài toán con chồng chéo: các nghiệm cho các bài toán con cấp cao sẽ sử dụng lại các nghiệm cho các bài toán con cấp thấp hơn. Các vấn đề với hai thuộc tính này có thể giải quyết được bằng quy hoạch động, trong đó các nghiệm của bài toán con sẽ được lưu lại để xử lý lúc sau.
Tiền tố
Ta định nghĩa tiền tố Sn của S là chuỗi chứa n ký tự đầu tiên của S. Ví dụ: các tiền tố của S = (AGCA) là
: S0 = ()
: S1 = (A)
: S2 = (AG)
: S3 = (AGC)
: S4 = (AGCA).
Gọi LCS(X, Y) là một hàm tính toán chuỗi con chung dài nhất cho X và Y. Một hàm như vậy có hai tính chất đặc biệt như sau:
Tính chất đầu tiên
LCS(X^A, Y^A) = LCS (X, Y)^A, cho tất cả các chuỗi X, Y và tất cả các ký hiệu A, trong đó dấu ^ biểu thị phép nối xâu. Điều này cho phép chúng ta đơn giản hóa việc tính toán LCS cho hai chuỗi kết thúc cùng một ký hiệu. Ví dụ: LCS ("BANANA", "ATANA") = LCS ("BANAN", "ATAN") ^ "A", Tiếp tục cho các ký hiệu chung còn lại, LCS ("BANANA", "ATANA") = LCS (" BAN "," AT ") ^" ANA".
Tính chất thứ hai
Nếu A và B là hai ký hiệu riêng biệt (A≠B), thì LCS (X^A, Y^B) là một trong hai xâu có độ dài cực đại trong tập {LCS(X^A, Y), LCS(X, Y^B)}, cho tất cả các xâu X và Y.
Ví dụ: LCS ("ABCDEFG", "BCDGK") là xâu dài hơn của LCS ("ABCDEFG", "BCDG") và LCS ("ABCDEF", "BCDGK"); nếu cả hai có độ dài bằng nhau, ta có thể chọn tùy ý một trong những chuỗi thỏa mãn.
Định nghĩa hàm LCS
Cho hai chuỗi được xác định như sau: và . Các tiền tố của là ; tiền tố của là . Gọi là đại diện cho tập hợp các chuỗi con chung dài nhất cho các tiền tố của và . Tập hợp các chuỗi này được định nghĩa như sau.
:
Làm việc với ví dụ
Để lấy ví dụ, ta sẽ tìm chuỗi con dài nhất chung cho hai xâu R = (GAC) và C = (AGCAT). Vì hàm LCS xét từ vị trí 0, nên để thuận tiện, ta sẽ xác định các tiền tố 0 là trống cho các chuỗi này: R0 = Ø; và C0 = Ø. Tất cả các tiền tố được đặt trong một bảng với C ở hàng đầu tiên và R ở cột đầu tiên:
Bảng này được sử dụng để lưu trữ trình tự tính LCS cho mỗi bước tính toán. Cột thứ hai và hàng thứ hai đã được điền bằng Ø, bởi vì khi một chuỗi trống được so sánh với một chuỗi không trống, chuỗi con chung dài nhất luôn là chuỗi trống.
LCS (R1, C1) được xác định bằng cách so sánh các phần tử đầu tiên trong mỗi chuỗi. G và A không giống nhau, vì vậy LCS này nhận (sử dụng tính chất thứ hai trên) chuỗi dài nhất trong hai chuỗi, LCS(R1, C0) và LCS (R0, C1). Theo bảng, cả hai đều trống, vì vậy LCS (R1, C1) cũng trống. Các mũi tên biểu thị chuỗi nhập vào: chuỗi đến từ ô ở trên, LCS (R0, C1) và chuỗi đến từ ô ở bên trái, LCS(R1, C0).
LCS (R1, C2) được xác định bằng cách so sánh G và G. Chúng khớp với nhau, nên G được nối vào chuỗi phía trên bên trái, LCS(R0, C1), là (Ø), cho (ØG), ta được (G).
Đối với LCS (R1, C3), G và C không khớp. Chuỗi trên trống; Chuỗi bên trái chứa một phần tử, (G). Chọn phần tử có độ dài dài nhất trong hai chuỗi này, ta được LCS (R1, C3) là (G). Mũi tên chỉ sang trái, vì đó là chuỗi dài nhất trong hai chuỗi.
Tương tự như vậy, LCS(R1, C4) và LCS(R1, C5) là (G).
Tương tự như vậy, ta hoàn thành hàng R2
Bảng hoàn thiện cuối cùng là
Mã cho giải pháp quy hoạch động
Tính độ dài của LCS
Hàm bên dưới nhận như chuỗi đầu vào X[1..m]
và Y[1..n]
, tính LCS giữa X[1..i]
và Y[1..j]
cho tất cả 1 ≤ i ≤ m
và 1 ≤ j ≤ n
, và lưu trữ nó trong C[i,j]
. C[m,n]
sẽ chứa độ dài LCS của X
và Y
function LCSLength(X[1..m], Y[1..n])
C = array(0..m, 0..n)
for i:= 0..m
C[i, 0] = 0
for j:= 0..n
C[0, j] = 0
for i:= 1..m
for j:= 1..n
if X[i] = Y[j]
C[i, j]:= C[i-1, j-1] + 1
else
C[i, j]:= max(C[i, j-1], C[i-1, j])
return C[m, n]
👁️
1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|So sánh hai bản sửa đổi của một tệp ví dụ, dựa trên dãy con chung dài nhất của chúng (màu đen) **Vấn đề chuỗi con chung dài nhất** **(tiếng anh:** **Longest common subsequence -
Đây là bài toán tìm một xâu (string) hoặc nhiều xâu là xâu con của hai hoặc nhiều xâu. Không nên nhầm lẫn giữa bài toán này với Bài toán chuỗi con chung dài nhất.
Bài viết này là **danh sách các thuật toán** cùng một mô tả ngắn cho mỗi thuật toán. ## Thuật toán tổ hợp ### Thuật toán tổ hợp tổng quát * Thuật toán Brent: tìm
nhỏ|Nếu người bán hàng xuất phát từ điểm A, và nếu khoảng cách giữa hai điểm bất kì được biết thì đâu là đường đi ngắn nhất mà người bán hàng có thể thực hiện
**Cấu trúc con tối ưu** (tiếng Anh: _Optimal substructure_) là một khái niệm quan trọng trong quy hoạch động. Nó đề cập đến tính chất của một bài toán trong đó một giải pháp tối
Trong các thuật toán của bộ môn khoa học máy tính, khái niệm **Khoảng cách Levenshtein** thể hiện khoảng cách khác biệt giữa 2 chuỗi ký tự. Khoảng cách Levenshtein giữa chuỗi S và chuỗi
**Bài toán ngược** hay **bài toán nghịch đảo** (Inverse problem) trong khoa học là quá trình tính toán ra các nhân tố nhân quả (causal factors) dựa theo tập hợp các quan sát những đại
_Cuốn [[The Compendious Book on Calculation by Completion and Balancing_]] Từ _toán học_ có nghĩa là "khoa học, tri thức hoặc học tập". Ngày nay, thuật ngữ "toán học" chỉ một bộ phận cụ thể
Bài này nói về từ điển các chủ đề trong toán học. ## 0-9 * -0 * 0 * 6174 ## A * AES * ARCH * ARMA * Ada Lovelace * Adrien-Marie Legendre *
**Làn sóng Đài Loan** hay **Đài lưu** (tiếng Nhật: 台流), hay còn gọi đầy đủ là **làn sóng văn hóa Đài Loan**, là tên gọi bắt nguồn từ Nhật Bản để chỉ sự lan toả
Trong khoa học máy tính, **thuật toán dòng dữ liệu** là thuật toán để xử lý các dòng dữ liệu trong đó dữ liệu vào được cung cấp dưới dạng một dãy các phần tử,
**Biểu tình bài Nhật tại Trung Quốc năm 2012** là một loạt các cuộc biểu tình bài Nhật Bản được tổ chức ở các thành phố lớn tại Trung Quốc và Đài Loan trong khoảng
phải|nhỏ|[[Lưu đồ thuật toán (thuật toán Euclid) để tính ước số chung lớn nhất (ưcln) của hai số _a_ và _b_ ở các vị trí có tên A và B. Thuật toán tiến hành bằng
Một cặp bánh chưng vuông chưa luộc được gói bằng khuôn với 4 lá, trong đó có 2 lá bên trong với mặt lá màu xanh thẫm quay vào áp với bề mặt gạo để
**Nhật thực** () xảy ra khi Mặt Trăng đi qua giữa Trái Đất và Mặt Trời trên cùng một đường thẳng và quan sát từ Trái Đất, lúc đó Mặt Trăng che khuất hoàn toàn
Danh sách các vấn đề mở trong toán học ## Danh sách các bài toán mở trong toán học nói chung Nhiều nha toán học và tổ chức đã xuất bản danh sách cái bài
**Côn trùng** hay còn gọi là **sâu bọ**, là một lớp sinh vật thuộc về ngành động vật không xương sống, chúng có bộ xương ngoài làm bằng kitin. Cơ thể chúng có ba phần
"**Poker Face**" là một ca khúc nhạc pop-điện tử của nữ ca sĩ-nhạc sĩ người Mỹ Lady Gaga trích từ album đầu tay của cô mang tên _The Fame_ (2008). Bài hát do RedOne sản
thumb|Bản vẽ của một nghệ sĩ về một [[tiểu hành tinh cách nhau vài km va chạm vào Trái Đất. Một tác động như vậy có thể giải phóng năng lượng tương đương với vài
**Chiến tranh Nhật Bản – Triều Tiên**, còn gọi là **Chiến tranh Triều - Nhật** (hangul: 조일전쟁, hanja: 朝日戰爭, _Joil jeonjaeng_) hay **Chiến dịch Văn Lộc - Khánh Trường** (kanji: 文禄・慶長の役, hiragana: ぶんろく・けいちょうのえき, _Bunroku・Keichō no
**"Cái đuôi dài"** là một thuyết kinh tế học về hiện tượng trỗi dậy của các thị trường sản phẩm ngách sau thời kì bong bóng dot-com vỡ. Thuật ngữ được Chris Anderson, tổng biên
**Logic toán** là một ngành con của toán học có liên hệ gần gũi với cơ sở toán học, khoa học máy tính lý thuyết, logic triết học. Ngành này bao gồm hai phần: nghiên
[[Siêu máy tính song song hàng loạt Blue Gene/P của IBM]] **Tính toán song song** (tiếng Anh: _Parallel computing_), là một hình thức tính toán trong đó nhiều phép tính và tiến trình được thực
"**Butter**" là một bài hát của nhóm nhạc nam Hàn Quốc BTS. Bài hát được phát hành dưới dạng đĩa đơn kỹ thuật số vào ngày 21 tháng 5 năm 2021 thông qua Big Hit
Trong toán học, **dãy** là một họ có thứ tự các đối tượng toán học và cho phép lặp lại các phần tử trong đó. Giống như tập hợp, nó chứa các phần tử (hay
**Thuật ngữ văn học Nhật Bản** được trình bày theo thứ tự abc dưới đây là một số thuật ngữ, khái niệm, danh từ riêng thường gặp trong văn học Nhật Bản, bao gồm trong
thế=Picture of schoolchildren doing sit-ups|nhỏ|Học sinh đang thực hiện tư thế _Sit-up_ (gập bụng), một bài tập Calisthenics, trong một ngày hội [[Khỏe mạnh thể chất|thể thao tại trường.]] Human flag, một kĩ thuật nâng
**Đảo Đài Loan** (Chữ Hán chính thể: 臺灣 hoặc 台灣; Chữ Hán giản thể: 台湾; Bính âm: _Táiwān_; Wade-Giles: _T'ai-wan_; tiếng Đài Loan: _Tâi-oân_) là một hòn đảo ở khu vực Đông Á, ngoài khơi
**Đặng Nhật Minh** (sinh ngày 11 tháng 5 năm 1938) là một nhà làm phim kiêm chính trị gia, người Việt Nam đầu tiên nhận giải thưởng Thành tựu trọn đời tại một liên hoan
nhỏ|Một ván chơi FreeCell trên phần mềm KDE **FreeCell** là một trò chơi bài solitaire được chơi trên bộ bài tiêu chuẩn 52 lá. Điểm khác nhau cơ bản của trò này so với hầu
thumb|Một ổ bánh mì thịt **Bánh mì** là một loại bánh mì kẹp của Việt Nam được cải biên từ món baguette của Pháp, với lớp vỏ ngoài giòn tan, ruột mềm, còn bên trong
**Trận chung kết Giải vô địch bóng đá thế giới 2022** là trận đấu cuối cùng của Giải vô địch bóng đá thế giới 2022, lần thứ 22 của giải đấu do FIFA tổ chức
**Toán học của thuyết tương đối rộng** là mô hình chứa đựng cấu trúc và kỹ thuật toán học được sử dụng để nghiên cứu và thiết lập lên thuyết tương đối rộng của Einstein.
"**You & Me**" là một bài hát của nữ ca sĩ kiêm rapper người Hàn Quốc và là thành viên của nhóm nhạc Blackpink Jennie. Ca khúc do YG Entertainment và Interscope Records phát hành
thumb|Một cô gái ở [[thành phố Hồ Chí Minh mặc áo dài trắng và cầm hoa phượng đỏ. Ảnh chụp vào tháng 5 năm 2021.]] **Áo dài** là trang phục truyền thống của Việt Nam
phải|Phù hiệu phái võ Nhất Nam **Võ Nhất Nam** là một phái võ ở Việt Nam. Võ Nhất Nam mới chính thức ra mắt tại Hà Nội vào ngày 23 tháng 10 năm 1983 do
Trong toán học, một **chứng minh** là một cách trình bày thuyết phục (sử dụng những chuẩn mực đã được chấp nhận trong lĩnh vực đó) rằng một phát biểu toán học là đúng đắn.
**Rái cá Nhật Bản** (tiếng Nhật: ニ ホ ン カ ワ ウ ソ (日本 川 獺 ー, Hệ phiên âm La-tinh Hepburn: _Nihon-kawauso_) (_Lutra nippon_) là một loại rái cá đã tuyệt chủng trước đây
**Trận Ardennes**, còn gọi là **các trận Longwy và Neufchateau**, diễn ra từ ngày 21 cho đến ngày 23 tháng 8 năm 1914, trong chuỗi trận Biên giới Bắc Pháp giữa quân đội Đức với
**Sự kiện tuyệt chủng Permi – Tam Điệp** hay **Permi – Trias** là một sự kiện tuyệt chủng xảy ra cách đây 251,4 Ma (_Mega annum, triệu năm_), và 70% các loài động vật có
Trong bối cảnh kinh tế toàn cầu liên tục thay đổi, việc quản trị tài chính hiệu quả và kiểm soát dòng tiền chặt chẽ đã trở thành yếu tố sống còn đối với mọi
_Kẻ bạc gian_ (Le Tricheur), họa phẩm của [[Georges de La Tour, trưng bày tại bảo tàng Louvre, Paris]] **Ngụy biện con bạc**, hay **ngụy biện của tay cá cược**, **ngụy biện Monte Carlo** hoặc
**Câu lạc bộ bóng đá Arsenal** (tiếng Anh: _Arsenal Football Club_, viết tắt: _Arsenal F.C._) là một câu lạc bộ bóng đá chuyên nghiệp có trụ sở tại Holloway, Luân Đôn, Anh, hiện đang thi
**Bằng chứng về tổ tiên chung** đã được phát hiện bởi các nhà khoa học nghiên cứu trong nhiều ngành khoa học trong nhiều thế kỷ, đã chứng minh rằng tất cả các sinh vật
"**S&M**" là một bài hát của nữ ca sĩ người Barbados Rihanna nằm trong album phòng thu thứ năm _Loud_ (2010) của cô, được phát hành làm đĩa đơn thứ tư của album vào ngày
phải|Mỗi phần tử của một ma trận thường được ký hiệu bằng một biến với hai chỉ số ở dưới. Ví dụ, a2,1 biểu diễn phần tử ở hàng thứ hai và cột thứ nhất
Một cung gồm bốn đoạn thẳng với hệ số góc dương trong một tập hợp 17 điểm. Nếu ta xét dãy các tọa độ _y_ của các điểm theo thứ tự tọa độ _x_ tăng
**Tài chính chuỗi cung ứng toàn cầu** đề cập đến tập hợp các giải pháp có sẵn để tài trợ cho hàng hóa và/hoặc sản phẩm cụ thể khi chúng di chuyển từ điểm xuất
Trong ngôn ngữ máy tính, các **phép toán trên thao tác bit** (tiếng Anh: _bitwise operation_) là các phép toán được thực hiện trên một hoặc nhiều chuỗi bit hoặc số nhị phân tại cấp
**Josep** **Guardiola Sala** (sinh ngày 18 tháng 1 năm 1971), hay thường gọi là **Pep Guardiola** (), là một huấn luyện viên và cựu cầu thủ bóng đá chuyên nghiệp người Tây Ban Nha hiện