CN113672369A - 用于验证有向无环图的环的方法及装置、电子设备、存储介质 - Google Patents
用于验证有向无环图的环的方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN113672369A CN113672369A CN202110963189.4A CN202110963189A CN113672369A CN 113672369 A CN113672369 A CN 113672369A CN 202110963189 A CN202110963189 A CN 202110963189A CN 113672369 A CN113672369 A CN 113672369A
- Authority
- CN
- China
- Prior art keywords
- node
- traversed
- path
- nodes
- acyclic graph
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 101150050759 outI gene Proteins 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及有向无环图技术领域,公开一种用于验证有向无环图的环的方法,通过获取有向无环图中未入栈的多个节点,从中选取一个节点为起始节点,并对起始节点对应的多条路径依次进行遍历,对待遍历路径执行第一预设操作,即从待遍历路径中的第一个待遍历节点开始依次对待遍历路径中的节点执行第二预设操作,在各节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,确定有向无环图不存在闭环。这样,能够提高判断有向无环图是否存在闭环的效率。本申请还公开一种用于验证有向无环图的环的装置、电子设备、存储介质。
Description
技术领域
本申请涉及有向无环图技术领域,例如涉及一种用于验证有向无环图的环的方法及装置、电子设备、存储介质。
背景技术
有向无环图指的是一个无回路的有向图,其被越来越多的运用于工作中,例如:在调度系统的任务可视化界面,需要用户在任务可视化界面连线作为两个任务之间的依赖关系,这些任务之间即构成有向无环图。在添加依赖关系时,需要先判断该连线是否与已存在的依赖关系形成闭环,如果存在闭环,就会使调度系统陷入死循环,任务不能正常执行。因此,判断有向无环图是否存在闭环至关重要。
在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
现有技术中通常采用邻接矩阵的方式来判断有向无环图是否有环,这种判断有向无环图是否存在闭环的方法的效率较低。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于验证有向无环图的环的方法及装置、电子设备、存储介质,以提高判断有向无环图是否存在闭环的效率。
在一些实施例中,用于验证有向无环图的环的方法,包括:获取有向无环图中的多个节点,各所述节点的入栈状态均为未入栈;从各所述节点中选取一个节点为起始节点,并对所述起始节点进行入栈操作;获取所述起始节点对应的多条路径;所述路径中的节点包括起始节点和待遍历节点,所述路径中各节点通过有向边顺序连接;所述待遍历节点为起始节点外的其他节点;从多条所述路径中依次选取一条路径确定为待遍历路径,对所述待遍历路径执行第一预设操作;所述第一预设操作为确定所述待遍历路径中的第一个待遍历节点,并从所述第一个待遍历节点开始根据所述待遍历路径的有向边依次对所述待遍历路径中的节点执行第二预设操作,在所述待遍历路径中的节点均执行完第二预设操作且未确定出所述有向无环图存在闭环的情况下,将所述待遍历路径中的待遍历节点均出栈;所述第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定所述有向无环图存在闭环;在各所述路径均执行完第一预设操作且未确定出所述有向无环图存在闭环的情况下,则确定所述有向无环图不存在闭环。
在一些实施例中,用于验证有向无环图的环的装置,包括:获取模块,被配置为获取有向无环图中的多个节点,各所述节点的入栈状态均为未入栈;起始节点确定模块,被配置为从各所述节点中选取一个节点为起始节点,并对所述起始节点进行入栈操作;路径确定模块,被配置为获取所述起始节点对应的多条路径;所述路径中的节点包括起始节点和待遍历节点,所述路径中各节点通过有向边顺序连接;所述待遍历节点为起始节点外的其他节点;判断模块,被配置为从多条所述路径中依次选取一条路径确定为待遍历路径,对所述待遍历路径执行第一预设操作;所述第一预设操作为确定所述待遍历路径中的第一个待遍历节点,并从所述第一个待遍历节点开始根据所述待遍历路径的有向边依次对所述待遍历路径中的节点执行第二预设操作,在所述待遍历路径中的节点均执行完第二预设操作且未确定出所述有向无环图存在闭环的情况下,将所述待遍历路径中的待遍历节点均出栈;所述第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定所述有向无环图存在闭环;有向无环图确定模块,被配置为在各所述路径均执行完第一预设操作且未确定出所述有向无环图存在闭环的情况下,则确定所述有向无环图不存在闭环。
在一些实施例中,用于验证有向无环图的环的装置,包括处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行上述的用于验证有向无环图的环的方法。
在一些实施例中,电子设备包括上述的用于验证有向无环图的环的装置。
在一些实施例中,存储介质,存储有程序指令,所述程序指令在运行时,执行上述的用于验证有向无环图的环的方法。
本公开实施例提供的用于验证有向无环图的环的方法及装置、电子设备、存储介质,可以实现以下技术效果:通过获取有向无环图中未入栈的多个节点,从中选取一个节点为起始节点,并对起始节点对应的多条路径依次进行遍历,对待遍历路径执行第一预设操作,即确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。这样,对起始节点对应的路径依次进行遍历,判断各待遍历路径的节点的入栈状态,并对待遍历路径的节点进行入栈和出栈,从而判断有向无环图是否存在闭环,能够提高判断有向无环图是否存在闭环的效率。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是本公开实施例提供的一个用于验证有向无环图的环的方法的示意图;
图2是本公开实施例提供的一个有向无环图的示意图;
图3是本公开实施例提供的一个用于验证有向无环图的环的装置的示意图;
图4是本公开实施例提供的另一个用于验证有向无环图的环的装置的示意图。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。
术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
结合图1所示,本公开实施例提供的一种用于验证有向无环图的环的方法,包括:
步骤S101,获取有向无环图中的多个节点,各节点的入栈状态均为未入栈;
步骤S102,从各节点中选取一个节点为起始节点,并对起始节点进行入栈操作;
步骤S103,获取起始节点对应的多条路径;路径中的节点包括起始节点和待遍历节点,路径中各节点通过有向边顺序连接;待遍历节点为起始节点外的其他节点;
步骤S104,从多条路径中依次选取一条路径确定为待遍历路径,对待遍历路径执行第一预设操作;第一预设操作为确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;
步骤S105,在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。
采用本公开实施例提供的用于验证有向无环图的环的方法,通过获取有向无环图中未入栈的多个节点,从中选取一个节点为起始节点,并对起始节点对应的多条路径依次进行遍历,对待遍历路径执行第一预设操作,即确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。这样,对起始节点对应的路径依次进行遍历,判断各待遍历路径的节点的入栈状态,并对待遍历路径的节点进行入栈和出栈,从而判断有向无环图是否存在闭环,能够提高判断有向无环图是否存在闭环的效率。
在一些实施例中,在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,对起始节点进行出栈操作并确定该有向无环图不存在闭环。
可选地,将待遍历路径中的待遍历节点均出栈,包括:按照预设顺序依次对待遍历路径中的待遍历节点进行出栈操作。
可选地,确定待遍历路径中的第一个待遍历节点,包括:将待遍历路径中起始节点通过有向边直接指向的待遍历节点确定为待遍历路径中的第一个待遍历节点。
可选地,入栈操作包括:将节点对应的数据存入预设的栈中;该数据用于表征节点。可选地,节点对应的数据为二进制数据。
可选地,对起始节点进行入栈操作,包括:将起始节点对应的数据存入预设的栈中;起始节点对应的数据用于表征起始节点。
可选地,节点的入栈状态为未入栈的情况下,对未入栈状态对应的节点进行入栈操作,包括:节点的入栈状态为未入栈的情况下,将该未入栈状态对应的节点所对应的数据存入预设的栈中;未入栈状态对应的节点所对应的数据用于表征未入栈状态对应的节点。
可选地,出栈操作,包括:在预设的栈中移除节点对应的数据。
可选地,对起始节点进行出栈操作,包括:在预设的栈中移除起始节点对应的数据。
可选地,对待遍历路径中的待遍历节点进行出栈操作,包括:在预设的栈中移除待遍历节点对应的数据。
可选地,判断节点的入栈状态,包括:依次遍历预设的栈中的数据,在预设的栈中存在节点对应的数据的情况下,则确定该节点的入栈状态为已入栈;在预设的栈中不存在节点对应的数据的情况下,则确定该节点的入栈状态为未入栈。
在一些实施例中,图2为DGA(Directed Acyclic Graph,有向无环图)的示意图,如图2所示,DGA有向无环图中设置有节点0、节点1、节点2、节点3、节点11、节点21、节点22;其中,节点0分别指向节点1、节点2和节点3;节点1指向节点11,节点2指向节点21,节点21指向节点22,节点22指向节点2。各节点的入栈状态均为未入栈,从各节点中选取节点0作为起始节点,并将节点0进行入栈操作,获取节点0对应的路径1、路径2和路径3;路径1包括节点0、节点1和节点11;路径2包括节点0、节点2、节点21、节点22;路径3包括节点0和节点3。先选取路径1确定为待遍历路径,将待遍历路径中起始节点,即节点0通过有向边直接指向的节点1确定为待遍历路径中的第一个待遍历节点。从节点1开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,即:先判断节点1的入栈状态,节点1的入栈状态为未入栈,则对节点1进行入栈操作;再判断节点11的入栈状态,节点11的入栈状态为未入栈,则对节点11进行入栈操作;此时,待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环,将待遍历路径中的节点按照节点11、节点1的顺序依次出栈。然后选取路径2确定为待遍历路径,将待遍历路径中起始节点,即节点0通过有向边直接指向的节点2确定为待遍历路径中的第一个待遍历节点;从节点2开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,即:先判断节点2的入栈状态,节点2的入栈状态为未入栈,则对节点2进行入栈操作;再判断节点21的入栈状态,节点21的入栈状态为未入栈,则对节点21进行入栈操作,然后判断节点22的入栈状态,节点22的入栈状态为未入栈,则对节点22进行入栈操作,最后判断节点2的入栈状态,节点2的入栈状态为已入栈,则确定该有向无环图存在闭环。
这样,现有技术中采用邻接矩阵的方式来判断有向无环图是否有环的方式,在遍历的过程中,发现某个节点有一条边指向已经访问过的节点,则判断为有环。采用邻接矩阵这样算法,由于矩阵元素个数为n2,因此时间复杂度为o(n^2)。本申请采用栈的数据结构来判断有向无环图是否有环的方式,其时间复杂度为o(n),其中,o()为时间复杂度计算函数,n为正整数。因此本申请采用栈的数据结构来判断有向无环图是否有环的方式相较于采用邻接矩阵的方式来判断有向无环图是否有环的方式,对有向无环图是否存在闭环进行判断的效率更高。同时,提高了判断有向无环图是否有环的数据能力。
结合图3所示,本公开实施例提供一种用于验证有向无环图的环的装置,包括:获取模块201、起始节点确定模块202、路径确定模块203、判断模块204和有向无环图确定模块205;获取模块201,被配置为获取有向无环图中的多个节点,各节点的入栈状态均为未入栈;起始节点确定模块202,被配置为从各节点中选取一个节点为起始节点,并对起始节点进行入栈操作;路径确定模块203,被配置为获取起始节点对应的多条路径;路径中的节点包括起始节点和待遍历节点,路径中各节点通过有向边顺序连接;待遍历节点为起始节点外的其他节点;判断模块204,被配置为从多条路径中依次选取一条路径确定为待遍历路径,对待遍历路径执行第一预设操作;第一预设操作为确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;有向无环图确定模块205,被配置为在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。
采用本公开实施例提供的用于验证有向无环图的环的装置,通过获取有向无环图中未入栈的多个节点,从中选取一个节点为起始节点,并对起始节点对应的多条路径依次进行遍历,对待遍历路径执行第一预设操作,即确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。这样,对起始节点对应的路径依次进行遍历,判断各待遍历路径的节点的入栈状态,并对待遍历路径的节点进行入栈和出栈,从而判断有向无环图是否存在闭环,能够提高判断有向无环图是否存在闭环的效率。
可选地,判断模块被配置为按照以下方式确定待遍历路径中的第一个待遍历节点:将待遍历路径中起始节点通过有向边直接指向的待遍历节点确定为待遍历路径中的第一个待遍历节点。
可选地,入栈操作,包括:将节点对应的数据存入预设的栈中;该数据用于表征节点。
可选地,判断模块被配置为按照以下方式判断节点的入栈状态:依次遍历栈中的数据,在预设的栈中存在节点对应的数据的情况下,则确定节点的入栈状态为已入栈;在预设的栈中不存在节点对应的数据的情况下,则确定节点的入栈状态为未入栈。
结合图4所示,本公开实施例提供一种用于验证有向无环图的环的装置,包括处理器(processor)300和存储器(memory)301。可选地,该装置还可以包括通信接口(Communication Interface)302和总线303。其中,处理器300、通信接口302、存储器301可以通过总线303完成相互间的通信。通信接口302可以用于信息传输。处理器300可以调用存储器301中的逻辑指令,以执行上述实施例的用于验证有向无环图的环的方法。
此外,上述的存储器301中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器301作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器300通过运行存储在存储器301中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中用于验证有向无环图的环的方法。
存储器301可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器301可以包括高速随机存取存储器,还可以包括非易失性存储器。
采用本公开实施例提供的用于验证有向无环图的环的装置,通过获取有向无环图中未入栈的多个节点,从中选取一个节点为起始节点,并对起始节点对应的多条路径依次进行遍历,对待遍历路径执行第一预设操作,即确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。这样,对起始节点对应的路径依次进行遍历,判断各待遍历路径的节点的入栈状态,并对待遍历路径的节点进行入栈和出栈,从而判断有向无环图是否存在闭环,能够提高判断有向无环图是否存在闭环的效率。
本公开实施例提供了一种电子设备,包含上述的用于验证有向无环图的环的装置。
采用本公开实施例提供的电子设备,通过获取有向无环图中未入栈的多个节点,从中选取一个节点为起始节点,并对起始节点对应的多条路径依次进行遍历,对待遍历路径执行第一预设操作,即确定待遍历路径中的第一个待遍历节点,并从第一个待遍历节点开始根据待遍历路径的有向边依次对待遍历路径中的节点执行第二预设操作,在待遍历路径中的节点均执行完第二预设操作且未确定出有向无环图存在闭环的情况下,将待遍历路径中的待遍历节点均出栈;第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定有向无环图存在闭环;在各路径均执行完第一预设操作且未确定出有向无环图存在闭环的情况下,则确定有向无环图不存在闭环。这样,对起始节点对应的路径依次进行遍历,判断各待遍历路径的节点的入栈状态,并对待遍历路径的节点进行入栈和出栈,从而判断有向无环图是否存在闭环,能够提高判断有向无环图是否存在闭环的效率。
可选地,电子设备为计算机、服务器等。
本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述用于验证有向无环图的环的方法。
本公开实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述用于验证有向无环图的环的方法。
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (10)
1.一种用于验证有向无环图的环的方法,其特征在于,包括:
获取有向无环图中的多个节点,各所述节点的入栈状态均为未入栈;
从各所述节点中选取一个节点为起始节点,并对所述起始节点进行入栈操作;
获取所述起始节点对应的多条路径;所述路径中的节点包括起始节点和待遍历节点,所述路径中各节点通过有向边顺序连接;所述待遍历节点为起始节点外的其他节点;
从多条所述路径中依次选取一条路径确定为待遍历路径,对所述待遍历路径执行第一预设操作;所述第一预设操作为确定所述待遍历路径中的第一个待遍历节点,并从所述第一个待遍历节点开始根据所述待遍历路径的有向边依次对所述待遍历路径中的节点执行第二预设操作,在所述待遍历路径中的节点均执行完第二预设操作且未确定出所述有向无环图存在闭环的情况下,将所述待遍历路径中的待遍历节点均出栈;所述第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定所述有向无环图存在闭环;
在各所述路径均执行完第一预设操作且未确定出所述有向无环图存在闭环的情况下,则确定所述有向无环图不存在闭环。
2.根据权利要求1所述的方法,其特征在于,确定所述待遍历路径中的第一个待遍历节点,包括:
将所述待遍历路径中起始节点通过有向边直接指向的待遍历节点确定为所述待遍历路径中的第一个待遍历节点。
3.根据权利要求1所述的方法,其特征在于,所述入栈操作,包括:
将节点对应的数据存入预设的栈中;所述数据用于表征节点。
4.根据权利要求3所述的方法,其特征在于,所述判断节点的入栈状态,包括:
依次遍历所述栈中的数据,在所述栈中存在节点对应的数据的情况下,则确定节点的入栈状态为已入栈;在所述栈中不存在节点对应的数据的情况下,则确定节点的入栈状态为未入栈。
5.一种用于验证有向无环图的环的装置,其特征在于,包括:
获取模块,被配置为获取有向无环图中的多个节点,各所述节点的入栈状态均为未入栈;
起始节点确定模块,被配置为从各所述节点中选取一个节点为起始节点,并对所述起始节点进行入栈操作;
路径确定模块,被配置为获取所述起始节点对应的多条路径;所述路径中的节点包括起始节点和待遍历节点,所述路径中各节点通过有向边顺序连接;所述待遍历节点为起始节点外的其他节点;
判断模块,被配置为从多条所述路径中依次选取一条路径确定为待遍历路径,对所述待遍历路径执行第一预设操作;所述第一预设操作为确定所述待遍历路径中的第一个待遍历节点,并从所述第一个待遍历节点开始根据所述待遍历路径的有向边依次对所述待遍历路径中的节点执行第二预设操作,在所述待遍历路径中的节点均执行完第二预设操作且未确定出所述有向无环图存在闭环的情况下,待遍历路径中的待遍历节点均出栈;所述第二预设操作为判断节点的入栈状态,在入栈状态为未入栈的情况下对节点进行入栈操作,在入栈状态为已入栈的情况下确定所述有向无环图存在闭环;
有向无环图确定模块,被配置为在各所述路径均执行完第一预设操作且未确定出所述有向无环图存在闭环的情况下,则确定所述有向无环图不存在闭环。
6.根据权利要求5所述的装置,其特征在于,判断模块被配置为按照以下方式确定所述待遍历路径中的第一个待遍历节点:
将所述待遍历路径中起始节点通过有向边直接指向的待遍历节点确定为所述待遍历路径中的第一个待遍历节点。
7.根据权利要求5所述的装置,其特征在于,所述入栈操作,包括:
将节点对应的数据存入预设的栈中;所述数据用于表征节点。
8.一种用于验证有向无环图的环的装置,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至4任一项所述的用于验证有向无环图的环的方法。
9.一种电子设备,其特征在于,包括如权利要求8所述的用于验证有向无环图的环的装置。
10.一种存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,执行如权利要求1至4任一项所述的用于验证有向无环图的环的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110963189.4A CN113672369A (zh) | 2021-08-20 | 2021-08-20 | 用于验证有向无环图的环的方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110963189.4A CN113672369A (zh) | 2021-08-20 | 2021-08-20 | 用于验证有向无环图的环的方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113672369A true CN113672369A (zh) | 2021-11-19 |
Family
ID=78544922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110963189.4A Pending CN113672369A (zh) | 2021-08-20 | 2021-08-20 | 用于验证有向无环图的环的方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672369A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168198A (zh) * | 2022-02-10 | 2022-03-11 | 北京创新乐知网络技术有限公司 | 线上处理流程调整方法、系统及配置中心、服务端 |
CN114510338A (zh) * | 2022-04-19 | 2022-05-17 | 浙江大华技术股份有限公司 | 一种任务调度方法、任务调度设备和计算机可读存储介质 |
CN115167352A (zh) * | 2022-07-05 | 2022-10-11 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制系统的代数环识别方法及装置 |
CN115375045A (zh) * | 2022-10-26 | 2022-11-22 | 山东捷瑞数字科技股份有限公司 | 基于三维引擎的工程网络图的无效路径检测方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3043222A1 (fr) * | 2015-11-04 | 2017-05-05 | Commissariat Energie Atomique | Procede de simulation parallele de niveau systeme electronique avec detection des conflits d'acces a une memoire partagee |
CN110968738A (zh) * | 2019-11-19 | 2020-04-07 | 国网智能科技股份有限公司 | 智能站描述文件数据类型模板嵌套环检测方法及系统 |
CN113204678A (zh) * | 2021-05-27 | 2021-08-03 | 中国工商银行股份有限公司 | 有向图的环路检测方法、装置、系统、设备及介质 |
-
2021
- 2021-08-20 CN CN202110963189.4A patent/CN113672369A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3043222A1 (fr) * | 2015-11-04 | 2017-05-05 | Commissariat Energie Atomique | Procede de simulation parallele de niveau systeme electronique avec detection des conflits d'acces a une memoire partagee |
CN110968738A (zh) * | 2019-11-19 | 2020-04-07 | 国网智能科技股份有限公司 | 智能站描述文件数据类型模板嵌套环检测方法及系统 |
CN113204678A (zh) * | 2021-05-27 | 2021-08-03 | 中国工商银行股份有限公司 | 有向图的环路检测方法、装置、系统、设备及介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168198A (zh) * | 2022-02-10 | 2022-03-11 | 北京创新乐知网络技术有限公司 | 线上处理流程调整方法、系统及配置中心、服务端 |
CN114168198B (zh) * | 2022-02-10 | 2022-04-26 | 北京创新乐知网络技术有限公司 | 线上处理流程调整方法、系统及配置中心、服务端 |
CN114510338A (zh) * | 2022-04-19 | 2022-05-17 | 浙江大华技术股份有限公司 | 一种任务调度方法、任务调度设备和计算机可读存储介质 |
CN114510338B (zh) * | 2022-04-19 | 2022-09-06 | 浙江大华技术股份有限公司 | 一种任务调度方法、任务调度设备和计算机可读存储介质 |
CN115167352A (zh) * | 2022-07-05 | 2022-10-11 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制系统的代数环识别方法及装置 |
CN115375045A (zh) * | 2022-10-26 | 2022-11-22 | 山东捷瑞数字科技股份有限公司 | 基于三维引擎的工程网络图的无效路径检测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113672369A (zh) | 用于验证有向无环图的环的方法及装置、电子设备、存储介质 | |
CN102932415B (zh) | 一种镜像文件存储方法及装置 | |
CN107637024B (zh) | 连接性感知的虚拟网络嵌入的相关方法和系统 | |
CN111930519B (zh) | 用于分布式数据处理的并行决策系统及其方法 | |
CN105871587A (zh) | 日志上传方法及装置 | |
CN113448844B (zh) | 用于回归测试的方法及装置、电子设备 | |
CN108121774A (zh) | 一种数据表备份方法及终端设备 | |
CN105630419A (zh) | 一种资源池的分区视图发送方法及管理节点 | |
CN114386934A (zh) | 用于业务流程的生成方法及装置、服务器、存储介质 | |
CN108153731B (zh) | 生僻字处理方法、计算设备及计算机存储介质 | |
CN106294530A (zh) | 规则匹配的方法和系统 | |
CN112651024A (zh) | 用于恶意代码检测的方法及装置、设备 | |
CN105847516A (zh) | 一种联系人信息管理方法及装置 | |
CN106293996A (zh) | 数据同步方法、主设备、备份设备和系统 | |
Lamalem et al. | Enumeration of the minimal node cutsets based on necessary minimal paths | |
CN114721801A (zh) | 批量任务执行时间的动态调度方法及装置 | |
CN115345131A (zh) | 用于构建层级关系树的方法及装置、电子设备 | |
CN115687223A (zh) | 用于嵌入式设备串口通信的方法及装置、嵌入式设备、存储介质 | |
CN112861005A (zh) | 用于信息推送的方法及装置、设备 | |
CN108319679B (zh) | 一种主键的生成方法及装置 | |
CN117114091B (zh) | 基于联邦学习的计算图处理方法、计算机设备和存储介质 | |
CN111030863A (zh) | 一种节点拓扑信息确定方法、装置、设备及存储介质 | |
CN111597039B (zh) | 用于内存优化的方法、装置及设备 | |
CN109033189A (zh) | 链路结构日志的压缩方法、装置、服务器及可读存储介质 | |
CN115545352B (zh) | 基于水资源分区管理的数据处理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |