Был задан вопрос о 20 играх с вопросами здесь :
Однако, если я правильно понимаю, ответы, похоже, предполагают, что каждый вопрос будет идти вниз по иерархическому ветвящемуся дереву. Бинарное дерево должно работать, если игра шла так:
- Это животное? Да.
- Это млекопитающее? Да.
- Это кошачий? Да.
Потому что кошачий является примером млекопитающего, а млекопитающее - примером животного. Но что, если вопросы пойдут так?
- Это млекопитающее? Да.
- Это хищник? Да.
- У него длинный нос? Нет.
Вы не можете разветвляться на дерево с такими вопросами, потому что есть много хищников, которые не являются млекопитающими. Таким образом, ваша программа не может быть сужена до млекопитающих, а хищники могут быть подмножеством млекопитающих.
Так есть ли способ использовать двоичное дерево поиска, которое я не понимаю, или есть другой алгоритм для этой проблемы?
Просто чтобы уточнить, я использую только 20 вопросов в качестве примера, так что мой вопрос касается такой проблемы поиска в целом, а не других проблем, связанных конкретно с игрой из 20 вопросов.