这是我从中开始的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>
我认为这与问题无关,但我正在使用JAVA 7解析JSON并编写XML。方框代表web服务,箭头表示输入和输出参数,例如,模块5在模块1、2、3和4完成并且它们的输出是其输入后才被调用。
编辑:好的,这里有另一个包含十个节点的示例。我希望这能让您更好地了解何时需要合并节点。
请参考以下图片:https://istack.dev59.com/2YTmM.webp 回答@blubb,我们可以看到在此示例中,“服务”8和9也已合并。否则,所有它们需要工作的服务(1,2,3,4,5和6)都将不必要地被调用两次。最后一个草图中的中间分支将执行两次:一次为8,一次为9。