一个简单的穷举

2013-06-30 11:53:10 +08:00
 supersheep
最近疯狂猜图很火,于是想有没有办法通过穷举自动识别出可能的组合。写的时候发现算法什么的都还给老师了,比如有n个可选字,组成一个m位数的词,当中不能有重复,感觉有点像n皇后问题,反正倒腾了半天没搞定,弱爆了。今天早上想到拿进制来做,其实道理一样的,不过代码会变得简单清晰很多,简单讲就是把递增的i转成一个m位的n进制数。

大致就是这样:

http://gist.github.com/supersheep/5893777.js

现在觉得数量还是太大了,无从判断,拿来发douban api一下子access rate limit就爆掉了,所以有必要有个本地词库拿来扫一下,可以组成词组的字占一半以上才列入考虑。有兴趣的同学可以继续尝试一下看看咯。
3323 次点击
所在节点    Node.js
5 条回复
csx163
2013-06-30 13:18:57 +08:00
感觉还是要词库,里面大部分都是能连接的字符
Golevka
2013-06-30 15:02:29 +08:00
把字典组织成trie的形式, 把待匹配的字符集中取出一个元素作为首字母然后用类似递归下降的方式匹配剩余的部分. 目测剪枝能力还是可以的, 至少比穷举要好得多
Ricepig
2013-06-30 19:11:52 +08:00
字根表就行了
supersheep
2013-06-30 20:33:42 +08:00
@Golevka 嗯,多谢,回头试试看。
@Ricepig 字根表是什么意思?google搜到的都是五笔相关的内容。和Golevka是一个意思么?
Ricepig
2013-06-30 23:14:30 +08:00
@supersheep 额,不好意思我词不达意了,我当时的意思是词根。英文里用的比较多,比如说什么前缀,什么后缀大概能表达一个什么意思。这样不用多大的库,剪枝效果就很好了。

字典当然更好,不过对字典的要求比较高,另外就是高质量的字典可能本身也不小了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/74202

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX