单词搜索算法

11
我正在尝试提出比“暴力”方法更好的方法,但有些无从下手。
以下是一个简单的例子:
给定一组有限数量的预选字母和一个填字游戏(类似于交叉字谜),我试图找出可以使用的所有单词组合。(单词从字典数据库中检索。)
例如:
给定字母:
a,c,r,e,t,u,p,l,m,o
有多少种单词组合可以适配以下填字游戏?
   _
 _ _ _ _ 
   _
   _
   _ _ _

一个例子:

  c
t r e e
  e
  e
  p o t

当然,随着每个字母或添加到填字游戏方格中的单词数量增加,搜索时间会急剧增加。有没有更好的搜索方法建议?

1
我可以使用sed 's|/.*||' /var/cache/postgresql/dicts/en_us.dict | egrep "^[acretuplmo]{3,5}$" | wc 将一个包含62,000个单词的字典缩减到566个单词(初步处理),但我很好奇:您使用4次e,却没有使用任何一个a。这样做合适吗? - user unknown
是的,可以使用提供的任何字母来创建单词(每个字母可以使用多次)。 - kylex
1个回答

4
请查看开源arccc,它将填充纵横字谜格视为约束满足问题。如果您想作为学习练习自己完成此操作,则阅读CSPs应该是一个很好的起点。
至于限制字母表,最好在源字典上进行预处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接