✨Khoảng cách Levenshtein

Khoảng cách Levenshtein

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 T là số bước ít nhất biến chuỗi S thành chuỗi T thông qua 3 phép biến đổi là

  • xoá 1 ký tự.
  • thêm 1 ký tự.
  • thay ký tự này bằng ký tự khác. Khoảng cách này được đặt theo tên Vladimir Levenshtein, người đã đề ra khái niệm này vào năm 1965. Nó được sử dụng trong việc tính toán sự giống và khác nhau giữa 2 chuỗi, như chương trình kiểm tra lỗi chính tả của winword spellchecker. Ví dụ: Khoảng cách Levenshtein giữa 2 chuỗi "kitten" và "sitting" là 3, vì phải dùng ít nhất 3 lần biến đổi.

    kitten -> sitten (thay "k" bằng "s")

    sitten -> sittin (thay "e" bằng "i")

    sittin -> sitting (thêm ký tự "g")

    Thuật toán

    Để tính toán Khoảng cách Levenshtein, ta sử dụng thuật toán quy hoạch động, tính toán trên mảng 2 chiều (n+1)*(m+1), với n, m là độ dài của chuỗi cần tính. Sau đây là đoạn mã (S, T là chuỗi cần tính khoảng cách, n, m là độ dài của chuỗi S, T): int LevenshteinDistance(char s[1..m], char t[1..n]) // d is a table with m+1 rows and n+1 columns declare int d[0..m, 0..n]

for i from 0 to m d[i, 0]:= i for j from 0 to n d[0, j]:= j

for i from 1 to m for j from 1 to n { if s[i] = t[j] then cost:= 0 else cost:= 1 d[i, j]:= minimum( d[i-1, j] + 1, // trường hợp xoá d[i, j-1] + 1, // trường hợp thêm d[i-1, j-1] + cost // trường hợp thay thế ) }

return d[m, n]

ví dụ, giá trị của bảng d:

|

|}

Như vậy, kết quả cần tính chính là giá trị của d[n, m]. Bài toán này có phần tương tự với bài toán chuỗi con chung dài nhất

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
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
nhỏ|Khoảng cách Hamming Trong lý thuyết thông tin, **Khoảng cách Hamming** (_tiếng Anh: Hamming distance_) giữa hai xâu (_strings_) có chiều dài bằng nhau là số các ký hiệu ở vị trí tương đương có
**Vladimir Iosifovich Levenshtein** (Tiếng Nga: Владимир Иосифович Левенштейн) (20 tháng 3 năm 1935 - 6 tháng 9 năm 2017) là nhà khoa học Nga. Lĩnh vực mà ông quan tâm là Lý Thuyết Thông tin
Trong toán học, **không gian mêtric** là một tập hợp mà một khái niệm của khoảng cách (được gọi là mêtric) giữa các phần tử của tập hợp đã được định nghĩa. Không gian mêtric
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
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 *