Исходя из вашего ответа в комментариях, я чувствую, что вы также можете просто иметь каждый уровень своего дерева, представляющий вопрос, и ветви / подузлы узлов на этом уровне, представляющие ответы.Технически это будет три, как упомянуто btilly.
Более эффективное (хотя и не обязательно пространственное) решение может включать использование хеш-таблицы и хеш-функции, которая воздействует на выбор ответа для создания своего хэша., но я думаю, что trie - это лучший путь, учитывая ваши требования и все равно.
О, верно: в зависимости от того, как выложены варианты ответов, возможно, у вас может быть серияответов по конкретным веткам, в которых нет нескольких ветвей / деревьев на нескольких уровнях;в таком случае вы могли бы потенциально свести эти отдельные разделы ветвей в отдельные узлы.http://en.wikipedia.org/wiki/Trie#Compressing_tries также может дать несколько советов.
Исходя из вашего ответа на мой первоначальный ответ, вот моя идея:
Сохранение массива узлов для вопросов и вариантов их ответов, причем каждый вариант ответа связан с хэш-таблицей (или любой другой структурой данныхвы хотели бы использовать, я предложил хеш-таблицу из-за большого использования Python и его использование в структуре данных set
Python, которая реализована как тип хеш-таблицы), содержащей указатели на каждую компанию или указатель наодна компания, если данный ответ на заданный вопрос укажет компанию для начала.
Когда вы впервые проверяете ответ на конкретный вопрос, и с этим выбором ответа связано несколько компаний, сделайте временныйкопия данных в хэш-таблице этого первого ответа в виде связанного списка или чего-то еще.По мере получения ответов на другие вопросы проверяйте элементы списка по хеш-таблице каждого нового ответа и удаляйте компании, которых нет в хеш-таблице каждого нового ответа, из списка.Повторяйте процесс вопросов и ответов, пока 1) в списке не останется только одна компания, 2) в списке не останется ни одной компании, или 3) вы задали все вопросы.
Если 1), тоявляется работодателем, отвечающим на вопросы.
Если 2), сотрудник не нанят ни в одной из компаний для проверки, и / или где-то есть ошибка.
Если 3), компании, оставшиеся в связанномсписок возможных компаний, в которых работает отвечающий на вопросы.
Вероятно, существует более эффективный способ сделать это, так как моя реализация потребовала бы минимум 580 хеш-таблиц (по одной на каждый ответ, с минимумом2 ответа на вопрос), но сейчас я не могу придумать ничего.