CN103207903A - 一种可视化图形程序拓扑排序方法 - Google Patents

一种可视化图形程序拓扑排序方法 Download PDF

Info

Publication number
CN103207903A
CN103207903A CN2013101013235A CN201310101323A CN103207903A CN 103207903 A CN103207903 A CN 103207903A CN 2013101013235 A CN2013101013235 A CN 2013101013235A CN 201310101323 A CN201310101323 A CN 201310101323A CN 103207903 A CN103207903 A CN 103207903A
Authority
CN
China
Prior art keywords
symbol
input
follow
sorting
point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013101013235A
Other languages
English (en)
Other versions
CN103207903B (zh
Inventor
冯亚东
陈宏君
刘克金
曹冬明
王国栋
周强
邱大为
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NR Electric Co Ltd
NR Engineering Co Ltd
Original Assignee
NR Electric Co Ltd
NR Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NR Electric Co Ltd, NR Engineering Co Ltd filed Critical NR Electric Co Ltd
Priority to CN201310101323.5A priority Critical patent/CN103207903B/zh
Publication of CN103207903A publication Critical patent/CN103207903A/zh
Application granted granted Critical
Publication of CN103207903B publication Critical patent/CN103207903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种可视化图形程序拓扑排序方法,先将符号按照先横向x坐标进行升序排列,x坐标相同的按纵向y坐标升序排列,形成初步顺序;设计闭环图形网络中的破环符号,把与闭环符号输出点相连接的后继符号的输入点置为已知;按照深度优先和数据流依赖关系进行拓扑排序,定义拓扑排序出栈的规则;并且根据输入输出点相连接的数据流依赖关系,优先判断紧随该符号的后继符号状态是否已知,把有数据流依赖关系的符号按分支遍历排序。此方法可减少人工干预过程,解决闭环死锁依赖,以数据流依赖关系形成执行分支,提高程序运行效率。

Description

一种可视化图形程序拓扑排序方法
技术领域
本发明涉及可视化编程领域图形化程序的拓扑排序。
背景技术
首先介绍拓扑排序中的几个基本概念,可同时结合图1a和图1b所示:
拓扑排序:由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。在代码生成中指根据符号的连接关系,决定符号的调用顺序。
偏序:若集合X上的关系R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。
全序:设R是集合X上的偏序,如果对每个x,y∈X必有xR y或者yRx,则称R是集合X上的全序关系。
直观地看,偏序指集合中仅有部分成员之间可比较,而全序指集合中全体成员可比较。
AOV-网:图中顶点表示程序符号块(活动),有向边(弧)表示先决条件,如符号a是b的先决条件,则图中有弧<a,b>。这种用顶点表示活动,用弧表示活动间优先关系的有向图称为顶点表示活动的网(Activity On VertexNetWork),简称AOV-网。在网中,若从顶点a到顶点b有一条有向路径,则a是b的前驱,b是a的后继。若<a,b>是网中一条弧,则a是b的直接前驱,b是a的直接后继。
可视化编程是一种面向对象的图形化软件开发方法,为了实现应用功能,用各种的编程符号搭建程序模型和配置数据流,用原理图表示程序语言。图形化程序的符号执行顺序是代码生成的关键技术,已经公开的排序算法有:全部人工指定顺序、或者完全根据位置坐标来排序。人工指定顺序存在的问题是当可视化页面数量很多时,设置维护的工作量很大,例如在编程中间插入一个符号时,需要手工调整后续符号的排序值。按照位置坐标的方法,是把可视化页面x坐标划分成几个区间,在单个区间内按照从上到下的顺序输出,这种方法的问题是没有考虑到两个区间内符号的数据流依赖关系,而且同一个区间内只能画一排垂直符号,不能绘制平行符号,单页程序的符号数量有限,单个功能往往需要拆分为多个页面实现。
在AOV网中,不应该出现有向环,这意味着某项活动应以自己为先决条件,而对程序的数据流图来说,则表明存在一个死循环。目前还缺乏针对可视化闭环图形程序的有效合理的智能解决方法,为此设计了一个破环符号,由程序编辑人员指定破环点。
基于上述分析,本发明人针对现有图形程序的拓扑排序方法的不足之处进行深入研究,本案由此产生。
发明内容
本发明的目的,在于提供一种可视化图形程序拓扑排序方法,其可减少人工干预过程,解决闭环死锁依赖,以数据流依赖关系形成执行分支,提高程序运行效率。
为了达成上述目的,本发明的解决方案是:
一种可视化图形程序拓扑排序方法,包括如下三部分:
第一部分,先将符号按照先横向x坐标进行升序排列,x坐标相同的按纵向y坐标升序排列,即按照从上到下、从左到右的Z字型扫描顺序,形成初步顺序,按照坐标排序符合可视化页面程序的机器视觉;按照位置坐标进行初次排序,可以解决当两个符号都同时满足出栈条件时(0输入点或所有输入点都已知),那个符号优先自动出栈的问题。由于可视化图形程序的符号存储是按照先绘制先存储的原则,按照位置坐标的排序可以解决符号先绘制、后删除、再绘制时存储顺序变化导致排序结果不同的问题;
第二部分,设计闭环图形网络中的破环符号BreakLoop,把与闭环符号输出点相连接的后继符号的输入点置为已知,可去除死锁依赖;针对存在反馈闭环的图形程序,设计了破环符号,该符号为单输入单输出,变量类型可设置,输出值等于上一个周期的输入点值,把与破环符号输出点相连接的后继符号的输入点自动置为已知状态,从而去除死锁依赖,所有的破环符号的代码执行放在最后,提供了一种简单直观的图形化设置破环的方法,提高了灵活性;
第三部分,按照深度优先和数据流依赖关系进行拓扑排序,定义拓扑排序出栈的规则,当一个符号没有输入点或者所有输入点都处于已知状态时,该符号可以置为已知状态优先出栈,并置和该符号输出点相连接的后继符号的输入点已知;并且根据输入输出点相连接的数据流依赖关系,优先判断紧随该符号的后继符号状态是否已知,把有数据流依赖关系的符号按分支遍历排序,这样形成的运行代码效率高,提高了CPU的扇入扇出命中率;根据输入输出相连接的数据流依赖关系,形成有向无环图,根据依赖关系形成符号的前驱后继分支,然后按照深度优先的遍历原则,形成符号的执行顺序。
采用上述方案后,本发明先以位置视觉进行初步排序,然后针对闭环进行检测和破环处理,最后按照数据流依赖关系形成运行效率高的符号执行调用顺序,减少了人工设置的工作量,在多个特高压直流保护控制的可视化程序中进行了应用,取得较好的应用效果。
附图说明
图1a是拓扑排序的偏序关系示意图;
图1b是拓扑排序的全序关系示意图;
图2是本发明的流程图;
图3是破坏符号Breakloop的示意图;
图4是存在闭环的排序前图形程序示意图;
图5是排序后执行顺序示意图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
如图2所示,本发明提供一种可视化图形程序拓扑排序方法,包括如下四个部分:
第一部分,基于位置的初步排序过程,导入读取可视化页面文件,形成符号列表,记录符号的顶点坐标,包括输入块、常量块、输出块和功能块,其中,输入块和常量块是0输入1输出的图形符号,在排序中该符号已经满足状态已知的条件,可优先出栈。
可视化页面的坐标起点设置为左上角,x坐标从左到右递增,y坐标从上到下递增,按照插入排序算法,先将符号按照x坐标进行升序排序,当符号的x坐标相同时,按照符号的y坐标升序排列,实现图形符号的按照从上到下、从左到右的快速初步排序,符合可视化图形程序的机器视觉和图形程序开发人员的主观意愿。
第二部分,可视化页面程序的闭环检测和破坏处理。利用符号间输入输出点的连接线信息形成符号的前驱链表和后继链表,通过某符号的后续链表递归遍历,如果可回溯到源符号,则存在闭环,如图3所示,若闭环网络中没有BreakLoop符号,则提示报错,退出排序过程。如果存在BreakLoop符号,定义如下处理原则:1)和破环符号输出点相连接的后继符号的输入点自动置为已知状态,解除输入点和破环符号输出的逻辑依赖;2)从排序符号链表中删除破环符号,把破环符号的执行顺序放在最后;3)符号为单输入单输出,变量类型可设置,输出值等于上一个周期的输入点值,符合自动控制的反馈离散化计算原理。
按照数据流依赖关系,形成符号的输入输出依赖链表。符号之间的输入输出通过连接线连接,连接线记录了连接起始符号的ID和起始输出点名字、连接终端符号的ID和终端输入点名字,每个符号有前驱链表和后继链表。前驱链表记录的是每个输入点的相连接的源输出符号,后继链表记录的是和输出点相连接的终端符号。链表记录符号指针索引,形成了基于数据流的拓扑图,可以通过后继链表,遍历数据流分支,可以通过前驱链表,回溯到源端顶点。如果某符号的输入点未连接,则该符号不可排序,退出排序过程。
第三部分,基于数据流的二次排序处理,将破环处理后的符号列表形成AOV网,按照数据流依赖关系形成前驱链表和后继链表,如果符号的输入点未连接,则给出错误提示,退出排序过程。拓扑排序规则:1)在AOV图中以深度优先的法则选一个没有前驱的顶点并输出;2)从图中删除该顶点和所有以它为尾的弧。
检测并处理闭环,将拓扑图转换为有向无环AOV网。通过符号的后继链表递归遍历,如果可回溯到源符号,则表明图形程序存在闭环,当存在闭环并且没有BreakLoop时,给出错误提示,退出排序过程。如果闭环存在BreakLoop时,则先把BreakLoop放到链表尾部,然后遍历BreakLoop的后继链表,把后继符号相连接的输入点置为已知,如图4所示,和BreakLoop.out相连接的OR.in2、NOT.in、MAX3.in1、MAX2.in1共4个输入点可置为状态已知。
第四部分,依次遍历判断符号列表,一个符号能否执行计算功能即状态已知的判决条件:这个符号所有输入变量的来源(其它符号的输出)已经有计算结果,即所有输入变量已知或者没有输入变量(例如常量块)。当符号状态已知时,依次递归遍历每个输出点的后继,判断紧密相连的后继符号是否状态已知,如果状态已知,继续遍历后继,如果状态未知,则返回遍历前驱符号。按照上述原则循环遍历,直至所有符号的执行顺序都设置。
按照深度优先遍历顺序,判断符号的输入点状态,将满足条件的符号放到可执行顺序链表中。如果符号没有输入点或者所有输入点都已知,则该符号状态置为已知,优先出栈。如图5所示,符号的执行顺序如下:OR、NOT、MAX3、MAX2、ABS、BreakLoop。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

Claims (2)

1.一种可视化图形程序拓扑排序方法,其特征在于包括如下三部分:
第一部分,先将符号按照先横向x坐标进行升序排列,x坐标相同的按纵向y坐标升序排列,形成初步顺序;
第二部分,设计闭环图形网络中的破环符号BreakLoop,把与闭环符号输出点相连接的后继符号的输入点置为已知;
第三部分,按照深度优先和数据流依赖关系进行拓扑排序,定义拓扑排序出栈的规则,当一个符号没有输入点或者所有输入点都处于已知状态时,该符号置为已知状态优先出栈,并置和该符号输出点相连接的后继符号的输入点已知;并且根据输入输出点相连接的数据流依赖关系,优先判断紧随该符号的后继符号状态是否已知,把有数据流依赖关系的符号按分支遍历排序。
2.如权利要求1所述的一种可视化图形程序拓扑排序方法,其特征在于:所述第三部分中,根据输入输出相连接的数据流依赖关系,形成有向无环图,根据依赖关系形成符号的前驱后继分支,然后按照深度优先的遍历原则,形成符号的执行顺序。
CN201310101323.5A 2013-03-26 2013-03-26 一种可视化图形程序拓扑排序方法 Active CN103207903B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310101323.5A CN103207903B (zh) 2013-03-26 2013-03-26 一种可视化图形程序拓扑排序方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310101323.5A CN103207903B (zh) 2013-03-26 2013-03-26 一种可视化图形程序拓扑排序方法

Publications (2)

Publication Number Publication Date
CN103207903A true CN103207903A (zh) 2013-07-17
CN103207903B CN103207903B (zh) 2015-11-18

Family

ID=48755125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310101323.5A Active CN103207903B (zh) 2013-03-26 2013-03-26 一种可视化图形程序拓扑排序方法

Country Status (1)

Country Link
CN (1) CN103207903B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598205A (zh) * 2015-02-26 2015-05-06 华北电力大学(保定) 一种功能块图数据流的排序系统及方法
CN104834525A (zh) * 2015-05-14 2015-08-12 南京南瑞继保电气有限公司 基于中继点的图形化页面连接网络处理方法
CN105468508A (zh) * 2014-09-04 2016-04-06 阿里巴巴集团控股有限公司 代码检测方法及装置
CN105468509A (zh) * 2014-09-04 2016-04-06 阿里巴巴集团控股有限公司 代码稳定性检测方法及装置
CN106959957A (zh) * 2016-01-11 2017-07-18 阿里巴巴集团控股有限公司 一种有向无环图dag连线提示方法及装置
CN108228409A (zh) * 2017-12-29 2018-06-29 南京国电南自维美德自动化有限公司 一种基于信号流的算法执行顺序生成方法
CN108829952A (zh) * 2018-05-31 2018-11-16 福州芝麻智能科技有限公司 一种逻辑拓扑运算顺序的控制方法和系统
WO2018218908A1 (zh) * 2017-06-01 2018-12-06 华南理工大学 一种图形化编程多线程同步方法
CN109634561A (zh) * 2018-10-16 2019-04-16 阿里巴巴集团控股有限公司 一种在线可视化编程方法及装置
CN110837475A (zh) * 2019-11-14 2020-02-25 北京无限光场科技有限公司 冗余检测的方法及装置、终端和存储介质
CN112288249A (zh) * 2020-10-20 2021-01-29 杭州鲸算科技有限公司 业务流程执行方法、装置、计算机设备和介质
CN112527474A (zh) * 2020-12-10 2021-03-19 北京百度网讯科技有限公司 任务处理方法及装置、设备、可读介质、计算机程序产品
CN113050932A (zh) * 2021-03-15 2021-06-29 西安热工研究院有限公司 一种存在多级反馈环图形化程序的自动排序改进方法
CN114489679A (zh) * 2022-02-22 2022-05-13 北京科杰科技有限公司 一种hadoop大数据任务DAG依赖智能分析系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233703B1 (en) * 1997-12-31 2001-05-15 Triconex Corporation Automatic generation of evaluation order for a function block diagram and detection of any associated errors
CN1908893A (zh) * 2005-08-01 2007-02-07 王彤 程序逻辑结构图示方法及程序路径统计方法
CN101364098A (zh) * 2008-09-12 2009-02-11 南京航空航天大学 一种将梯形图转换为指令表程序及解释执行的方法与系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6233703B1 (en) * 1997-12-31 2001-05-15 Triconex Corporation Automatic generation of evaluation order for a function block diagram and detection of any associated errors
CN1908893A (zh) * 2005-08-01 2007-02-07 王彤 程序逻辑结构图示方法及程序路径统计方法
CN101364098A (zh) * 2008-09-12 2009-02-11 南京航空航天大学 一种将梯形图转换为指令表程序及解释执行的方法与系统

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468508A (zh) * 2014-09-04 2016-04-06 阿里巴巴集团控股有限公司 代码检测方法及装置
CN105468509A (zh) * 2014-09-04 2016-04-06 阿里巴巴集团控股有限公司 代码稳定性检测方法及装置
CN105468508B (zh) * 2014-09-04 2018-07-03 阿里巴巴集团控股有限公司 代码检测方法及装置
CN104598205A (zh) * 2015-02-26 2015-05-06 华北电力大学(保定) 一种功能块图数据流的排序系统及方法
CN104834525A (zh) * 2015-05-14 2015-08-12 南京南瑞继保电气有限公司 基于中继点的图形化页面连接网络处理方法
CN106959957A (zh) * 2016-01-11 2017-07-18 阿里巴巴集团控股有限公司 一种有向无环图dag连线提示方法及装置
CN106959957B (zh) * 2016-01-11 2020-07-07 阿里巴巴集团控股有限公司 一种有向无环图dag连线提示方法及装置
WO2018218908A1 (zh) * 2017-06-01 2018-12-06 华南理工大学 一种图形化编程多线程同步方法
CN108228409A (zh) * 2017-12-29 2018-06-29 南京国电南自维美德自动化有限公司 一种基于信号流的算法执行顺序生成方法
CN108829952A (zh) * 2018-05-31 2018-11-16 福州芝麻智能科技有限公司 一种逻辑拓扑运算顺序的控制方法和系统
CN109634561A (zh) * 2018-10-16 2019-04-16 阿里巴巴集团控股有限公司 一种在线可视化编程方法及装置
CN109634561B (zh) * 2018-10-16 2022-03-04 创新先进技术有限公司 一种在线可视化编程方法及装置
CN110837475A (zh) * 2019-11-14 2020-02-25 北京无限光场科技有限公司 冗余检测的方法及装置、终端和存储介质
CN110837475B (zh) * 2019-11-14 2024-03-01 北京有竹居网络技术有限公司 冗余检测的方法及装置、终端和存储介质
CN112288249A (zh) * 2020-10-20 2021-01-29 杭州鲸算科技有限公司 业务流程执行方法、装置、计算机设备和介质
CN112527474A (zh) * 2020-12-10 2021-03-19 北京百度网讯科技有限公司 任务处理方法及装置、设备、可读介质、计算机程序产品
CN112527474B (zh) * 2020-12-10 2023-07-25 北京百度网讯科技有限公司 任务处理方法及装置、设备、可读介质、计算机程序产品
CN113050932A (zh) * 2021-03-15 2021-06-29 西安热工研究院有限公司 一种存在多级反馈环图形化程序的自动排序改进方法
CN114489679A (zh) * 2022-02-22 2022-05-13 北京科杰科技有限公司 一种hadoop大数据任务DAG依赖智能分析系统及方法

Also Published As

Publication number Publication date
CN103207903B (zh) 2015-11-18

Similar Documents

Publication Publication Date Title
CN103207903A (zh) 一种可视化图形程序拓扑排序方法
CN105389402B (zh) 一种面向大数据的etl方法和装置
El-Tamimi et al. Analysis of performance measures of flexible manufacturing system
CN107169575A (zh) 一种可视化机器学习训练模型的建模系统和方法
US8930285B2 (en) Composite production rules
WO2016036824A4 (en) Visually specifying subsets of components in graph-based programs through user interactions
CN108647145A (zh) 软件内存安全检测方法及系统
RU2010130189A (ru) Способ компьютеризованного анализа технической системы
CN102508980A (zh) 一种零件工艺信息快速获取方法
Dawson et al. Spatial Fleming-Viot models with selection and mutation
CN107679402A (zh) 恶意代码行为特征提取方法
CN104020756A (zh) 一种故障诊断系统的逻辑网络拓扑排序和存储方法
CN104408263A (zh) 一种自动处理闭环回路的图形元件分组排序方法
CN110737439B (zh) 基于规则文件的设备控制系统及方法
US20170242661A1 (en) Module Division Assistance Device, Module Division Assistance Method, and Module Division Assistance Program
Saifan Test Case Reduction Using Data Mining Classifier Techniques.
CN102508691B (zh) 一种图形语言程序的有序分解方法及有序分解器
WO2014170992A1 (ja) プログラミングツール
Yadav et al. A fuzzy logic based approach for decision making
Li et al. Recursive modeling of stateflow as input/output-extended automaton
CN106021495B (zh) 一种分布式迭代计算系统的任务参数优化方法
Mordinyi et al. Investigating model slicing capabilities on integrated plant models with AutomationML
CN106096117A (zh) 基于流量和可靠性的不确定图关键边评估方法
CN102063333A (zh) 一种递归结构工作流模型及其调度方法
Horvath New methods on the way to intelligent modeling in computer integrated engineering

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant