本发明涉及路径算法领域,具体涉及一种基于夹角对比的多源路径最短距离算法。
背景技术:
1、多源最短路径算法是算法领域一个很常见的寻找全局最优策略问题,在平面中随机分配大量的点位,且点与点之间的距离已知,但是如何能从任意两点之中寻找出最最短路径,这就是我们要解决的问题,其核心思想是在每一步选择中都采取当前状态下最优的选择,以期望最后得到全局最优解。其发展历程可以追溯到上世纪50年代的早期首次提出了dijkstra算法也叫贪心算法,贪心算法是将所有的点都连接起来,通过连接的线路寻找一条最佳的路径,例如有n个点位,那么第一个点就要与n-1个点连接,第一个点连接完毕,第二个点就要与n-2个点相连以此类推,这种算法虽然准确度很高,但是它耗费时间巨大,往往随机的点越多,它的计算量越大。
2、常见的单源最短路径算法包括迪杰斯特拉算法和贝尔曼-福德算法,然而,这些算法需要在两个节点之间进行多次重复计算,因此效率较低。
3、相对于单源算法,多源最短路径算法能够利用节点之间的相互关系,从而减少计算量。下面介绍两种常见的多源最短路径算f1oyd算法和johnson算法。
4、f1oyd算法是一种动态规划算法,基于矩阵运算实现。其思想是通过中间节点逐步优化两个节点之间的距离。首先初始化-接矩阵,其中每一个元素表示两个节点之间的距离,若节点之间没有边,则距离为无穷大。
5、随着算法的选代,邻接矩阵中的元素逐渐发生变化,直到最终达到最短路径。具体实现方式如下:
6、1.初始化邻接矩阵。
7、2.对于每一对节点i和j,尝试通过节点k优化它们之间的距离,即将路线i->j改为i->k->j。
8、若新的路径更优,则更新矩阵中的距离值,即dist[i][i]=dist[i][k]+dist[k][i]。
9、3.重复2、3步骤,直至所有节点之间的最短路径被求出。
10、johmnson算法是一种利用贝尔曼-福德算法和迪杰斯特拉算法结合的方法,用于解决负权边问题。其基本思想是对图进行一次预处理,将每个节点的权值设为一个非负数,从而转化为正权边问题。然后利用迪杰斯特拉算法求解每个节点之间的最短路径,具体实现方式如下:
11、1.为图中的所有节点添加一个新的虚拟节点s,并将其与所有节点连接
12、2.对于原始图中的每一个边(ì,j),将其权值修改为w(i,i)+h(i)-h(;),其中h(i)表示从节点s到节点i的最短路径长度。
13、3.利用贝尔曼-福德算法求解从s出发到所有其他节点的最短路径。如果出现负权环,则算法失败。必利用迪杰斯特拉算法分别求解每对节点之间的最短路径,即aist[i][j]=dist[i][j]+h(j)-h(i)。
14、然而,这些算法需要在两个节点之间进行多次重复计算,因此效率较低,由于计算机的高速发展提升了这两种算法的计算效率,但是还需要从算法本身进行优化。
技术实现思路
1、本发明针对现有技术存在的问题,提供了一种基于夹角对比的多源路径最短距离算法。
2、为实现上述目的,本发明提供如下技术方案:
3、一种基于夹角对比的多源路径最短距离算法,涉及路径算法领域。所述方法包括如下步骤:s1在包含若干个随机分配点的平面内,确定平面内任意两点为起点和终点;s2起点和终点确定以后,基于贪心算法思想,平面内所有其它点位均与起点和终点进行角度对比,根据两点一线原理,寻找出最少一个等于或最接近180°的中间点;s3中间点位定下来以后,基于吸铁石思想,相邻之间的两个确定点会互相锁定对方所在的方位角度,通过不断增加搜索半径距离朝对方方位进行最佳点位搜索,将搜索到的新点位与自身点位、相邻的确定点位进行夹角对比,筛选出合适的点位进行连接;s4将连接的点位定为新的确定点,不断朝相邻的确定方向进行点位连接,直到所有确定点都连接在一起,形成最佳路径。
4、基于上述技术方案,更进一步地,在s2中由于随机点的位置是固定的,但是其余点与起点和终点是有角度差的,最理想点位就是呈180°,该点刚好位于两点之间的直线上,既这个点位确定为必选点,若寻找的点位没有呈现180°则选取最接近180°的点位为确定点,若有多个点位夹角度数一致,随机将其中一点确定为必选点,若有多个点位角度刚好呈180°则将这些点位全部确定为确定点。
5、基于上述技术方案,更进一步地,确定的点位会分别朝两边相邻确定点方向进行搜索,寻找到合适的点位进行连接,并将新连接到的点位定为新的确定点,之前的点位将不再进行搜索,当将连接后的点位定为确定点时,将之前点位记录的搜索半径距离清零,重新增加搜索半径距离来寻找下一个周围点的位置。
6、基于上述技术方案,更进一步地,通过不断增加搜索半径距离来寻找周围的点的位置,增加的距离单位以当前情况而定,当搜索到第一个点位时,记录它与起始点的距离,然后将它与起始点与中间点,做夹角对比,当夹角小于等于90°时,直接排除该点位,夹角对比角大于90°小于135°时,控制搜索半径范围,即以起始点与搜索到第一个点距离的1.5倍,夹角对比角大于且等于135°小于180°时,控制搜索半径范围,即以起始点与搜索到第一个点距离的1.2倍,当搜索范围半径达到所控制的值时,停止搜索,并将该范围内搜索的所有点位进行夹角对比,夹角最大的点位作为确定点,当搜索范围达到设定值时,并未搜索到有新的点位时,将搜索到的第一个点位定为确定点。
7、基于上述技术方案,更进一步地,在s3步骤进行时,起点和终点单方向向相邻的确定点进行最佳点位范围搜索,其余中间确定点各自分别向两边进行最佳点位范围搜索。
8、与现有技术相比,本发明具有如下有益效果:
9、(1)本发明采用夹角对比技术,只要确定平面内任意两点位置,马上可以显示出平面内所有点与这两个点的夹角,通过这种夹角对比,排出了大多不相干的点位,大大缩小了选择的范围,提高了算法的运行效率。
10、(2)本发明基于两点之间直线最短思想,在确定起点和终点以后,通过夹角对比,寻找出与这条直线重合的点位,或者最接近这条直线的点位,将这些点位定为中间点,基于吸铁石思想,这些确定点与确定点之间会相互吸引,自动会锁定相邻确定点的方位,各自不断朝相邻的确定方向进行点位连接,这种方法打破了传统算法以路找点的思想,改变了传统算法对所有点位挨个判断,逐步连接的思想,优化后的算法变成了点与点相互各自寻找彼此,大大缩短了时间。
11、(3)本发明通过确定中间点的思路来寻找最优策略,中间点位越多,寻找的最短路径就越快。
1.一种基于夹角对比的多源路径最短距离算法,其特征在于,所述方法包括如下步骤:s1在包含若干个随机分配点的平面内,确定平面内任意两点为起点和终点;s2起点和终点确定以后,基于贪心算法思想,平面内所有其它点位均与起点和终点进行角度对比,根据两点一线原理,寻找出最少一个等于或最接近180°的中间点;s3中间点位定下来以后,基于吸铁石思想,相邻之间的两个确定点会互相锁定对方所在的方位角度,通过不断增加搜索半径距离朝对方方位进行最佳点位搜索,将搜索到的新点位与自身点位、相邻的确定点位进行夹角对比,筛选出合适的点位进行连接;s4将连接的点位定为新的确定点,不断朝相邻的确定方向进行点位连接,直到所有确定点都连接在一起。
2.根据权利要求1所述的多源路径最短距离算法,其特征在于:在s2中由于随机点的位置是固定的,但是其余点与起点和终点是有角度差的,最理想点位就是呈180°,该点刚好位于两点之间的直线上,既这个点位确定为必选点,若寻找的点位没有呈现180°则选取最接近180°的点位为确定点,若有多个点位夹角度数一致,随机将其中一点确定为必选点,若有多个点位角度刚好呈180°则将这些点位全部确定为确定点。
3.根据权利要求1所述的多源路径最短距离算法,其特征在于:确定的点位会分别朝两边相邻确定点方向进行搜索,寻找到合适的点位进行连接,并将新连接到的点位定为新的确定点,之前的点位将不再进行搜索,当将连接后的点位定为确定点时,将之前点位记录的搜索半径距离清零,重新增加搜索半径距离来寻找下一个周围点的位置。
4.根据权利要求1所述的多源路径最短距离算法,其特征在于:通过不断增加搜索半径距离来寻找周围的点的位置,增加的距离单位以当前情况而定,当搜索到第一个点位时,记录它与起始点的距离,然后将它与起始点与中间点,做夹角对比,当夹角小于等于90°时,直接排除该点位,夹角对比角大于90°小于135°时,控制搜索半径范围,即以起始点与搜索到第一个点距离的1.5倍,夹角对比角大于且等于135°小于180°时,控制搜索半径范围,即以起始点与搜索到第一个点距离的1.2倍,当搜索范围半径达到所控制的值时,停止搜索,并将该范围内搜索的所有点位进行夹角对比,夹角最大的点位作为确定点,当搜索范围达到设定值时,并未搜索到有新的点位时,将搜索到的第一个点位定为确定点。
5.根据权利要求1所述的多源路径最短距离算法,其特征在于:在s3步骤进行时,起点和终点单方向向相邻的确定点进行最佳点位范围搜索,其余中间确定点各自分别向两边进行最佳点位范围搜索。