2011-02-09 5 views
2

Я подумываю о написании программы, которая просит пользователя подумать об объекте (физическом), а затем задает вопросы об объекте и пытается выяснить, что думает пользователь. (Подобно http://20q.net)Создание дедуктивной программы

Я попытался сделать это на Python, но понял, что мой подход был наивным и был бы очень неэффективным. Как вы, ребята, это сделаете?

ответ

2

Выполнение этого эффективно требует несколько усовершенствованный метод по вероятности под названием Kullback-Liebler Divergence. Применительно к деревьям решений (это то, что вы хотите сделать) его часто называют Information Gain.

Но не позволяйте этому останавливать вас! Сделайте несколько поисков образцов реализации деревьев решений и начните с них. Я бы написал намного более простую программу, прежде чем приступать к решению 20 вопросов.

Также взгляните на http://www.20q.net/. Нажмите «Подумай по-английски», затем «Классический 20Q». Иногда бывает страшно хорошо.

1

Похоже, вы хотите сделать компьютеризированную 21 игру вопросов. Я бы сделал это с деревом вопросов и ответов.

Вот хороший StackOverflow статья о реализации деревьев в питона How can I implement a tree in Python? Are there any built in data structures in Python like in Java?

+0

Конечно, это требует «2^21 - 1' вопросов и ответов« 2^21 », сохраненных в памяти, и, что еще важнее, где-то написано. –

+0

Chrisian, да, я знаю, что это не ограничивается 21 вопросом, я просто ссылался на популярную игру, которая иллюстрировала этот момент. – Nick

+0

Реализация структуры данных дерева не является проблемой. Это тривиально. Задача заключается в том, чтобы реализовать алгоритм * learn * и автоматически * построить * оптимальную древовидную структуру. – Cerin

Смежные вопросы