Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
286 views
in Technique[技术] by (71.8m points)

用代码获取流程走向(Java)

需求是这样的,有很多类似的流程如下:
图片描述

有一个函数,我传入一个开始节点Node,能够获取所有的流程走向,包装List返回,比如上面这张图就有两种走向:通过和不通过。我开始用递归来做,类似这样:

图片描述

测试了几个流程,确实能达到效果,但是一遇到复杂的流程(上百种走向)的时候,
图片描述
递归就会有性能问题(栈溢出等)
请问各位大神,像这种情况除了递归还有什么解法吗?如果没有,这种递归有哪里可以优化的地方?小弟能力有限,想了几天没啥好办法....


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
  1. 问题是递归的,实现未必要用递归。可以把 "还未搜索的Node" 放到一个List中,每次找到的新Node放到List最后,下一轮搜索开始时从List最后取。

  2. 还应当使用动态规划减少重复搜索。完全搜索时这个问题是NP的。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...