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