Я заинтересован в написании алгоритма двадцати вопросов , аналогичного тому, который используется akinator и, в меньшей степени, 20q.net . Кажется, что последний фокусируется больше на объектах, явно советуя вам не думать о людях или местах. Можно сказать, что akinator является более общим, позволяя вам думать буквально обо всем, включая абстракции, такие как «мой брат».
Проблема в том, что я не знаю, какой алгоритм используют эти сайты, но из того, что я прочитал, они, похоже, используют вероятностный подход, при котором вопросы получают определенную пригодность на основе того, сколько раз они привели к правильные догадки. Этот ТАК вопрос представляет несколько приемов, но довольно расплывчато, и мне было бы интересно более подробно.
Итак, что может быть точным и эффективным алгоритмом для игры в двадцать вопросов?
Меня интересуют подробности относительно:
- Какой вопрос задать дальше.
- Как правильно угадать в конце 20 вопросов.
- Как вставить новый объект и новый вопрос в базу данных.
- Как эффективно запрашивать (1, 2) и обновлять (3) базу данных.
Я понимаю, что это может быть нелегко, и я не прошу код или презентацию в 2000 слов. Для начала мне достаточно нескольких предложений о каждой операции и соответствующих структурах данных.