• JWFD开源工作流-矩阵引擎设计-遍历排序算法运行测试


          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 秒)

    1. 矩阵引擎-遍历算法代码如下
    2. 参数表遍历算法,矩阵引擎的一个模块,排序过程
    3. 使用递归算法,嵌套函数模块
    4. 必须使用递归模式,2个嵌套循环无法遍历排序完成一个复杂的矩阵参数表
    5. */
    6. public void ParamFileOutputValue(String paramfile) {
    7. String s = "";
    8. String sp = "";
    9. String ssp = "";
    10. List<String> list = new ArrayList<String>();
    11. int p = 0;
    12. int k = 0;
    13. //这个地方要修改为整个参数表的最大行数,而不是起始点行数!!
    14. s = this.ParamlineScanner(paramfile).substring(1, 2);
    15. p = Integer.parseInt(s);
    16. k = ParamlineScanOutput(paramfile);
    17. // System.out.println(ParamlineScanOutput(paramfile));
    18. // System.out.println(this.ParamlineScanner(paramfile).substring(4, 7));
    19. System.out.println("矩阵参数表遍历算法启动,输出:");
    20. if (this.ParamlineScanner(paramfile).substring(4, 7).equals("起始点")) {
    21. System.out.println(this.ParamSubscriptScanner(paramfile).get(p - 1).toString());
    22. System.out.println("起始点的下一个邻接点是:" + this.ParamSubscriptScanner(paramfile).get(p - 1).toString().substring(7, 12));
    23. sp = this.ParamSubscriptScanner(paramfile).get(p - 1).toString().substring(7, 12);
    24. // K1 = sp;
    25. for (int i = 0; i <= k - 1; i++) {
    26. //输出所有的节点标签
    27. //进行对比,如何进行全部参数的对比,并输出?
    28. if (this.ParamSubscriptScanner(paramfile).get(i).toString().substring(1, 6).equals(sp)) {
    29. //输出下一批邻接点,继续进行搜索和对比,直到达到最后一个节点
    30. System.out.println("下一个邻接点是:" + this.ParamSubscriptScanner(paramfile).get(i).toString().substring(7, 12));
    31. ssp = this.ParamSubscriptScanner(paramfile).get(i).toString().substring(7, 12);
    32. for (int j = 0; j < k - 1; j++) {
    33. if (this.ParamSubscriptScanner(paramfile).get(j).toString().substring(1, 6).equals(ssp)) {
    34. System.out.println("再下一个邻接点是:" + this.ParamSubscriptScanner(paramfile).get(j).toString().substring(7, 12));
    35. }
    36. }
    37. }
    38. }
    39. }
    40. // 输出这行的节点标签内容:(node7,node6)的node7的下一个邻接点node6
    41. /*
    42. 下标:(7,6): 节点标签:(node7,node6): 节点状态:(0,0): 节点标志:起始点
    43. 取出substring node6,作为对比字符串,搜索所有的参数表行数据,进行对比,输出下一个邻接点
    44. */
    45. }

  • 相关阅读:
    【UE5.1 角色练习】09-物体抬升、抛出技能 - part1
    记一次To B开发普通的性能优化历程......报表优化
    etcd实现大规模服务治理应用实战
    Springboot毕业设计毕设作品,微信垃圾分类小程序系统设计与实现
    【从零开始学习 UVM】2.1、UVM 基础功能 —— Base Class
    Celery笔记八之数据库操作定时任务
    DJYOS物联屏:工业HMI里的显控异构计算的超稳定解决方案
    RPA主要有那些特征,多久可以学会?
    嵌入式软件打log的一些心得
    React Native适配Xcode 15 iOS 17.0+
  • 原文地址:https://blog.csdn.net/comsci/article/details/133455775