图中跳转问题
问题描述:在有向图中,有唯一的开始节点和结束节点。图中节点的分叉和汇合有两种类型AND和XOR,分叉的时候为AND时,流程会流入下面所有的分支,为XOR只留向其中一条分支;汇合的时候,AND表示所有汇入的分支都已汇入流程才能继续,XOR表示一条汇入流程就继续。如果能从开始节点出发,正确的到达结束节点,那么这个流程就是正确的。
现在的问题是流程的节点之间需要跳转,即流程不按正常的流向进行,而是跳向指定的节点,先如何通过算法算出有向图中从某节点可以向的节点集合。
解决思路:
1、使用有向图的化简,有两种局部可以化简,从一个节点到另一个节点间没有分叉和汇合,那么这两个节点可以化简为直接连接;如果从一个节点到另一个节点间经过m个分叉和n个汇合,假设m>n,那么局部可以化简为m-n个分叉和一条直接的连线。将图化到最简,最后比较容易判断节点间是否可跳。
2、通过模拟运行的方式,将要跳出的节点的迁移从图中去掉,加上从跳出节点到跳入节点的迁移,模拟让流程运行一下。看流程是否正确。
存在的问题:方法一碰到及其复杂的流程无法处理,不能判断是否能化简;方法二,无法判断流程没有运行下去的原因,是上面有节点未完成,还是流程确实存在问题,无法运行下去。
请教各位有没有更好的办法,或是成型的算法来解决这个问题。