一种交付物循环依赖的分析方法、装置、设备及存储介质
文献发布时间:2023-06-19 11:05:16
技术领域
本说明书涉及计算机技术领域,尤其涉及一种交付物循环依赖的分析方法、装置、设备及存储介质。
背景技术
交付物是项目成败的关键,若交付物不达标或管理不到位,则意味着项目的失败。在项目交付物产生的过程中,需要多方的合作,因此,在交付物管理过程中需要注意交付物之间的依赖关系,交付物之间存在相互依赖,进而产生循环依赖关系。若存在循环依赖关系,则对接触交付物循环依赖关系带来极大的挑战,无法获取交付物之间所有的循环依赖关系就不能准确快速解除循环依赖。
在传统的循环依赖检测过程中,检测结果的准确性有待进一步提高。
发明内容
本申请实施例提供了一种交付物循环依赖的分析方法、装置、设备及存储介质,用于解决如下技术问题:在传统的循环依赖检测过程中,检测结果的准确性有待进一步提高。
一方面,本申请实施例提供了一种交付物循环依赖的分析方法,方法包括:建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
在本申请的一种实现方式中,基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,具体包括:在依赖关系邻接矩阵中确定第一顶点,其中,第一顶点随机取值;根据第一顶点进行路线查找,确定出路线查找结果;根据路线查找结果判定待分析交付物之间是否存在循环依赖关系。
在本申请的一种实现方式中,根据第一顶点进行路线查找,确定出路线查找结果,具体包括:根据第一顶点和其他顶点按照顺序进行路线查找,确定出路线查找结果,其中,顺序与矩阵索引值大小有关。
在本申请的一种实现方式中,根据路线查找结果判定待分析交付物之间是否存在循环依赖关系,具体包括:根据路线查找结果进行分组,得到依赖关系分组;在依赖关系分组中进行循环依赖关系查找,判定依赖关系分组内的待分析交付物之间是否存在循环依赖关系。
在本申请的一种实现方式中,在每个依赖关系分组中进行循环依赖关系查找,判定依赖关系分组内待分析交付物之间是否存在循环依赖关系,具体包括:在每个依赖关系分组内确定其他顶点;分别以其他顶点为起点,在依赖关系分组内查找待分析交付物的循环依赖关系。
在本申请的一种实现方式中,建立待分析交付物的依赖关系邻接矩阵,具体包括:基于预先存储的待分析交付物之间的依赖关系信息,得到待分析交付物之间的依赖关系;根据待分析交付物之间的依赖关系,建立所述依赖关系邻接矩阵。
在本申请的一种实现方式中,建立待分析交付物的依赖关系邻接矩阵,具体包括:根据待分析交付物的数量建立待交付物之间的依赖关系邻接矩阵,其中,依赖邻接矩阵的维度与所述待分析交付物的数量相关。
另一方面,本申请实施例还提供了一种交付物循环依赖的分析装置,包括:矩阵建立单元,用于建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;关系确定单元,用于基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
再一方面,本申请实施例还提供了一种交付物循环依赖的分析设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
本申请实施例还提供了一种存储介质,存储有计算机可执行指令,计算机可执行指令设置为:建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
本申请实施例提供的上述至少一个技术方案能够达到以下有益效果:通过建立依赖关系邻接矩阵确定待分析交付物之间的循环依赖关系,提高了检测效率,增强检测结果的准确性;另外,根据路线查找结果进行分组,得到依赖关系分组并在依赖关系分组中进行循环依赖关系查找,每条路线查找不重复,进一步保证了检测结果的准确性。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请实施例提供的一种交付物循环依赖的分析方法流程图;
图2为本申请实施例提供的一种依赖关系图;
图3为本申请实施例提供的一种循环依赖关系图;
图4为本申请实施例提供的一种交付物循环依赖的分析装置的结构示意图;
图5为本申请实施例提供的一种交付物循环依赖的分析设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
交付物是项目成败的关键,若交付物不达标或管理不到位,则意味着项目的失败。在项目交付物产生的过程中,需要多方的合作,因此,在交付物管理过程中需要注意交付物之间的依赖关系,交付物之间存在相互依赖,进而产生循环依赖关系。若存在循环依赖关系,则对接触交付物循环依赖关系带来极大的挑战,无法获取交付物之间所有的循环依赖关系就不能准确快速解除循环依赖。
在传统的循环依赖检测过程中,检测效率不高且检测结果不全面;传统的循环依赖检测方法检测结果的准确性有待进一步提高,不能为后续快速解除循环依赖提供更多的帮助。需要说明的是,本申请实施例中的交付物循环依赖关系是指交付物1依赖于交付物2、交付物2依赖于交付物3以及交付物3依赖于交付物1的依赖关系。
本申请实施例提供了一种交付物循环依赖的分析方法,根据待分析交付物两两之间的依赖关系,建立依赖关系邻接矩阵,并根据依赖关系邻接矩阵确定待分析交付物之间的循环依赖关系,提高了检测效率,增强检测结果的准确性;另外,根据路线查找结果进行分组,得到依赖关系分组并在依赖关系分组中进行循环依赖关系查找,每条路线查找不重复,进一步保证了检测结果的准确性。下面结合附图对本申请实施例提出的技术方案进行详细的说明。
图1为本申请实施例提供的一种交付物循环依赖的分析方法流程图。本领域技术人员可以明确的是,本申请实施例中的执行主体可以是服务器或任何一种有处理能力的设备。如图1所示,交付物循环依赖的分析方法主要包括以下步骤:
步骤S102:建立待分析交付物之间的依赖关系邻接矩阵。
本申请实施例提供的一种交付物循环依赖的分析方法,首先是建立待分析交付物之间的依赖关系邻接关系矩阵。
在本申请的一个实施例中,建立待分析交付物之间的依赖关系邻接矩阵具体包括以下步骤:首先,获取所有待分析交付物个体的依赖关系。
需要说明的是,获取所有待分析交付物个体的依赖关系可以通过每个待分析交付物的自描述依赖关系获得,其中,交付物的自描述依赖关系是每个交付物的自带属性;还可以通过待分析交付物系统记录的待分析交付物之间的依赖关系获得。
接下来,根据获取得待分析交付物个体的依赖关系,得到所有待分析交付物两两之间的依赖关系。最后可以根据待分析交付物两两之间的依赖关系建立待分析交付物之间的依赖关系邻接矩阵,其中待分析交付物之间的依赖关系矩阵的维度与待交付物的数量有关。比如,存在5个待分析交付物,则建立的待分析交付物之间的依赖关系邻接矩阵为五维邻接矩阵。
具体地,例如,待分析交付物包括A、B、C和D。首先通过自描述依赖关系获取待分析交付物A的个体依赖关系为A依赖于B、A被C依赖以及A依赖于D;同样的获取待分析交付物B的个体依赖关系为B依赖于C和B依赖于D,待分析交付物C的个体依赖关系为C依赖于A,并分别被B、D依赖,待分析交付物D的个体依赖关系为D依赖于C,并分别被A、B依赖,至此获得了每个待分析交付物的个体依赖关系。接下来,根据待分析交付物A、待分析交付物B、待分析交付物C和待分析交付物D的个体的依赖关系得到两两之间的依赖关系。即,待分析交付物A、B之间的依赖关系为A→B,待分析交付物A、C之间的依赖关系为C→A,待分析交付物A、D之间的依赖关系为A→D,待分析交付物B、C之间的依赖关系为B→C,待分析交付物B、D之间的依赖关系为B→D,待分析交付物C、D之间的依赖关系为D→C。最后,根据上述待分析交付物两两之间的依赖关系建立4×4的依赖关系邻接矩阵,其中依赖关系邻接矩阵为:
步骤S104:根据依赖关系邻接矩阵确定循环依赖关系。
在本申请的一个实施例中,建立依赖关系邻接矩阵后,根据依赖关系邻接矩阵确定循环依赖关系。
具体地,在依赖关系邻接矩阵中可以随机选取一个顶点作为第一顶点,根据第一顶点和其他顶点按照顺序进行路线查找,确定出路线查找结果。
需要说明的是,查找顺序与依赖关系邻接矩阵的索引值大小有关,其中,本领域技术人员需要明确的是,矩阵的第一行第一列对应的索引值可以为1,矩阵的第二行第一列对应的索引值可以为2,矩阵的第三行第一列对应的索引值可以为3,以此类推。
在本申请的一个实施例中,在确定出路线查找结果后,根据依赖关系邻接矩阵的最小顶点对查找结果进行分组得到依赖关系分组。以第一顶点为起点,按照第一顶点和大于第一顶点的矩阵索引值顺序进行路线查找,在路线查找过程中,可能会有断开的情况,此时,表示当前点没有依赖,并将该路线分为一组。因此,在路线查找时,查找路线可以是线性,也可以是环形,本申请所寻找的循环依赖关系即为环形。本申请实施例提供的技术方案可以找到所有的循环依赖关系,为后续解除依赖提供了帮助。
在本申请的一个实施例中,承接上一部分,在依赖关系分组中确定第二顶点(依赖关系分组中的第二个顶点),以第二顶点为起点,在每个依赖关系分组中继续进行路线查找,其中第二顶点可以是指在依赖关系分组内往后找的顶点。为了避免重复路线,将第二顶点添加到路线上时,对第一顶点开头的基本路线进行阻塞。只要是从第二顶点到第一顶点的路线,都保持阻塞在第一顶点以外的顶点处,与当前基本路线相交。
在本申请的一个实施例中,若在依赖关系分组中包括多个顶点,则继续确定新的顶点,当最后确定的顶点是第一顶点时,该依赖关系分组内的顶点已经全部遍历过,则该依赖关系分组内的循环依赖关系查找完成。
具体地,例如,图3给出了一种依赖关系图。按照矩阵的索引值大小确定查找顺序为顶点S、顶点A、顶点B、顶点C、顶点D和顶点E的顺序依次查找。首先,确定第一顶点为S,从顶点S处按上述顺序进行路线寻找。
从图3可知,顶点S分别依赖于顶点A和顶点C,因此,顶点S可以继续向顶点A处和顶点C处查找;若顶点S向顶点A处查找,顶点A依赖于顶点B和顶点C,因此,顶点A可以继续向顶点B和顶点C查找;若顶点A向顶点B查找,顶点B依赖于顶点C,因此,顶点B可以继续向顶点C查找。当查找路线到达顶点C后,顶点C依赖于顶点D和顶点E,因此,顶点C可以向顶点D和顶点E查找。
若顶点A向顶点B查找,顶点C向顶点D查找,则第一条路线分组为:顶点S→顶点A→顶点B→顶点C→顶点D。若顶点A向顶点B查找,顶点C向顶点E查找,则第二条路线分组为:顶点S→顶点A→顶点B→顶点C→顶点E。若顶点A向顶点C处查找,顶点C向顶点D处查找,则第三条路线分组为:顶点S→顶点A→顶点C→顶点D。若顶点A向顶点C处查找,顶点C向顶点E处查找,则第四条路线分组为:顶点S→顶点A→顶点C→顶点E。至此,顶点S向顶点A处查找的路线已查找结束。
若顶点S向顶点C处查找,顶点C向顶点D查找,则第五条路线分组为:顶点S→顶点C→顶点D。若顶点S向顶点C处查找,顶点C向顶点E查找,则第六条路线分组为:顶点S→顶点C→顶点E。至此,顶点S向顶点C处查找的路线已查找结束。
若顶点S向顶点D查找,则第七条路线分组为:顶点S→顶点D。至此,顶点S向顶点D处查找的路线已查找结束。
对第一条路线分组进行组内查找,即路线顶点S→顶点A→顶点B→顶点C→顶点D。确定第二顶点A,以第二顶点A为起点,按照索引值大小的顺序按序进行路线查找。在该路线分组内,顶点A依赖于顶点B和顶点C,其中顶点B依赖于顶点C,顶点C依赖于顶点D,可得到的路线如下:顶点A→顶点B→顶点C→顶点D和顶点A→顶点C→顶点D。以顶点B为起点,按照矩阵索引值大小的顺序按序进行路线查找。在该路线分组内,顶点B依赖于顶点C,顶点C依赖于顶点D,可得到的路线如下:顶点B→顶点C→顶点D。以顶点C为起点,按矩阵索引值大小的顺序按序进行路线查找。在该路线分组内,顶点C依赖于顶点D,可得到的路线如下:顶点C→顶点D。当查找到顶点D时,顶点D没有依赖关系,因此,在该路线分组内各顶点间没有循环依赖关系。
接下来对第二条路线分组进行组内查找,即路线顶点S→顶点A→顶点B→顶点C→顶点E。确定第二顶点A,以第二顶点A为起点,按矩阵索引值大小的顺序按序进行路线查找。在该路线分组内,顶点A依赖于顶点B和顶点C,其中顶点B依赖于顶点C,顶点C依赖于顶点E。可得到的路线如下:顶点A→顶点B→顶点C→顶点E和顶点A→顶点C→顶点E。以顶点B为起点,按矩阵索引值大小的顺序按序进行路线查找。在该路线分组内,顶点B依赖于顶点C,顶点C依赖于顶点E,可得到的路线如下:顶点B→顶点C→顶点E。以顶点C为起点,按矩阵索引值大小的顺序按序进行路线查找。在该路线分组内,顶点C依赖于顶点E,可得到的路线如下:顶点C→顶点E。
当查找到顶点E时,顶点E与顶点S之间存在依赖关系,也就是说顶点E依赖于顶点S,而顶点S为第一顶点,此时说明该路线分组已经完成一次遍历。并且,在路线查找过程中,阻塞第一顶点S开头的基本路径,即当查找到顶点S后,顶点S→顶点A→顶点B→顶点C→顶点E的基本路径被阻塞,此时可以避免重复路线。因此,在该路线分组中包含循环依赖关系如下:顶点S→顶点A→顶点B→顶点C→顶点E→顶点S、顶点S→顶点A→顶点C→顶点E→顶点S和顶点S→顶点C→顶点E→顶点S。
用同样的查找方法对剩余路线分组进行组内路线查找,在进行路线查找时,对从第二顶点到第一顶点的每条路线都阻塞在第一顶点以外的顶点处,与当前基本路线相交。按如上路线查找方式对每条路线分组进行组内查找,最终查找到的所有的循环依赖关系如下:顶点S→顶点A→顶点B→顶点C→顶点E→顶点S、顶点S→顶点A→顶点C→顶点E→顶点S和顶点S→顶点C→顶点E→顶点S三组循环依赖关系。需要说明的是,上述举例中的路线分组表示依赖关系分组。
步骤S106:输出待分析交付物之间的循环依赖关系。
在本申请的一个实施例中,上述查找通过堆栈程序实现。将访问过的每一个顶点和路线均保存在堆栈中,在查找过程中,对新添加的顶点暂停并放在堆栈里,通过调用递归过程附加到基本路线上,并在返回时删除该顶点。
在本申请的一个实施例中,将第二顶点添加到路线中时,对该顶点设置阻止,对其进行阻止操作的原因在于该顶点可能存在依赖关系。以第二顶点为起点虽然是一条新的路线的开始,但第二顶点可能被其他顶点依赖,因此对其进行阻止操作,以用于找到所有的循环依赖关系,为后续解除依赖提供帮助。以图3中的依赖关系图为例,在步骤S104所列举的第一条路线分组内顶点S→顶点A→顶点B→顶点C→顶点D,当确定顶点C为第二顶点时,对顶点C设置阻止,原因在于顶点C虽然是路线顶点C→顶点D的起点,依赖于顶点D,但从图3中可以看到顶点C还被顶点A和顶点S依赖并依赖于顶点E,在与顶点A、顶点S和顶点E有关的路线中还需要顶点C。
在本申请的一个实施例中,对第二顶点的解锁始终是充分延迟的,不一定即刻解锁并从堆栈释放。需要说明的是,在本申请提供的实施例中,查找过程通过堆栈程序实现,在查找时将访问过的顶点和路线放在堆栈中;也就是说,在确定第二顶点为起点的路径时,需要将第二顶点和路径放到堆栈中再释放。第二顶点是该路径的起点,但是第二顶点可能是其它路径上的某个位置处的顶点,即被其他顶点所依赖,此时对第二顶点不能立即解锁释放,应暂时存在堆栈中以用于依赖第二顶点的其他顶点对应的循环依赖关系调用。
在本申请的一个实施例中,输出待分析交付物的分析结果,基于上述算法输出待分析交付物之间存在的所有循环依赖关系。
本申请提出的实施例通过建立依赖关系邻接矩阵确定待分析交付物之间的循环依赖关系,提高了检测效率,增强检测结果的准确性;另外,根据路线查找结果进行分组,得到依赖关系分组并在依赖关系分组中进行循环依赖关系查找,每条路线查找不重复,并且可以找到所有的循环依赖关系,进一步保证了检测结果的准确性。
本申请实施例还提供了一种交付物循环依赖的分析装置,图4给出了一种交付物循环依赖的分析装置的结构示意图。如图4所示,交付物循环依赖的分析装置包括矩阵建立单元402和关系确定单元404,其中矩阵建立单元402用于建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;关系确定单元404用于基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
本申请实施例还提供了一种交付物循环依赖的分析设备,图5为本申请实施例提供的一种交付物循环依赖的分析设备的结构示意图,设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
本申请实施例提供的一种存储介质,存储有计算机可执行指令,其特征在于,计算机可执行指令设置为:建立待分析交付物的依赖关系邻接矩阵,其中,依赖关系邻接矩阵用于表示待分析交付物之间的依赖关系;基于依赖关系邻接矩阵判定待分析交付物之间是否存在循环依赖关系,若是,则输出待分析交付物中所有循环依赖关系。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述仅为本说明书的一个或多个实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书的一个或多个实施例可以有各种更改和变化。凡在本说明书的一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
- 一种交付物循环依赖的分析方法、装置、设备及存储介质
- 服务依赖分析方法、电子设备及存储介质