DP hai chiều — LCS và Edit Distance: bảng dp[i][j] và truy vết
LCS và Edit Distance dùng bảng 2D dp[i][j], state là hai prefix. Nắm transition, điền bảng, truy vết reconstruct — ứng dụng trong diff tool và spell-checker.
TL;DR: Longest Common Subsequence (LCS) và Edit Distance (Levenshtein) đều dùng bảng DP hai chiều dp[i][j] với state là "đã xử lý i ký tự đầu của chuỗi X và j ký tự đầu của chuỗi Y". LCS lấy dp[i-1][j-1] + 1 khi ký tự khớp, ngược lại max của ô trên và ô trái. Edit Distance lấy dp[i-1][j-1] khi khớp, ngược lại 1 + min của ba ô lân cận (delete/insert/replace). Truy vết ngược từ dp[m][n] về (0,0) để dựng lại chuỗi chung hoặc chuỗi thao tác.
Git hiển thị diff giữa hai file: dòng nào thêm, dòng nào xóa, dòng nào giữ nguyên. Spell-checker gợi ý "python" khi bạn gõ "pyhton". Cả hai bài toán này có chung cấu trúc: so sánh hai chuỗi và đo độ giống nhau. DP 2D giải cả hai trong O(mn), và là nền tảng của diff, git merge và autocorrect trong mọi editor.
Bài này xây trên DP Framework và DP 1D: vẫn quy trình 5 bước, state giờ có hai chiều (i, j).
1. Hình dung: so sánh hai bài văn
Hình dung hai giáo viên cùng chấm bài, ghi vào bảng: "đến câu i của A và câu j của B, hai bài giống nhau được bao nhiêu phần?"
| Chuyện chấm bài | Trong DP |
|---|---|
| Hai bài văn A và B | hai chuỗi X và Y |
| Câu thứ i của A, câu thứ j của B | ký tự X[i], Y[j] |
| Một ô trong bảng chấm | dp[i][j]: kết quả tốt nhất cho i ký tự đầu của X và j ký tự đầu của Y |
| Kết luận cho cả hai bài | ô cuối dp[m][n] |
Mỗi ô dp[i][j] nhìn ba ô: trên (dp[i-1][j], xóa ký tự khỏi X), trái (dp[i][j-1], chèn ký tự vào X) và chéo (dp[i-1][j-1], khớp hoặc thay).
All-Access Pass
Phần còn lại của bài dành cho All-Access Pass
Bạn vừa đọc phần xem trước. Hai bài đầu của mỗi khoá luôn đọc trọn miễn phí.
- Đọc trọn mọi bài trong 6 khoá System Design và dữ liệu phân tán
- AI Mentor trả lời theo toàn bộ nội dung bài
- Trả một lần, không tự gia hạn, không tự trừ tiền
Trọn đời
1.690.000 ₫
Trả một lần, dùng mãi mãi
Gói năm
699.000 ₫
365 ngày · ≈ 58.000 ₫/tháng
Thanh toán bằng thẻ Visa/Master/JCB qua Polar. Xem bảng giá
DP 1D — Climbing Stairs, House Robber, Kadane, Coin Change
Bài tiếpBài toán cái túi — 0/1 Knapsack, Unbounded và nén bộ nhớ
Bài này có giúp bạn hiểu bản chất không?
Bài này đáng gửi cho bạn học cùng?
Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.
Thảo luận & góp ý
Hỏi đáp về bài này