私はLevenshteinsEditDistanceアルゴリズムで遊んでいますが、これを拡張して、転置(つまり、隣接する文字の交換)を1つの編集としてカウントしたいと思います。変更されていないアルゴリズムは、別の文字列から特定の文字列に到達するために必要な挿入、削除、または置換をカウントします。たとえば、「KITTEN」から「SITTING」までの編集距離は3です。Wikipediaからの説明は次のとおりです。
- 子猫→座る(「k」を「s」に置き換える)
- シッテン→シッティン(「e」から「i」への置換)
- シッティン→シッティング(最後に「g」を挿入)。
同じ方法で、「CHIAR」から「CHAIR」までの編集距離は2です。
- CHIAR→CHAR('I'を削除)
- CHAR→CHAIR(「I」を挿入)
隣接する2文字しか交換しないので、これを「1編集」として数えたいと思います。どうすればこれを行うことができますか?