最短路径的确定方法和装置、存储介质、电子装置、计算机程序产品与流程
- 国知局
- 2024-09-14 14:37:23
本技术涉及计算机领域,具体而言,涉及一种最短路径的确定方法和装置、存储介质、电子装置、计算机程序产品。
背景技术:
1、在汽车计算流体动力学(computational fluid dynamics,简称为cfd)仿真分析中,一般使用三角网格模型作为导入文件,经过一系列前处理操作对模型进行网格质量优化后,进入下一步的求解分析。在前处理过程中,会频繁进行几何对象(例如节点、边、三角面片)的选择操作,以备对所选的对象进行修复或者优化,在某些特定情况下,需要选择两个节点之间路径最短的所有节点。
2、从一个节点到另一个节点的最短路径问题属于单源最短路径问题,相关技术中,处理该类问题的经典算法是迪杰斯特拉(dijkstra)算法,它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。dijkstra算法能够得出最短路径的最优解,但由于它是基于遍历线性数组的方式查找最短距离,需要计算的节点很多,同时汽车网格模型形状复杂,模型节点数量巨大,算法时间复杂度为o(n*n),所以无法精准高效的完成选择,效率较低,不能满足基于整车大模型的前处理修补场景的需求。
3、针对相关技术中,确定最短路径效率较低的问题,尚未提出有效的解决方案。
技术实现思路
1、本技术实施例提供了一种最短路径的确定方法和装置、存储介质、电子装置、计算机程序产品,以至少解决确定最短路径效率较低的问题。
2、根据本技术实施例的一方面,提供了一种最短路径的确定方法,包括:从目标拓扑结构中的n个节点中确定起始节点和终点节点,并将所述起始节点添加至二叉堆容器中,其中,所述目标拓扑结构用于指示所述n个节点之间连接关系;循环执行以下操作,并在退出循环的条件是二叉堆容器为空的情况下,确定所述起始节点和所述终点节点之间不存在最短路径,在退出循环的条件是目标节点为所述终点节点的情况下,根据目标节点与所述起始节点的距离之间的计算方式确定所述起始节点和终点节点之间的最短路径:将所述二叉堆容器中距离所述起始节点最近的节点确定为目标节点,并在所述二叉堆容器中删除所述目标节点,其中,在所述二叉堆容器中仅具有所述起始节点的情况下,将所述起始节点确定为目标节点;在存在参考节点集合、且从所述参考节点集合中确定出中间节点集合的情况下,将所述中间节点集合加入至所述二叉堆容器中,其中,所述参考节点集合中的节点为所述n个节点中满足预设条件的节点,所述预设条件包括:在历史时间未被标记为目标节点、且不为所述终点节点;所述中间节点集合中的节点与所述目标节点相邻,所述中间节点集合中的每个节点与所述起始节点的距离基于所述目标节点与所述起始节点的距离确定,所述二叉堆容器中的孩子节点与所述起始节点之间的距离大于所述孩子节点对应的父节点与所述起始节点之间的距离;在所述二叉堆容器为空或者所述目标节点为所述终点节点的情况下,退出循环。
3、在一个示例性实施例中,将所述中间节点集合加入至所述二叉堆容器中之前,所述方法还包括:通过以下方式确定所述中间节点集合中的第i个节点与所述起始节点之间的距离,以确定所述中间节点集合中的每个节点与所述起始节点之间的距离:确定所述第i个节点与所述目标节点之间的距离,得到第一距离;将所述第一距离加上第二距离,得到所述第i个节点与所述起始节点之间的距离,其中,所述第二距离为所述目标节点与起始节点之间的距离。
4、在一个示例性实施例中,在所述二叉堆容器中删除所述目标节点之后,所述方法还包括:在所述二叉堆容器中还存在节点的情况下,将所述二叉堆容器中编号最大的节点移动至所述二叉堆容器的目标位置,并循环执行以下操作,其中,所述目标位置为在所述二叉堆容器中删除所述目标节点之前,所述目标节点在所述二叉堆容器中的位置,所述二叉堆容器中的孩子节点的编号大于所述孩子节点对应的父节点的编号,所述二叉堆容器中同一层的节点的编号从左往右依次增大:在所述二叉堆容器中存在第一节点和第二节点的情况下,在所述二叉堆容器中交换所述第一节点和所述第二节点的位置,其中,所述第二节点为所述二叉堆容器中位于所述第一节点的上一层的节点,所述第一节点和所述第二节点相连,所述第一节点与所述起始节点之间的距离小于所述第二节点与所述起始节点之间的距离;在所述二叉堆容器中不存在第一节点和第二节点的情况下,退出循环。
5、在一个示例性实施例中,将所述中间节点集合加入至所述二叉堆容器中,包括:在所述二叉堆容器中具有所述中间节点集合中的第i个节点的情况下,对所述二叉堆容器中记录的所述第i个节点与所述起始节点之间的距离进行更新;在所述二叉堆容器中不具有所述中间节点集合中的第i个节点的情况下,通过以下方式将所述中间节点集合中的第i个节点加入至所述二叉堆容器中:将第i个节点移动至所述二叉堆容器的指定位置,并循环执行以下操作,其中,在将所述第i个节点移动至所述指定位置之后,所述第i个节点在所述二叉堆容器中编号最大,所述二叉堆容器中的孩子节点的编号大于所述孩子节点对应的父节点的编号,所述二叉堆容器中同一层的节点的编号从左往右依次增大:在所述二叉堆容器中存在第一节点和第二节点的情况下,在所述二叉堆容器中交换所述第一节点和所述第二节点的位置,其中,所述第二节点为所述二叉堆容器中位于所述第一节点的上一层的节点,所述第一节点和所述第二节点相连,所述第一节点与所述起始节点之间的距离小于所述第二节点与所述起始节点之间的距离;在所述二叉堆容器中不存在第一节点和第二节点的情况下,退出循环。
6、在一个示例性实施例中,对所述二叉堆容器中记录的所述第i个节点与所述起始节点之间的距离进行更新,包括:在所述中间节点集合中的所述第i个节点与所述起始节点之间的距离小于所述二叉堆容器中记录的所述第i个节点与所述起始节点之间的距离的情况下,使用所述中间节点集合中的所述第i个节点与所述起始节点之间的距离更新所述二叉堆容器中记录的所述第i个节点与所述起始节点之间的距离;其中,在所述中间节点集合中的所述第i个节点与所述起始节点之间的距离大于或等于所述二叉堆容器中记录的所述第i个节点与所述起始节点之间的距离的情况下,不对所述二叉堆容器中记录的所述第i个节点与所述起始节点之间的距离进行更新。
7、在一个示例性实施例中,根据目标节点与所述起始节点之间的距离的计算方式确定所述起始节点和终点节点之间的最短路径,包括:在所述起始节点与终点节点相邻的情况下,确定所述起始节点和终点节点之间的最短路径为(起始节点-终点节点);在所述起始节点与终点节点不相邻、且所述目标节点与所述起始节点之间的距离等于第一目标距离...加上第p-1目标距离加上第p目标距离的情况下,确定所述起始节点和终点节点之间的最短路径为(起始节点-第一目标节点...-第p-1目标节点-第p目标节点-终点节点);其中,所述第一目标距离为所述起始节点与所述第一目标节点之间的距离,所述第p-1目标距离为所述第p-1目标节点与所述第p目标节点之间的距离,所述第p目标距离为所述第p目标节点与所述终点节点之间的距离,所述起始节点与所述第一目标节点相邻,所述第p-1目标节点与所述第p目标节点相邻,所述第p目标节点与所述终点节点相邻,p为大于0的正整数,第0目标节点为所述第一目标节点,第0目标距离为所述第一目标距离。
8、根据本技术实施例的另一方面,还提供了一种最短路径的确定装置,包括:第一确定模块,用于从目标拓扑结构中的n个节点中确定起始节点和终点节点,并将所述起始节点添加至二叉堆容器中,其中,所述目标拓扑结构用于指示所述n个节点之间连接关系;第二确定模块,用于循环执行以下操作,并在退出循环的条件是二叉堆容器为空的情况下,确定所述起始节点和所述终点节点之间不存在最短路径,在退出循环的条件是目标节点为所述终点节点的情况下,根据目标节点与所述起始节点的距离之间的计算方式确定所述起始节点和终点节点之间的最短路径:将所述二叉堆容器中距离所述起始节点最近的节点确定为目标节点,并在所述二叉堆容器中删除所述目标节点,其中,在所述二叉堆容器中仅具有所述起始节点的情况下,将所述起始节点确定为目标节点;在存在参考节点集合、且从所述参考节点集合中确定出中间节点集合的情况下,将所述中间节点集合加入至所述二叉堆容器中,其中,所述参考节点集合中的节点为所述n个节点中满足预设条件的节点,所述预设条件包括:在历史时间未被标记为目标节点、且不为所述终点节点;所述中间节点集合中的节点与所述目标节点相邻,所述中间节点集合中的每个节点与所述起始节点的距离基于所述目标节点与所述起始节点的距离确定,所述二叉堆容器中的孩子节点与所述起始节点之间的距离大于所述孩子节点对应的父节点与所述起始节点之间的距离;在所述二叉堆容器为空或者所述目标节点为所述终点节点的情况下,退出循环。
9、根据本技术实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述最短路径的确定方法。
10、根据本技术实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的最短路径的确定方法。
11、根据本技术实施例的又一方面,还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本技术各个实施例中所述方法的步骤。
12、在本技术实施例中,从目标拓扑结构中确定起始节点和终点节点,并将起始节点添加至二叉堆容器中,循环以下操作,并在退出循环的条件是目标节点为所述终点节点的情况下,根据目标节点与所述起始节点的距离之间的计算方式确定所述起始节点和终点节点之间的最短路径:将所述二叉堆容器中距离所述起始节点最近的节点确定为目标节点,并在所述二叉堆容器中删除所述目标节点;在存在参考节点集合、且从所述参考节点集合中确定出中间节点集合的情况下,将所述中间节点集合加入至所述二叉堆容器中,在所述二叉堆容器为空或者所述目标节点为所述终点节点的情况下,退出循环。由于在确定最短路径的过程中使用了二叉堆容器,提升了查找效率,减少了计算机的工作量,从而解决了确定最短路径效率较低的问题,优化了计算机的系统性能。
本文地址:https://www.jishuxx.com/zhuanli/20240914/295111.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表