我正在尝试构建如下所示的数据树,并且我需要一种可以执行以下操作的有效匹配算法。
您可以将此树视为参加课程的先决条件列表。例如,课程 1 有先决条件 3 和 4,课程 3 有先决条件 7 和 8。如果一个人想修读课程 1,他/她必须同时修读课程 3 和 4,或者课程 3 或课程 4 的所有先决条件(所以如果他/她选修了7,8,4,相当于取了3和4)。
现在一个孩子过来说他想参加课程 2,前提是他提前参加了课程 8,9 和 6。我怎样才能快速检查他是否符合条件?
我现在能想到的唯一方法是构建一个包含所有先决条件组合的查找表,并通过它进行检查以找到匹配项。然而,随着树变大(我正在尝试构建一个可能具有 >10,000 个节点的树),这种方法会炸毁我的计算机。
有人对此有什么建议吗?或者更好的是,是否已经有一个定义明确的搜索算法可以处理这种类型的任务?提前致谢。吉姆
图:一些任意数据树