Если вы считаете это проблемой поиска пути, вы можете попробовать алгоритм A *.
(Эвристический поиск пространства ответов.)
Кроме того, вы просто хотите найти решение или лучшее решение?
EDIT
Мне не хочется менять это, но я вижу, что мой пример плохой, поскольку один шаг решает его. Игнорируйте эту проблему при рассмотрении примера.
Быстрый обзор того, как работает A * (и немного относится к этой проблеме)
Чтобы использовать A *, вам нужна функция, которая оценивает данное состояние (завершения). Вы хотите более высокое значение для состояний, которые ближе к цели.
Для этой задачи две примерные функции
- (каждая буква правильная * 1) - (количество букв отличается от цели * 10)
- (каждая правильная буква * 100) - (количество букв, отличных от цели)
Как вы можете видеть, первый размер слова одобрения близок к правильным буквам
2-ые правильные буквы правильные.
Не уверен, что лучше - ты мог бы сделать сбалансированную формулу тоже.
Допустим, мы пытаемся получить от бота -> лодка
Затем вы оцените все возможные изменения мальчика, давайте воспользуемся первой функцией.
два примера, которые вы бы оценили, это boot и bat (и другие). boot имеет значение 3, а bat имеет значение -7. Загрузка лучше (в соответствии с этой функцией), поэтому мы бы оценили все возможные изменения загрузки (прежде чем другие) и нашли решение.
Ясно, как грязь? Может быть, Википедия объясняет это лучше.
http://en.wikipedia.org/wiki/A*_search_algorithm
Примечания стороны:
A * найдет наилучшее решение, если функция спроектирована правильно, если такая функция существует для данной задачи. Это аккуратная особенность A *.
Улучшение A * - это короткое замыкание при взгляде на состояния (например, в приведенном выше случае - положительное значение 3 - очень хорошее значение (4 - максимальное значение), поэтому ваш алгоритм может перестать смотреть на другие состояния и перейти к тому, который очень близко.
Две трудные части A *: 1) поиск правильной функции и 2) возможность перечисления всех возможных состояний. Я думаю, что 2 не так сложно сделать с хорошим файлом словаря и некоторыми функциями быстрого хеширования / поиска.