CN112835943A - 一种深度优先搜索算法的优化方法 - Google Patents
一种深度优先搜索算法的优化方法 Download PDFInfo
- Publication number
- CN112835943A CN112835943A CN202110183255.6A CN202110183255A CN112835943A CN 112835943 A CN112835943 A CN 112835943A CN 202110183255 A CN202110183255 A CN 202110183255A CN 112835943 A CN112835943 A CN 112835943A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- neighboring
- visited
- adjacent
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种深度优先搜索算法的优化方法,在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于1时:计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和;根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。本发明的深度优先搜索算法的优化方法有效提高搜索效率,缩短遍历总的路径。
Description
技术领域
本发明涉及深度优先搜索算法,具体涉及一种深度优先搜索算法的优化方法。
背景技术
深度优先搜索算法在图的遍历中作为一种成熟的算法已经被广泛使用,深度优先搜索算法基本流程为,首先从图中某个节点出发,然后依次从相邻的节点出发深度优先遍历,直至图中所有与路径想通的节点都被访问。若此时尚有节点未被访问,则从中选一个节点作为起点,重复上述过程,直到所有的顶点都被访问。在传统的深度优先搜索算法中,若某个节点包含多个未被访问的节点,一般按照节点编号从小到大依次选择节点作为下一跳节点,算法中对下一跳节点的选择做出的判断往往不是最优的,这就导致了当遍历完所有节点时,总的路径不是最短的。由此本发明提出一种提高搜索效率,缩短遍历总的路径的深度优先搜索算法的优化方法。
发明内容
针对上述现有技术存在的问题,本发明提供了一种深度优先搜索算法的优化方法,通过对于根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点,以提高搜索效率,缩短遍历总的路径。
本发明的一种深度优先搜索算法的优化方法的技术方案如下:在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:
获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于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的相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最大的相邻节点作为第三节点。
在确定第二节点的一个相邻节点作为下一访问节点即第三节点后,将该第二节点作为新的第一节点,该第三节点作为新的第二节点,继续采用本发明实施例提供的第三点确定方法,依次循环直至图中所有节点均被访问过,得到该图的所有节点的访问路径。本发明实施例提出的第三节点确定方法,可以有效的缩短搜索总路径,提高搜索效率。
下面通过现有技术中的深度优先搜索算法和本发明实施例提出的深度优先搜索算法的优化方法的搜索路径结果进行比较说明:
选择一个包含26个节点的无向有权图进行验证,如图2所示,分别计算优化前后的两种路径,第一种采用现有技术中的深度优先搜索算法的路径搜索方法,即默认使用小节点编号作为下一跳节点,第二种使用本发明实施例提供的深度优先搜索算法的优化方法,假定起始点为22号节点,结果如下:
第一种:
[22,20,19,2,1,2,4,23,24,9,25,26,15,18,16,13,11,10,12,15,26,25,17,8,6,14,6,3,5,7,5,3,2,4,21]
第二种:
[22,20,19,2,1,2,3,5,7,5,3,6,10,11,13,16,18,15,12,15,26,25,9,24,23,4,21,4,23,24,9,25,17,8,17,25,26,15,18,16,13,11,15,11,10,12,10,6,14,6,6,3,2,2,19,20,22]
从计算结果可以看出使用本文提出的优化策略,需要35步完成所有节点的遍历,而未进行优化遍历整个图需要57步。搜索效率有了明显的提高。
本发明不局限于上述具体的实施方式,本领域的普通技术人员从上述构思出发,不经过创造性的劳动,所做出的种种变换,均落在本发明的保护范围之内。
Claims (8)
1.一种深度优先搜索算法的优化方法,其特征在于,在由第一节点访问到第二节点后,由第二节点选择第三节点进行访问时,第三节点的确定方法包括:
获取第二节点的所有非第一节点的相邻节点,当第二节点的所有非第一节点的相邻节点的个数大于1时:
计算每个非第一节点的相邻节点到图中所有未被访问过的节点的最短距离总和;
根据第二节点的所有非第一节点的相邻节点的被访问次数分布情况,确定所述最短距离总和满足的条件,将满足条件的相邻节点作为第三节点。
2.根据权利要求1所述的一种深度优先搜索算法的优化方法,其特征在于,所述获取第二节点的所有非第一节点的相邻节点之前,还包括:
根据无向有权图的标注,获取图中任意两个节点之间的最短距离。
3.根据权利要求1所述的一种深度优先搜索算法的优化方法,其特征在于,当第二节点的所有非第一节点的相邻节点的个数小于等于1时:
若第二节点的所有非第一节点的相邻节点的个数为0,则第一节点作为第三节点;
若第二节点的所有非第一节点的相邻节点的个数为1,则非第一节点的相邻节点作为第三节点。
4.根据权利要求1所述的一种深度优先搜索算法的优化方法,其特征在于,所述第二节点的所有非第一节点的相邻节点的被访问次数分布情况,包括:
被访问次数为0的相邻节点个数为0;
被访问次数为0的相邻节点个数为1;
被访问次数为0的相邻节点个数为大于1。
5.根据权利要求4所述的一种深度优先搜索算法的优化方法,其特征在于,当第二节点的所有非第一节点的相邻节点中,被访问次数为0的相邻节点个数为0时,在非第一节点的多个相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最小的相邻节点作为第三节点。
6.根据权利要求3所述的一种深度优先搜索算法的优化方法,其特征在于,当第二节点的所有非第一节点的相邻节点中,被访问次数为0的相邻节点个数为1时,所述被访问次数为0的唯一相邻节点作为第三节点。
7.根据权利要求3所述的一种深度优先搜索算法的优化方法,其特征在于,当第二节点的所有非第一节点的相邻节点中,被访问次数为0的相邻节点个数大于1时,则在所有被访问次数为0的相邻节点中,满足到图中所有未被访问过的节点的最短距离总和最大的相邻节点作为第三节点。
8.根据权利要求1-7任一所述的一种深度优先搜索算法的优化方法,其特征在于,在整个算法过程中,每个节点被访问的时候都要记录被访问信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110183255.6A CN112835943A (zh) | 2021-02-08 | 2021-02-08 | 一种深度优先搜索算法的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110183255.6A CN112835943A (zh) | 2021-02-08 | 2021-02-08 | 一种深度优先搜索算法的优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835943A true CN112835943A (zh) | 2021-05-25 |
Family
ID=75933503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110183255.6A Pending CN112835943A (zh) | 2021-02-08 | 2021-02-08 | 一种深度优先搜索算法的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835943A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610234A (zh) * | 2021-08-11 | 2021-11-05 | 中国银行股份有限公司 | 基于深度优先搜索的优化算法的全排列方法及装置 |
-
2021
- 2021-02-08 CN CN202110183255.6A patent/CN112835943A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610234A (zh) * | 2021-08-11 | 2021-11-05 | 中国银行股份有限公司 | 基于深度优先搜索的优化算法的全排列方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378413A (zh) | 神经网络模型处理方法、装置以及电子设备 | |
CN109255054B (zh) | 一种基于关系权重的企业图谱中的社区发现方法 | |
JPH06311162A (ja) | 遠距離通信ネットワーク及び最小コストのパスを見つける検索配置 | |
CN110312206A (zh) | 基于动态空间阈值改进的手机信令数据出行识别方法 | |
CN112835943A (zh) | 一种深度优先搜索算法的优化方法 | |
CN113709754B (zh) | 基于聚类算法的无线宽带通信系统布站组网方法及系统 | |
JP4496245B2 (ja) | 広帯域無線通信システムにおけるセグメント再割当装置及び方法 | |
US20230101072A1 (en) | Nearest neighbour search method, encoder, decoder and storage medium | |
CN110445654B (zh) | 一种基于社区划分的社交网络多源谣言溯源方法及系统 | |
CN108833461B (zh) | 基于网络分解的社交网络关键节点发现方法及系统 | |
CN106034266B (zh) | 光路由的生成方法及装置 | |
CN114710817B (zh) | 水下网络数据传输路径确定方法、传输方法、装置及设备 | |
CN116366538A (zh) | 动态网络下的路径更新及等价路径规划方法及相关装置 | |
CN110543664B (zh) | 一种面向具有特有结构fpga的工艺映射方法 | |
CN110031017B (zh) | 一种车机多目标最优路径规划方法 | |
CN116456308B (zh) | 一种面向动态频谱环境的车联网分簇方法 | |
CN104753795A (zh) | 一种无规则网络拓扑结构生成方法及装置 | |
CN114998513B (zh) | 基于kd树的带循环边界的地球模拟系统网格重映射方法 | |
CN117591705B (zh) | 基于图搜索的分表关联方法及设备 | |
CN113516667A (zh) | 代价均衡的门级电路图的分割方法、计算机存储介质 | |
CN116107757A (zh) | 一种基于神经网络算子存活时间的内存分配方法及装置 | |
CN116596043B (zh) | 一种卷积神经网络计算方法、系统、电子设备和存储介质 | |
CN117240771A (zh) | 一种网络拓扑图路径获取系统及方法 | |
CN116501035A (zh) | 一种基于路径相似性的电动车辆路径规划方法 | |
CN117478597A (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 |