JWFD开源工作流-矩阵引擎设计-遍历算法运行测试
使用下面的流程图-生成式矩阵和参数表,编写遍历排序算法,运行结果如下(test004.mtx,test004.parm)
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
1 0 0 1 0 1 1 0 1 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
下标:(8,1): 节点标签:(node8,node1): 节点状态:(0,0): 节点标志:普通点
下标:(1,9): 节点标签:(node1,node9): 节点状态:(0,0): 节点标志:普通点
下标:(5,1): 节点标签:(node5,node1): 节点状态:(0,0): 节点标志:普通点
下标:(6,1): 节点标签:(node6,node1): 节点状态:(0,0): 节点标志:普通点
下标:(2,0): 节点标签:(node2,node0): 节点状态:(0,0): 节点标志:普通点
下标:(0,1): 节点标签:(node0,node1): 节点状态:(0,0): 节点标志:普通点
下标:(7,2): 节点标签:(node7,node2): 节点状态:(0,0): 节点标志:起始点
下标:(3,1): 节点标签:(node3,node1): 节点状态:(0,0): 节点标志:普通点
下标:(2,6): 节点标签:(node2,node6): 节点状态:(0,0): 节点标志:普通点
下标:(2,5): 节点标签:(node2,node5): 节点状态:(0,0): 节点标志:普通点
下标:(2,8): 节点标签:(node2,node8): 节点状态:(0,0): 节点标志:普通点
下标:(2,3): 节点标签:(node2,node3): 节点状态:(0,0): 节点标志:普通点
下标:(9,4): 节点标签:(node9,node4): 节点状态:(0,0): 节点标志:普通点
遍历算法函数运行输出结果
run:
矩阵参数表遍历算法启动,输出:
(node7,node2)
起始点的下一个邻接点是:node2
下一个邻接点是:node0
再下一个邻接点是:node1
下一个邻接点是:node6
再下一个邻接点是:node1
下一个邻接点是:node5
再下一个邻接点是:node1
下一个邻接点是:node8
再下一个邻接点是:node1
下一个邻接点是:node3
再下一个邻接点是:node1
成功构建 (总时间: 0 秒)
矩阵引擎-遍历算法代码如下
参数表遍历算法,矩阵引擎的一个模块,排序过程
使用递归算法,嵌套函数模块
必须使用递归模式,2个嵌套循环无法遍历排序完成一个复杂的矩阵参数表
*/
public void ParamFileOutputValue(String paramfile) {
String s = "";
String sp = "";
String ssp = "";
List list = new ArrayList();
int p = 0;
int k = 0;
//这个地方要修改为整个参数表的最大行数,而不是起始点行数!!
s = this.ParamlineScanner(paramfile).substring(1, 2);
p = Integer.parseInt(s);
k = ParamlineScanOutput(paramfile);
// System.out.println(ParamlineScanOutput(paramfile));
// System.out.println(this.ParamlineScanner(paramfile).substring(4, 7));
System.out.println("矩阵参数表遍历算法启动,输出:");
if (this.ParamlineScanner(paramfile).substring(4, 7).equals("起始点")) {
System.out.println(this.ParamSubscriptScanner(paramfile).get(p - 1).toString());
System.out.println("起始点的下一个邻接点是:" + this.ParamSubscriptScanner(paramfile).get(p - 1).toString().substring(7, 12));
sp = this.ParamSubscriptScanner(paramfile).get(p - 1).toString().substring(7, 12);
// K1 = sp;
for (int i = 0; i <= k - 1; i++) {
//输出所有的节点标签
//进行对比,如何进行全部参数的对比,并输出?
if (this.ParamSubscriptScanner(paramfile).get(i).toString().substring(1, 6).equals(sp)) {
//输出下一批邻接点,继续进行搜索和对比,直到达到最后一个节点
System.out.println("下一个邻接点是:" + this.ParamSubscriptScanner(paramfile).get(i).toString().substring(7, 12));
ssp = this.ParamSubscriptScanner(paramfile).get(i).toString().substring(7, 12);
for (int j = 0; j < k - 1; j++) {
if (this.ParamSubscriptScanner(paramfile).get(j).toString().substring(1, 6).equals(ssp)) {
System.out.println("再下一个邻接点是:" + this.ParamSubscriptScanner(paramfile).get(j).toString().substring(7, 12));
}
}
}
}
}
// 输出这行的节点标签内容:(node7,node6)的node7的下一个邻接点node6
/*
下标:(7,6): 节点标签:(node7,node6): 节点状态:(0,0): 节点标志:起始点
取出substring node6,作为对比字符串,搜索所有的参数表行数据,进行对比,输出下一个邻接点
*/
}