树的每个可能的逻辑组合 - 算法?

时间:2016-02-10 21:36:12

标签: algorithm math

Example tree

  • 字母代表真/假值
  • True允许遍历较低级别; false表示低位字母也都是假的。
  • 例如,如果 a 为false,则下方的所有字母也将为false。
  • 鉴于任何树的形成,总是有3个级别,我如何计算所有字母的所有有效真值/假值组合?
  • 我正在寻找算法的名称,资源链接。不是你如何实现它。

谢谢,任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

有一个简单的递归算法。以下结果是T分配的字母集的枚举;由于字母分配了TF,因此很明显如何推导出完整的映射:

# I use ++ for the operation of concatenating lists/sets
# and [X] to produce a list/set consisting of the single element X
enumerate(Q, Accum):
  if Q is empty:
    return [Accum]
  else:
    remove the head of Q and put it in Head
    return enumerate(Q, Accum) ++
           enumerate(children(Head) ++ Q, Accum ++ [Head])

要枚举森林的组合,请致电

enumerate(Roots(Forest), [])