制作演绎程序
Posted
技术标签:
【中文标题】制作演绎程序【英文标题】:Making a deductive program 【发布时间】:2011-02-09 03:03:09 【问题描述】:我正在考虑编写一个程序,让用户思考一个对象(一个物理对象),然后询问有关该对象的问题并试图弄清楚用户在想什么。 (类似于http://20q.net)
我尝试在 Python 中执行此操作,但认为我的方法很幼稚并且效率非常低。你们会怎么做呢?
【问题讨论】:
【参考方案1】:要有效地做到这一点,需要一种称为Kullback-Liebler Divergence 的更高级的概率方法。应用于决策树(这是您想要做的)它通常称为 Information Gain。
但不要让这阻止你!对决策树的实现样本进行一些搜索,然后从那里开始。在你解决 20 个问题之前,我会编写一个更简单的程序。
另外,看看http://www.20q.net/。单击“用英语思考”,然后单击“经典 20Q”。有时候,这很可怕。
【讨论】:
【参考方案2】:听起来你想制作一个计算机化的 21 题游戏。我会用问题和答案树来做。
这是一篇关于在 python 中实现树的不错的 *** 文章 How can I implement a tree in Python? Are there any built in data structures in Python like in Java?
【讨论】:
当然,这确实需要将2^21 - 1
问题和2^21
答案保存在内存中,更重要的是写在某个地方。
Chrisian,是的,我知道它不限于 21 个问题,我只是指一个流行的游戏来说明这一点。
实现树形数据结构不是挑战。那是微不足道的。挑战在于实现算法以学习并自动构建最优树结构。以上是关于制作演绎程序的主要内容,如果未能解决你的问题,请参考以下文章