2010-09-07 42 views
12

Tôi đang tìm một (không gian) thực hiện hiệu quả thuật toán LCS để sử dụng trong chương trình C++. Đầu vào là hai chuỗi truy cập ngẫu nhiên của các số nguyên.
Tôi hiện đang sử dụng phương pháp lập trình động từ trang wikipedia về LCS. Tuy nhiên, điều đó có O (mn) hành vi trong bộ nhớ và thời gian và chết trên tôi với ra khỏi bộ nhớ lỗi cho đầu vào lớn hơn.
Tôi đã đọc về thuật toán của Hirschberg, giúp cải thiện đáng kể dung lượng bộ nhớ, Hunt-Szymanski và Masek và Paterson. Vì nó không phải là tầm thường để thực hiện những tôi muốn thử chúng trên dữ liệu của tôi với một thực hiện hiện có. Có ai biết thư viện như vậy không? Tôi muốn tưởng tượng vì các công cụ tìm kiếm văn bản khá phổ biến, nên có một số thư viện nguồn mở xung quanh?thư viện thuật toán thuật toán phổ biến dài nhất có hiệu quả?

+0

Bạn có quan tâm đến các dãy con chung dài nhất thực tế hay chỉ là chiều dài của nó? – IVlad

+0

Tôi cần chuỗi thực tế. – BuschnicK

+0

Thất vọng rằng một vài tìm kiếm trên web nhanh chóng không bật lên bất cứ điều gì đặc biệt hữu ích (tải các triển khai ad hoc cho 'char' trong C, nhưng không có gì với tốc độ tăng tốc không gian tuyến tính của Hirschberg hoặc được tạo mẫu trên loại phần tử cho C++). Nếu bạn tìm thấy (hoặc tạo ra: D) bất cứ điều gì, xin vui lòng cập nhật! –

Trả lời

3

Khi tìm kiếm những thứ như vậy, hãy thử scholar.google.com. Nó là tốt hơn cho việc tìm kiếm các công trình học thuật. Nó bật lên http://www.biotec.icb.ufmg.br/cabi/artigos/seminarios2/subsequence_algorithm.pdf tài liệu này, "khảo sát các thuật toán phổ biến nhất về sau".

+1

Grudging +1 vì OP thực sự muốn triển khai thư viện các thuật toán đã nói, chứ không phải mô tả. Nhưng có lẽ là một bài báo hữu ích. –

+0

Cũng sẽ hữu ích khi biết ngày xuất bản và các chi tiết khác. –

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