эффективная самая длинная общая библиотека алгоритмов подпоследовательности? - PullRequest
12 голосов
/ 07 сентября 2010

Я ищу (космическую) эффективную реализацию алгоритма LCS для использования в программе на C ++. Входами являются две последовательности произвольного доступа целых чисел.
В настоящее время я использую подход динамического программирования со страницы Википедии о LCS. Однако, это имеет O (mn) поведение в памяти и времени и умирает от меня с ошибками нехватки памяти для больших входов. Я читал об алгоритме Хиршберга, который значительно улучшает использование памяти, Ханта-Шимански, Масека и Патерсона. Поскольку реализовать их нетривиально, я бы предпочел опробовать их на моих данных в существующей реализации. Кто-нибудь знает о такой библиотеке? Я полагаю, поскольку текстовые инструменты сравнения довольно распространены, вокруг должны быть библиотеки с открытым исходным кодом?

Ответы [ 3 ]

3 голосов
/ 09 сентября 2010

При поиске подобных вещей попробуйте scholar.google.com. Это намного лучше для поиска научных работ. Оказалось http://www.biotec.icb.ufmg.br/cabi/artigos/seminarios2/subsequence_algorithm.pdf этот документ, "обзор самых длинных общих алгоритмов подпоследовательностей".

0 голосов
/ 01 октября 2013

Алгоритм Хиршберга встраивает реализацию javascript: почти C.

0 голосов
/ 22 сентября 2011

Не C ++, но Python, но я думаю, что можно использовать.

http://wordaligned.org/articles/longest-common-subsequence

...