Tôi đang sử dụng thuật toán Levenshtein để tìm sự giống nhau giữa hai chuỗi. Đây là một phần rất quan trọng của chương trình tôi đang làm, vì vậy nó cần phải có hiệu quả. Vấn đề là các thuật toán không tìm thấy các ví dụ sau đây là tương tự:Tương tự về chuỗi -> Khoảng cách Levenshtein
Conair
AIRCON
Thuật toán sẽ cung cấp cho khoảng cách 6. Vì vậy, cho từ này của 6 chữ cái (Bạn nhìn vào từ có số lượng chữ cái cao nhất), chênh lệch là 100% => mức tương tự là 0%.
Tôi cần tìm cách để tìm điểm giống nhau giữa hai chuỗi, nhưng cũng xem xét các trường hợp giống như trường hợp tôi đã trình bày trước đây.
Có thuật toán tốt hơn tôi có thể sử dụng không? Hoặc các bạn giới thiệu cho tôi điều gì?
EDIT: Tôi cũng đã xem xét thuật toán "Damerau – Levenshtein", bổ sung thêm các chuyển vị. Vấn đề là chuyển đổi này chỉ dành cho các ký tự liền kề (và không phải cho một số ký tự).
Trước khi bạn có thể tìm ra thuật toán khoảng cách chuỗi, bạn cần xác định rõ ràng loại chuyển đổi nào bạn nghĩ là có thể chấp nhận được. Điều gì làm cho các chuỗi này giống nhau hơn hai chuỗi 6 ký tự ngẫu nhiên? Bạn có thể diễn tả nó theo cách mà bạn có thể 'leo lên đồi' từ một chuỗi này sang chuỗi khác, nhận được nhiều bước tương tự hơn không? –