手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

如何进行寻路算法设计

时间:2024-10-11 22:17:11

经常用地图搜索路线的同学,一定面临过这样的事情,从所在地去目的地怎么走?从计算机的角度来讲就是一个寻路算法的问题。

如何进行寻路算法设计
如何进行寻路算法设计

陈述问题

1、经常用地图搜索路线的同学,一定面临过这样的事情,从所在地去目的地怎么走?这是一个现实中普遍的问题,看上去很简单,但却面临不少问题。

如何进行寻路算法设计

2、首先需要考虑可达性,也就是如何能到达目的地,这是最基本的要求,经过各种途径最终到达了目的地才算基本完成了目标。

如何进行寻路算法设计

3、接下来需要考虑成本,简单的来说就是需要多少时间?为了简单我们在这里把时间作为唯一成本,现实生活中远比这个复杂。

如何进行寻路算法设计

4、总结下前面的问题。到达目的地这是最基本的要求,在消耗成本即时间上可以没有那么苛刻的要求可以在可接受范围内供选择,比如不超过最快时间的5%。

如何进行寻路算法设计

5、如何快速的找出符合上述要求的路径?这就是寻路算法的关键。

如何进行寻路算法设计

解决方案

1、寻找路径,最基本的就是遍历,不管是广度遍历还是深度遍历,因为遍历首先能保障可达即从所在地到达目的地。

如何进行寻路算法设计

2、遍历只是能够保障到达目的地,而我们不得不考虑成本,否则绕地球一圈也能到达目的地。那么如何选取低成本的路径呢?

如何进行寻路算法设计

3、最蠢的办法遍历所有路径,再比较选出其中的最佳路径。这有一个很大的弊端,就是获得了太多的无用路径。

如何进行寻路算法设计

4、能不能让算法智能一些呢?那么我们首先需要添加一些权重信息,比如在这段路程上的速度。速度越快,那么消耗的时间越短,也就是成本越低。

如何进行寻路算法设计

5、直接用速度还是不行的,因为每段路程的速度都不同,而我们需要找耗时短的,所以还是得将速度转换为时间。

如何进行寻路算法设计

6、那么从起点走到该路程所消耗的时间就是权重了。选择消耗时间最短的路程,选取他周围的路程作为后续的备选路程,如果发现某段路程已经走过,则不需要再将其作为备选路程。

如何进行寻路算法设计

7、那么后续准备走的备选路程和已经走过的已探路程,都需要用两个集合分别进行管理,以便进行相关操作。

如何进行寻路算法设计

8、这样就结束了吗?当然冤铘讵柘没有,只是采用消耗时间作为权重,所探索的路径还是会像圆一样辐射开,消耗很多额外资源,我们再加入一个期望时间作为到吾褴恶将达目的地的时间。这样能够更快的查找出路径,减少部分背道而驰的路径消耗。

如何进行寻路算法设计

9、消耗时间是从起点到当前点实际所花费的时间。期望时间呢?它是从当前地点到达目的地所需要的可能最短时间,这个时间怎么来呢?就是两地的直线距离坛冰核哧除以当前的速度。这下寻路算法就像是锁定目标的导弹,能够更快的直达目标。

如何进行寻路算法设计
© 手抄报圈