По сути, это принцип фильтрации. Есть куча объектов, то есть персонажей в данном случае, и у каждого есть некие параметры/база ответов.
Смысл в том, что система старается выбрать такой вопрос, который разделил бы всех персонажей пополам как при ответе "да", так и при ответе "нет". У половины персонажей ответ на данный вопрос - "да", у другой половины - "нет". Но это в идеале. На практике не получится (к тому же у некоторых персонажей не будет ответа на этот вопрос и т.п.), но должно к этому стремится. Нет смысла в начале игры задавать вопрос: ваш персонаж лысый? В смысле круто, конечно, если "да", персонаж лысый. 99% примерно отсеяться. Но если "нет", то всего 1% . Лучше задать вопрос: ваш персонаж мужского пола? И тут уже отсеется примерно половина+-10 процентов. Затем: "ваш персонаж вымышленный?". Отсеивается 25-75 процентов. И так далее, нужно отсеивать как можно ближе к 50 процентам... И так с каждым разом персонажей становится все меньше и меньше и в конце-концов он угадывает.
Но, честно говоря, довольно часто он тупил. Мог забывать ответы на вопросы/задавал такие вопросы, которые, казалась бы, уже должны были отсеяться, то есть ответ на другой вопрос "нет" подразумевал и на этот. Часто начинал слишком рано угадывать. То есть, казалось бы, еще сужать и сужать персонажей, а он уже пытается угадать прям название сериала, хотя персонаж строго книжный и он это даже не выяснил.
По-моему, довольно средняя модерация там, если она есть... То есть много ошибок, мусора. Ведь базы ответов на вопросы о каждом персонаже по сути создается пользователями. Взять, скажем, блогера "Славного Друже Обломова". Кому-то пришла в голову задумать кота из его передачи. Он был первым. Естественно, Акинатор не угадал. Но пользователь пишет: я загадывал "Пепячника/кота Обломова". И система запоминает ответы о "Пепячнике". И так, когда кота загадают побольше людей Акинатор уже начнет отгадывать.
Но всё ломается, когда пользователи отвечают на вопросы о персонаже неправильно и в базу вносятся неверные данные.