2013-11-27 20 views
7

Trong khoảng cách levenshtein bạn đặt câu hỏi, với hai chuỗi này, khoảng cách levenshtein của chúng là bao nhiêu. Làm thế nào bạn sẽ đi về lấy một chuỗi và một khoảng cách levenshtein và tạo ra tất cả các chuỗi trong khoảng cách levenshtein đó. (Nó cũng sẽ đưa vào một bộ ký tự). Vì vậy, nếu tôi vượt qua trong một chuỗi x và một khoảng cách d. sau đó nó sẽ cho tôi tất cả các chuỗi trong khoảng cách chỉnh sửa đó, bao gồm d-1 và d-2 .... d-n; (n < d).Đảo ngược khoảng cách Levenshtein

mong đợi chức năng:

>>> getWithinDistance('apple',2,{'a','b',' '}) 
['applea','appleb','appel','app le'...] 

Xin lưu ý rằng chương trình có thể sản xuất app le như không gian được bao gồm trong bộ ký tự.

+1

Tôi đã thử thêm các ký tự ngẫu nhiên vào các vị trí ngẫu nhiên, nhưng nó không phân phát .. –

+0

Câu hỏi này sẽ nhận được nhiều phiếu bầu hơn, đây là một câu hỏi không thú vị. – PascalVKooten

Trả lời

6

Có cấu trúc dữ liệu thực hiện điều này được gọi là Levenshtein automaton. Bạn xây dựng nó từ một tập hợp các chuỗi (có thể chỉ có một thành viên) và khoảng cách cố định k và sau đó bạn có thể truy vấn nó cho tất cả các chuỗi có khoảng cách tối đa là k của bất kỳ chuỗi nào mà nó lưu trữ. Việc triển khai Python được thảo luận here.

Ngoài ra, bạn có thể thực hiện tìm kiếm có giới hạn độ sâu bằng tính năng backtracking cho các chuỗi như vậy.

+0

tôi có thể xin vui lòng nhận được một số mã giả hoặc một số thực hiện? –

+0

@AnshumanDwibhashi: đăng liên kết tới bài đăng trên blog thảo luận về việc triển khai. –

+0

trang web dường như có một số lỗi, khi tôi thử mã, nó nói rằng NFA không được công nhận –

Các vấn đề liên quan