基于深度优先搜索的优化算法的全排列方法及装置与流程

文档序号:27263377发布日期:2021-11-05 22:53阅读:432来源:国知局
基于深度优先搜索的优化算法的全排列方法及装置与流程

1.本发明涉及人工智能、大数据等技术领域,尤其涉及一种基于深度优先搜索优化算法的全排列方法及装置。


背景技术:

2.在进行全排列时,有一种方法是使用深度优先搜索算法,来遍历待排列节点的连通图,而在深度优先搜索的特定场景下——待排列节点组成的连通图内的节点有重复。使用传统的深度优先搜索算法,得到的排列结果会有重复,这时要加一步去重,这样大大降低了全排列的效率。


技术实现要素:

3.本发明实施例提出一种基于深度优先搜索的优化算法的全排列方法,用以提高全排列中连通图的遍历效率,进而提高全排列效率,该方法包括:
4.获取用于全排列的第一连通图;
5.对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;
6.根据所述统计数,遍历所述第二连通图,获得遍历结果;
7.基于所述遍历结果,获得全排列结果。
8.本发明实施例提出一种基于深度优先搜索优化算法的全排列装置,用以提高全排列中连通图的遍历效率,进而提高全排列效率,该装置包括:
9.第一连通图获得模块,用于获取用于全排列的第一连通图;
10.第二连通图构建模块,用于对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;
11.遍历模块,用于根据所述统计数,遍历所述第二连通图,获得遍历结果;
12.全排列结果获得模块,用于基于所述遍历结果,获得全排列结果。
13.本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于深度优先搜索的优化算法的全排列方法。
14.本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述基于深度优先搜索的优化算法的全排列方法的计算机程序。
15.在本发明实施例中,获取用于全排列的第一连通图;对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;根据所述统计数,遍历所述第二连通图,获得遍历结果;基于所述遍历结果,获得全排列结果。在上述
过程中,将搜索空间内的节点分类,对于搜索结果无差异的一组节点看作一类,然后搜索空间的搜索点变成各类节点,而不是各个节点,从而提高了全排列中连通图的遍历效率,进而提高全排列效率。
附图说明
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
17.图1为本发明实施例中基于深度优先搜索的优化算法的全排列方法的流程图;
18.图2为本发明实施例中循环遍历步骤的流程图;
19.图3

图22分别为本发明实施例中进行深度搜索的流程分步骤图;
20.图23为本发明实施例中基于深度优先搜索的优化算法的全排列装置的示意图;
21.图24为本发明实施例中计算机设备的示意图。
具体实施方式
22.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
23.在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本技术的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
24.图1为本发明实施例中基于深度优先搜索的优化算法的全排列方法的流程图,如图1所示,该方法包括:
25.步骤101,获取用于全排列的第一连通图;
26.步骤102,对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;
27.步骤103,根据所述统计数,遍历所述第二连通图,获得遍历结果;
28.步骤104,基于所述遍历结果,获得全排列结果。
29.在上述实施例中,将搜索空间内的节点分类,对于搜索结果无差异的一组节点看作一类,然后搜索空间的搜索点变成各类节点,而不是各个节点,从而提高了全排列中连通图的遍历效率,进而提高全排列效率。
30.在一实施例中,根据所述统计数,遍历所述第二连通图,获得遍历结果,包括:
31.对第二连通图中的所有第二顶点按照预设规则进行排序,获得第一排序后的第一
排序顶点集合;
32.对第一排序顶点集合的所有第二顶点执行循环遍历步骤,直至所有第二顶点选择完毕,获得遍历结果。
33.图2为本发明实施例中循环遍历步骤的流程图,在一实施例中,所述循环遍历步骤包括:
34.步骤1,从第一排序顶点集合的所有第二顶点中选择一个第二顶点作为当前顶点执行如下步骤2,直至所有第二顶点选择完毕:
35.步骤2,将当前顶点标记的统计数减一;
36.步骤3,将当前顶点及当前顶点的后邻接点中统计数大于零的所有第二顶点按照预设规则排序,获得第二排序后的第二排序顶点集合,所述后邻接点为从当前顶点能够直接到达的第二顶点;
37.步骤4,从第二排序顶点集合中选择一个第二顶点作为当前顶点,返回步骤2,若满足回退条件,进行回退操作,重复步骤4;若当前顶点不存在上一个第二顶点,返回步骤1;若满足遍历结束条件,确定一次遍历结束,记录遍历结果,进行回退操作,重复步骤4。
38.在一实施例中,所述回退条件为第二排序顶点集合中的最后一个第二顶点的统计数为零;
39.所述遍历结束条件为第二排序顶点集合中的所有第二顶点的统计数为零;
40.所述回退操作为将当前顶点的统计数加1,确定当前顶点为当前顶点的上一个第二顶点。
41.需要说明的是,本发明实施例提出的方法也可用于大数据等需要用到全排列的技术领域。
42.下面给出两个具体实施例来说明本发明实施例提出的方法的应用。
43.实施例一
44.假设某条路路边要植树绿化,现有a,b,c,d四种树各2,4,3,4棵,要求相同的树不能相临,给出一种植树规划。其中,a种树有两棵,属于对于遍历结果无差异化的第一顶点。
45.对第一顶点分类,显然是a,b,c,d四类树,统计数num分别为2,4,3,4,形成4个第二顶点。
46.对第二顶点排序,就按照a,b,c,d的顺序排。
47.选择a为当前顶点,即选种a,a的统计数num

1=1。
48.由于要求相同的树不能相临,所以只能从当前顶点的后邻接点中选择下一个第二顶点,即从b,c,d中选,根据顺序先判断b,b的统计数num>0所以选择b为当前顶点b的统计数num

1=3。
49.从a,c,d中选下一个第二顶点,选a,a的统计数num

1=0。
50.从b,c,d中选下一个第二顶点,选b,b的统计数num

1=2。
51.从a,c,d中选下一个第二顶点,因为a的统计数num=0,所以选c,c的统计数num

1=2。
52.从a,b,d中选下一个第二顶点,因为a的统计数num=0,所以选b,b的统计数num

1=1。
53.与上同理,依次选c(c的统计数num

1=1),b(b的统计数num

1=0),c(c的统计数
num

1=0),d(d的统计数num

1=3),到这里发现已经没有可以选择的顶点了,只为只剩下d一种树,而相同的树不能相临,所以开始回退,如表1所示。
54.表1
[0055][0056]
d的统计数num+1=4回到c,c还是只能选d所以再回退,c的统计数num+1=1回到b,刚才b在a,c,d中选择了c,这次选择d,d的统计数num

1=3。
[0057]
下一个第二顶点因为a和b两种树都用光了,所以只能选c,c的统计数num

1=0。
[0058]
下一个第二顶点只能选d,d的统计数num

1=2,现在又只剩下树种d了,所以再回退,如下表2所示。
[0059]
表2
[0060][0061]
d的统计数num+1=3,c的统计数num+1=1,d的统计数num+1=4,b的统计数num+1=1,回退到c,刚才到这里c的下一种树选的b,现在选排序中下一顺位的d,d的统计数num

1=3。
[0062]
后面的步骤不再赘述,下面表3给出最后形成的一种可行方案,及遍历结果,基于该遍历结果即可进行多棵树的全排列。
[0063]
表3
[0064][0065]
实施例二
[0066]
假设有一个搜索空间是由4个顶点组成的连通图的不同遍历顺序,其中有两个顶点完全相同,使用1,2,2,3来指代这4个顶点。根据本发明方法,第一步是将4个顶点分类,很明显可以分为三类:1,2,3,其中“2”这一类有两个第一顶点。图3

图22分别为本发明实施例中进行深度搜索的流程分步骤图,其中,每个记录结果为一个遍历结果,共给出了3种遍历结果,分别为
①②②③

①②③②

①③②②
,图22后续可以继续进行遍历,从而得到更多结果。
[0067]
综上所述,在本发明实施例提出的方法中,获取用于全排列的第一连通图;对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;根据所述统计数,遍历所述第二连通图,获得遍历结果;基于所述遍历结果,获得全排列结果。在上述过程中,将搜索空间内的节点分类,对于搜索结果无差异的一组节点看作一类,然后搜索空间的搜索点变成各类节点,而不是各个节点,从而提高了全排列中连通图的遍历效率,进而提高全排列效率。
[0068]
本发明实施例还提出一种基于深度优先搜索的优化算法的全排列装置,其原理与基于深度优先搜索的优化算法的全排列方法类似,这里不再赘述。
[0069]
图23为本发明实施例中基于深度优先搜索的优化算法的全排列装置的示意图,如图23所示,包括:
[0070]
第一连通图获得模块2301,用于获取用于全排列的第一连通图;
[0071]
第二连通图构建模块2302,用于对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;
[0072]
遍历模块2303,用于根据所述统计数,遍历所述第二连通图,获得遍历结果;
[0073]
全排列结果获得模块2304,用于基于所述遍历结果,获得全排列结果。
[0074]
在一实施例中,遍历模块,包括:
[0075]
排序模块,用于对第二连通图中的所有第二顶点按照预设规则进行排序,获得第一排序后的第一排序顶点集合;
[0076]
循环遍历模块,用于对第一排序顶点集合的所有第二顶点执行循环遍历步骤,直至所有第二顶点选择完毕,获得遍历结果。
[0077]
在一实施例中,所述循环遍历步骤包括:
[0078]
步骤1,从第一排序顶点集合的所有第二顶点中选择一个第二顶点作为当前顶点执行如下步骤2,直至所有第二顶点选择完毕:
[0079]
步骤2,将当前顶点标记的统计数减一;
[0080]
步骤3,将当前顶点及当前顶点的后邻接点中统计数大于零的所有第二顶点按照预设规则排序,获得第二排序后的第二排序顶点集合,所述后邻接点为从当前顶点能够直接到达的第二顶点;
[0081]
步骤4,从第二排序顶点集合中选择一个第二顶点作为当前顶点,返回步骤2,若满足回退条件,进行回退操作,重复步骤4;若当前顶点不存在上一个第二顶点,返回步骤1;若满足遍历结束条件,确定一次遍历结束,记录遍历结果,进行回退操作,重复步骤4。
[0082]
在一实施例中,所述回退条件为第二排序顶点集合中的最后一个第二顶点的统计数为零;
[0083]
所述遍历结束条件为第二排序顶点集合中的所有第二顶点的统计数为零;
[0084]
所述回退操作为将当前顶点的统计数加1,确定当前顶点为当前顶点的上一个第二顶点。
[0085]
综上所述,在本发明实施例提出的装置中,获取用于全排列的第一连通图;对所述第一连通图中对于遍历结果无差异化的第一顶点归为一类顶点,将一类顶点作为一个第二顶点,构建第二连通图,标记每个第二顶点的统计数,所述统计数为第二顶点拥有的第一顶点的个数;根据所述统计数,遍历所述第二连通图,获得遍历结果;基于所述遍历结果,获得全排列结果。在上述过程中,将搜索空间内的节点分类,对于搜索结果无差异的一组节点看作一类,然后搜索空间的搜索点变成各类节点,而不是各个节点,从而提高了全排列中连通图的遍历效率,进而提高全排列效率。
[0086]
本发明的实施例还提供一种计算机设备,图24为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的基于深度优先搜索的优化算法的全排列方法中全部步骤,所述计算机设备具体包括如下内容:
[0087]
处理器(processor)2401、存储器(memory)2402、通信接口(communications interface)2403和通信总线2404;
[0088]
其中,所述处理器2401、存储器2402、通信接口2403通过所述通信总线2404完成相
互间的通信;所述通信接口2403用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
[0089]
所述处理器2401用于调用所述存储器2402中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的基于深度优先搜索的优化算法的全排列方法中的全部步骤。
[0090]
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的基于深度优先搜索的优化算法的全排列方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的基于深度优先搜索的优化算法的全排列方法的全部步骤。
[0091]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0092]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0093]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0094]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0095]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1