Poszukuję efektywnej implementacji algorytmu LCS do użycia w programie C++. Wejścia są dwoma losowymi sekwencjami dostępu do liczb całkowitych.
Używam obecnie metody programowania dynamicznego na stronie wikipedia poświęconej LCS. Jednak ma ono O (mn) zachowanie w pamięci i czasie i umiera na mnie z powodu braku błędów pamięci dla większych wejść.
Przeczytałem o algorytmie Hirschberga, który znacznie poprawia wykorzystanie pamięci, Hunt-Szymański, Masek i Paterson. Ponieważ nie jest to łatwe do wdrożenia, wolę wypróbować je na moich danych z istniejącą implementacją. Czy ktoś wie o takiej bibliotece? Mogę sobie wyobrazić, że skoro narzędzia do porównywania tekstu są dość powszechne, to w okolicy powinny znajdować się jakieś biblioteki open source?efektywna najdłuższa biblioteka algorytmów wspólnego podciągania?
Odpowiedz
Wyszukując podobne rzeczy, wypróbuj stronę scholar.google.com. Znacznie lepiej jest znaleźć prace naukowe. Okazało się, że ten dokument to "przegląd najdłuższych algorytmów wspólnych podciągów".
Grudging +1, ponieważ OP naprawdę chce implementacji bibliotek wspomnianych algorytmów, a nie opisów. Ale i tak prawdopodobnie przydatny papier. –
Warto również znać datę publikacji i inne szczegóły. –
Nie C++, ale Python, ale myślę, że jest użyteczny.
Hirschberg's Algorithm osadza javascript realizacji: prawie C.
jesteś zainteresowany rzeczywistego najdłuższy wspólny podciąg lub tylko jego długość? – IVlad
Potrzebuję rzeczywistej sekwencji. – BuschnicK
Rozczarowany, że kilka szybkich wyszukiwań w sieci nie przyniosło niczego szczególnie użytecznego (mnóstwo implementacji ad hoc dla 'char' w C, ale nic z przyspieszenia liniowej przestrzeni Hirschberga lub szablonu na typ C++). Jeśli znajdziesz (lub stworzysz: D) wszystko, proszę zaktualizować! –