一种深度优先搜索算法的优化方法技术

技术编号:28558772 阅读:16 留言:0更新日期:2021-05-25 17:53
本发明专利技术公开了一种深度优先搜索算法的优化方法,在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于1时:计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和;根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。本发明专利技术的深度优先搜索算法的优化方法有效提高搜索效率,缩短遍历总的路径。

【技术实现步骤摘要】
一种深度优先搜索算法的优化方法
本专利技术涉及深度优先搜索算法,具体涉及一种深度优先搜索算法的优化方法。
技术介绍
深度优先搜索算法在图的遍历中作为一种成熟的算法已经被广泛使用,深度优先搜索算法基本流程为,首先从图中某个节点出发,然后依次从相邻的节点出发深度优先遍历,直至图中所有与路径想通的节点都被访问。若此时尚有节点未被访问,则从中选一个节点作为起点,重复上述过程,直到所有的顶点都被访问。在传统的深度优先搜索算法中,若某个节点包含多个未被访问的节点,一般按照节点编号从小到大依次选择节点作为下一跳节点,算法中对下一跳节点的选择做出的判断往往不是最优的,这就导致了当遍历完所有节点时,总的路径不是最短的。由此本专利技术提出一种提高搜索效率,缩短遍历总的路径的深度优先搜索算法的优化方法。
技术实现思路
针对上述现有技术存在的问题,本专利技术提供了一种深度优先搜索算法的优化方法,通过对于根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点,以提高搜索效率,缩短遍历总的路径。本专利技术的一种深度优先搜索算法的优化方法的技术方案如下:在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于1时:计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和;根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。作为上述方案的进一步优化,所述获取第二节点的所有非第一节点的相邻节点之前,还包括:根据无向有权图的标注,获取图中任意两个节点之间的最短距离。作为上述方案的进一步优化,当第二节点的所有非第一节点的相邻节点的个数小于等于1时:若第二节点的所有非第一节点的相邻节点的个数为0,则第一节点作为第三节点;若第二节点的所有非第一节点的相邻节点的个数为1,则非第一节点的相邻节点作为第三节点。作为上述方案的进一步优化,所述第二节点的所有非第一节点的相邻节点的被访问次数分布情况,包括:被访问次数为0的相邻节点个数为0;被访问次数为0的相邻节点个数为1;被访问次数为0的相邻节点个数为大于1。作为上述方案的进一步优化,当第二节点的所有非第一节点的相邻节点中,被访问次数为0的相邻节点个数为0时,在非第一节点的多个相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最小的相邻节点作为第三节点。作为上述方案的进一步优化,当第二节点的所有非第一节点的相邻节点中,被访问次数为0的相邻节点个数为1时,所述被访问次数为0的唯一相邻节点作为第三节点。作为上述方案的进一步优化,当第二节点的所有非第一节点的相邻节点中,被访问次数为0的相邻节点个数大于1时,则在所有被访问次数为0的相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最大的相邻节点作为第三节点。作为上述方案的进一步优化,在整个算法过程中,每个节点被访问的时候都要记录被访问信息。本专利技术的一种深度优先搜索算法的优化方法,具备的有益效果为:本专利技术通过在第二节点的相邻节点个数大于等于2时,优先选择第二节点的未被访问过的相邻节点作为第三节点,在第二节点的未被访问过的相邻节点大于1时,在所有未被访问过的相邻节点中选择到图中剩余未被访问的节点距离总和最大的相邻节点作为第三节点,在第二节点的所有相邻节点都被访问过的情况下,在所有相邻节点中选择到剩余未被访问的节点距离总和最小相邻节点作为第三节点,有效提高搜索效率,遍历完所有节点的距离总和最短。附图说明图1是本专利技术的一种深度优先搜索算法的优化方法的整体流程图;图2是本专利技术实施例应用的一个包含26个节点的无向有权图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述,所描述的实施例不应视为对本专利技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。本专利技术实施例提供的一种深度优先搜索算法的优化方法,在整个算法过程中,每个节点被访问的时候都要记录被访问信息,在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:根据无向有权图的标注,获取图中任意两个节点之间的最短距离,这里的任意两个节点之间的最短距离计算方法可采用弗洛伊德(Floyd)算法,对计算出的任意两个节点之间的最短距离进行储存,用于后面步骤调取;(1)获取第二节点的所有非第一节点的相邻节点;(11)当第二节点的所有非第一节点的相邻节点的个数小于等于1时:若第二节点的所有非第一节点的相邻节点的个数SUM1为0,则第一节点作为第三节点;若第二节点的所有非第一节点的相邻节点的个数SUM1为1,则非第一节点的相邻节点作为第三节点。(12)当第二节点的所有非第一节点的相邻节点的个数SUM1大于1时:计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和,该距离总和记为D,该步骤中,假设第二节点的非第一节点的相邻节点包括H1、H2、H3、H4,图中共计20个节点,其中20个节点中有A、B、C、D四个未被访问过的节点,则相邻节点H1到图中所有未被访问过的节点的最短距离总和D=H1到A的最短距离+H1到B的最短距离+H1到C的最短距离+H1到D的最短距离;根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。对于上述步骤(12),优先选择第二节点的未被访问过的相邻节点作为第三节点,在第二节点的未被访问过的相邻节点大于1时,在所有未被访问过的相邻节点中选择到图中剩余未被访问的节点距离总和最大的相邻节点作为第三节点,在第二节点的所有相邻节点都被访问过的情况下,在所有相邻节点中选择到剩余未被访问的节点距离总和最小相邻节点作为第三节点,具体的,上述步骤(12)为:当第二节点的所有非第一节点的相邻节点(相邻节点个数大于等于2)中,被访问次数为0的相邻节点个数SUM2等于0时,在非第一节点的多个相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最小的相邻节点作为第三节点;当第二节点的所有非第一节点的相邻节点(相邻节点个数大于等于2)中,被访问次数为0的相邻节点个数SUM2等于1时,该被访问次数为0的唯一相邻节点作为第三节点;当第二节点的所有非第一节点的相邻节点(相邻节点个数大于等于2)中,被访问次数为0的相邻节点个数SUM2大于1时,则在所有被访问次数为0的相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最大的相邻节点作为第三节点。在确定第二节点的一个相邻节点作为下一本文档来自技高网...

【技术保护点】
1.一种深度优先搜索算法的优化方法,其特征在于,在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:/n获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于1时:/n计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和;/n根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。/n

【技术特征摘要】
1.一种深度优先搜索算法的优化方法,其特征在于,在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:
获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于1时:
计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和;
根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。


2.根据权利要求1所述的一种深度优先搜索算法的优化方法,其特征在于,所述获取第二节点的所有非第一节点的相邻节点之前,还包括:
根据无向有权图的标注,获取图中任意两个节点之间的最短距离。


3.根据权利要求1所述的一种深度优先搜索算法的优化方法,其特征在于,当第二节点的所有非第一节点的相邻节点的个数小于等于1时:
若第二节点的所有非第一节点的相邻节点的个数为0,则第一节点作为第三节点;
若第二节点的所有非第一节点的相邻节点的个数为1,则非第一节点的相邻节点作为第三节点。


4.根据权利要求1所述的一种深度优先搜索算法的优化方法,其特征在于,所述第二节点的所有非...

【专利技术属性】
技术研发人员:陈锋胡春雷
申请(专利权)人:安徽职业技术学院
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1