我试图将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>
Run Code Online (Sandbox Code Playgroud)
我不认为它是相关的,但我正在解析JSON以使用JAVA 7编写XML.框是Web服务,箭头表示输入和输出参数,因此,例如,模块5被调用一次模块1,2,3和4已完成,其输出是其输入.
编辑:好的,这是另一个十个节点的例子.我希望这能让您更好地了解我的节点何时合并.
要回答@blubb,在这个例子中我们可以看到"服务"8和9是如何合并的.否则他们需要工作的所有服务(1,2,3,4,5和6)将被呼叫两次而不需要.最后一个草图中的中间分支将执行两次:一次为8次,一次为9次.