Вы можете думать об этом как о алгоритме двоичного поиска.
В каждой итерации мы задаем вопрос, который должен исключить примерно половину возможных вариантов выбора слова. Если имеется всего N слов, то мы можем ожидать ответа после log2 (N) вопросов.
При 20 вопросах мы должны оптимально найти слово среди 2 ^ 20 = 1 миллиона слов.
Одним из простых способов устранения выбросов (неправильных ответов) было бы, вероятно, использовать что-то вроде RANSAC . Это будет означать, что вместо учета всех вопросов, на которые даны ответы, вы случайным образом выбираете меньшее подмножество, которого достаточно, чтобы дать вам один ответ. Теперь вы повторяете это несколько раз с разными случайными подгруппами вопросов, пока не увидите, что большую часть времени вы получаете один и тот же результат. тогда вы знаете, что у вас есть правильный ответ.
Конечно, это лишь один из многих способов решения этой проблемы.