Khoảng Cách Levenshtein – Wikipedia Tiếng Việt
Có thể bạn quan tâm
Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. Mời bạn giúp hoàn thiện bài viết này bằng cách bổ sung chú thích tới các nguồn đáng tin cậy. Các nội dung không có nguồn có thể bị nghi ngờ và xóa bỏ. (Tìm hiểu cách thức và thời điểm xóa thông báo này) |
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
[sửa | sửa mã nguồ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
Tham khảo
[sửa | sửa mã nguồn]Hjelmqvist, Sten (26 Mar 2012), Fast, memory efficient Levenshtein algorithm
Từ khóa » Khoảng Cách Levenshtein
-
Khoảng Cách Levenshtein Và Fuzzy Query Trong Elasticsearch - Viblo
-
Thuật Toán Levenshtein - HelpEx
-
Khoảng Cách Levenshtein – Du Học Trung Quốc 2022 - Wiki Tiếng ...
-
Khoảng Cách Levenshtein - Wikimedia Tiếng Việt
-
Khoảng Cách Levenshtein Là Gì? Chi Tiết Về ... - LADIGI Academy
-
Khoảng Cách Levenshtein - Nghiên Cứu Các Yếu Tố Tạo động Lực Của ...
-
Tính Toán Khoảng Cách Levenshtein Một Cách Nhanh Chóng - Bổ-tú
-
Thuật Toán Khoảng Cách Levenshtein.pdf (.docx) | Tải Miễn Phí
-
Ios — Thuật Toán Khoảng Cách Levenshtein Tốt Hơn O (n * M)?
-
Phân Cụm Văn Bản Với Khoảng Cách Levenshtein - Wake-up
-
[Dictionary] Part 1: Tính Toán Khoảng Cách Levenshtein Nhanh Và Dễ ...
-
Khoảng Cách Chỉnh Sửa (Edit Distance) - Vallicon
-
"Thuật Toán Khoảng Cách Levenshtein" Trang 1 - Tailieunhanh
-
Tìm Chuỗi Gần Giống Trong Excel Với Levenshtein Distance