我正在尝试将 DAG(有向无环图)映射到下面显示的结构中。
这是我开始的 DAG 示例
弧总是从左到右。
然后我恢复图形并将其跨越到具有重复节点的树中,如下所示:
我正在寻找的是一些算法或模式来实现以下合并结构。(注意它又被还原了)
目标是生成这样的 XML:
<root>
<seq>
<mod1/>
<flow>
<seq>
<mod4/>
<mod7/>
</seq>
<seq>
<flow>
<seq>
<flow>
<mod4/>
<mod3/>
</flow>
<mod6/>
</seq>
<seq>
<flow>
<mod4/>
<mod3/>
<mod2/>
</flow>
<mod5/>
</seq>
</flow>
<mod8/>
</seq>
</flow>
</seq>
</root>
我认为这无关紧要,但我正在解析 JSON 以使用 JAVA 7 编写 XML。框是 Web 服务,箭头表示输入和输出参数,例如,模块 5 被调用一次模块 1、2、3 和 4已经完成,它们的输出是它的输入。
编辑:好的,这是另一个有十个节点的例子。我希望这能让您更好地了解 I 节点何时应该被合并。
回答@blubb,在这个例子中,我们可以看到“服务” 8 和 9 是如何被合并的。否则,他们需要工作的所有服务(1、2、3、4、5 和 6)将被调用两次而无需。最后一个草图中的中间分支将执行两次:一次用于 8,一次用于 9。