順序付けられていない 2 つのシンボル コレクション間の最小編集距離を効率的に計算する方法が必要です。シーケンスに対してのみ機能するレーベンシュタイン距離のように、シンボルごとのコストが異なる挿入、削除、および置換が必要です。また、編集スクリプトの復元にも関心があります。
私が達成しようとしているのは、文字列編集距離の計算に非常に似ているため、順序付けられていない文字列編集距離または設定編集距離と呼ばれる可能性があると考えました。しかし、Google はそれらの検索用語では何も出てこないので、問題が別の名前で知られているかどうか知りたいです。
明確にするために、問題は次のように解決されます
def unordered_edit_distance(target, source):
return min(edit_distance(target, source_perm)
for source_perm in permuations(source))
たとえば、 はunordered_edit_distance('abc', 'cba')
になりますが0
、edit_distance('abc', 'cba')
は です2
。残念ながら、順列の数は非常に急速に大きくなり、適度なサイズの入力に対しても実用的ではありません。
編集操作がさまざまなコストに関連付けられていることをより明確にします。