Разработка алгоритма двадцати вопросов

Мне интересно написать алгоритм двадцать вопросов , аналогичный акинатору и, в меньшей степени 20q.net использует. Последний, кажется, больше фокусируется на объектах, явно говоря вам не думать о людях или местах. Можно сказать, что акинатор является более общим, позволяющим думать буквально обо всем, включая абстракции, такие как «мой брат».

Проблема в том, что я не знаю, какой алгоритм используют эти сайты, но из того, что я читал, кажется, что они используют вероятностный подход, в котором вопросы получают определенную пригодность, основанную на том, сколько раз они приводили к правильным предположениям. Этот вопрос SO представляет несколько методов, но довольно расплывчато, и мне было бы интересно узнать более подробную информацию.

Итак, какой может быть точный и эффективный алгоритм для ответа на двадцать вопросов?

Меня интересуют подробности относительно:

  1. Какой вопрос задать дальше.
  2. Как сделать наилучшее предположение в конце 20 вопросов.
  3. Как вставить новый объект и новый вопрос в база данных.
  4. Как запросить (1, 2) и обновить (3) базу данных эффективно.

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

15
задан Community 23 May 2017 в 11:46
поделиться