Как изменить расстояние редактирования Левенштейна, чтобы считать« обмены соседними буквами »за 1 править

Я играю с алгоритмом редактирования расстояния Левенштейна , и я хочу расширить его, чтобы подсчитать транспозиции, то есть обмены соседними буквами, как 1 редактирование . Немодифицированный алгоритм подсчитывает вставки, удаления или замены, необходимые для достижения определенной строки из другой. Например, расстояние редактирования от «КОТЯТ» до «СИДЕНИЕ» равно 3. Вот объяснение из Википедии:

  1. котенок → ситтен (замена «k» на «s»)
  2. sitten → sittin (замена « e 'на' i ')
  3. сидеть → сидеть (вставить' g 'в конце).

Следуя тому же методу, расстояние редактирования от "CHIAR" до "CHAIR" равно 2:

  1. CHIAR → CHAR (удалить "I")
  2. CHAR → CHAIR (вставить "I")

I Я хотел бы засчитать это как «1 редактирование», так как я обмениваюсь только двумя соседними буквами. Как я могу это сделать?

11
задан j_random_hacker 30 October 2010 в 07:36
поделиться