一度に1文字ずつ変えて、有効な英語の単語だけを使って単語を変えようとする「ワードゲーム」を聞いたことがあると思います。私はそれを解決するためにA*アルゴリズムを実装しようとしています(A *の理解を具体化するためだけに)。必要なものの1つは、最小距離のヒューリスティックです。
つまり、任意の文字列aを別の文字列bに変換できるこれら3つの突然変異のうちの1つの最小数:1)1つの文字を別の文字に変更する2)任意の文字の前後の場所に1つの文字を追加する3)任意の文字を削除する
例
aabca => abaca:
aabca
abca
abaca
= 2
abcdebf => bgabf:
abcdebf
bcdebf
bcdbf
bgdbf
bgabf
= 4
私は多くのアルゴリズムを試しました。毎回実際の答えを出すものが見つからないようです。実際、人間の推論でさえ最良の答えを見つけているかどうかわからないことがあります。
誰かがそのような目的のためのアルゴリズムを知っていますか?または多分私が1つを見つけるのを手伝うことができますか?
(明確にするために、私は、英語の妥当性を無視して、任意の文字列を他の文字列に変換できるアルゴリズムを求めています。)