Как вычислить несколько связанных расстояний Левенштейна? - PullRequest
0 голосов
/ 26 января 2011

Учитывая две строки одинаковой длины, расстояние Левенштейна позволяет найти минимальное количество преобразований, необходимое для получения второй строки, учитывая первую. Тем не менее, я хотел бы найти способ настроить алогритм для нескольких пар строк, учитывая, что все они были сгенерированы одинаково.

1 Ответ

0 голосов
/ 09 марта 2013

Читая комментарии, кажется, что это проблема:

Вам дан набор пар строк одинаковой длины, и каждая пара является входом для некоторой функции в паре с выходом изфункция.Итак, для пары A, B мы знаем, что f (A) = B.Цель состоит в том, чтобы перепроектировать f () с большим набором пар A, B.

Использование расстояния Левенштейна на всем наборе, самое большее, скажет вам максимальное количество преобразований, которые должны иметь место.

Лучшим началом было бы расстояние Хэмминга (измененное, чтобы разрешить несколько символов) или сходство Жакара, чтобы определить, сколько позиций в строках не изменяется вообще для всех пар.Тогда вы остаетесь только с теми, кто действительно меняется.

Это не удастся, если буквы сместятся.

Чтобы обнаружить сдвиг, вы хотите использовать глобальное выравнивание ( Needleman-Wunsch ).Затем вы увидите что-то вроде "ABCDE"=>"xABCD", чтобы показать, что от входа до выхода произошел сдвиг влево.

В целом, я чувствую, что расстояние Левенштейна будет очень мало, чтобы помочь вам получить исходный алгоритм.

...