IVl*_*lad 15 puzzle algorithm artificial-intelligence
我有兴趣编写类似于akinator的20个问题算法,并且在较小程度上,20q.net使用.后者似乎更关注对象,明确告诉你不要想到人或地方.可以说,akinator更通用,允许你从字面上思考任何东西,包括诸如"我的兄弟"之类的抽象.
这个问题是我不知道这些网站使用了什么算法,但从我读到的内容来看,他们似乎正在使用一种概率方法,在这种方法中,问题根据他们导致正确猜测的次数而具有一定的适应性.这个SO问题提出了几种技术,但含糊不清,我会对更多细节感兴趣.
那么,什么是一个准确有效的算法来播放二十个问题呢?
我对以下方面的细节感兴趣:
我意识到这可能并不容易,我不是要求代码或2000字的演示文稿.关于每个操作和底层数据结构的几句话应该足以让我开始.
IVl*_*lad 11
好吧,三年后,我做到了(虽然我没有全职工作).我在http://twentyquestions.azurewebsites.net/上主持了一个粗略的实现,如果有人有兴趣(请不要教它太多错误的东西了!).
这并不难,但我会说,你不会立刻想到这是不直观的那种不难.我的方法包括一些基于健康的琐碎排名,强化学习的想法以及安排要问的新问题的循环方法.所有这些都是在规范化的关系数据库上实现的.
我的基本想法如下.如果有人有兴趣,我也会分享代码,请联系我.我打算最终把它变成开源,但是一旦我做了更多的测试和改造.所以,我的想法:
A
一个问题Q
推了所有的实体当中,多数回答的问题Q
是A
;GameEntities
.预期答案为"是"的问题甚至在适应性之前受到青睐,因为这些问题有更多机会巩固当前排名靠前的实体;如果有人有兴趣,我可以提供更多细节.我也愿意合作改进算法和实现.