Алгоритм поиска слов

Я пытаюсь найти лучший подход, чем метод "грубой силы", но я немного потеряю.

Вот простой случай:

Учитывая конечное количество предварительно выбранных букв и люк (например, перекрытие кроссворда), я пытаюсь найти всю комбинацию слов, которые можно использовать. (Слова извлекаются из базы данных словаря.)

Пример:

Учитывая буквы:
a, c, r, e, t, u, p, l, m, o
сколько комбинаций слов может вписываться в следующую кроссворд?

   _
 _ _ _ _ 
   _
   _
   _ _ _

Один пример:

  c
t r e e
  e
  e
  p o t

Конечно, время поиска резко возрастает с каждой буквой или дополнением к люку кроссворда. Любые предложения для лучшего поиска?

Ответ 1

Обратите внимание на открытый arccc, который заполняет кроссворды, рассматривая их как проблема удовлетворения ограничений. Если вы хотели бы сделать это сами в качестве учебного упражнения, то чтение на CSP должно стать хорошей отправной точкой.

Что касается ограничения алфавита, это лучше всего сделать как шаг предварительной обработки исходного словаря.