代码之家  ›  专栏  ›  技术社区  ›  Kevin Loney

一系列复杂条件的部分验证

  •  0
  • Kevin Loney  · 技术社区  · 16 年前

    我可以将其作为if/else语句的老鼠窝来实现,但这将是一场可维护性的噩梦,因为法规会定期更改。由于图中没有循环,我认为某种形式的广度优先方法可能是最优的。 我走对了吗?执行这类任务还有其他替代技术吗?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Antti Huima    16 年前

    解决方案完全取决于您所说的有向无环图(DAG)实际表示的内容。是节点和或节点,还是条件分支?

    如果它是一个AND/OR/NOT图,那么您需要从叶子开始计算节点的真值。这不是广度优先搜索,而是一种反向广度优先方法。计算叶的值,然后向后计算内部节点的值;最终,您将得到根节点的评估结果(真/假)。

        2
  •  0
  •   kriss    16 年前

    听起来您正试图解决一个名为“[常数折叠][1]”的常见编译问题( http://en.wikipedia.org/wiki/Constant_folding

    True AND X = X True OR X = True 帮助修剪树木的大部分(据我所知,这个微不足道的实现是一个深度优先和回溯的问题,而不是广度优先,但不管怎样,它不是很多代码)。