笔试题目解答

本文深入探讨了一种求解二维迷宫地图中从起点到终点的最短路径的方法。通过逐步逼近策略,从起点开始,每次选择距离最近的必经点,并计算至终点的总距离。证明了此方法的有效性,并对比了深度优先和广度优先搜索两种实现策略,阐述了各自的时间复杂度。

问题描述:一个二维迷宫地图,0表示不可通行,1表示可以通行,2表示可以通行且为必经点,用集合S表示,3表示起点,用点A表示,4表示终点,用点B表示。求从A到B的最短路径。

问题分析:

(一)首先从点A出发,在S中找出距离点A最近的必经点s1,再从s1出发找出距离点s1最近的必经点s2,以此类推,最终找到sn。计算sn到终点B的距离,将这些距离循环叠加,就是整个的最短路径。(尚需要理论证明)

证明:当n=3时显然成立,若AB<AC,那么AB+BC<AC+CB,成立。(1)

当n= 4时,构成四边形,ABCD,假设先走B点,那么BCD中距离B点最近的点M,以及剩下的一点N,肯定可以保证BM,MN之后最短。此点可以由(1)可知。同理先走C点,或者D点同样可以保证剩下MN的最短。在BCD三点之间的最短距离肯定相等,固有

Dis(B) = Dis(C) = Dis(D)。那么ABCD之间的距离可以转化为:

AB+Dis(B) ,AC+Dis(C) ,AD+Dis(D) 那么可以得出结论,先走距离A最短的点,然后根据此点一次寻找距离是最短距离。(2)

当n=K+1是,构成k+1边行(可能非凸多边形)。可以保证K个点的最短路径一致。此点可以有(1)(2)联合推导推广得出。

那么A到剩下K个点的最短距离也是从距离A最短的距离依次延伸取得。

法一:a、求A到某必经点S’之间的最短距离。可以通过深度优先方法取得。

b、比较每个必经点S’与A之间的最短距离,找出最最短的距离,作为第一个点。

c、根据第一个点S1,按照a、b步骤循环计算,最终找出Sn个点。

d、计算Sn到点B的距离

e、计算这些距离之和。

复杂度很高。

法二:a、求A到第一个必经点S’之间的最短距离。用广度优先方法。以广度优先搜索得到的最先找到的点,肯定是距离A最近的点。(尚需理论证明)

b、以点S1作为出发点,用a步骤循环计算,最终找出Sn个点。

c、计算Sn到点B的距离

d、计算这些距离之和。

说明:根据广度优先搜索的原则,每一次向下搜索,处于同一层的距离肯定一样,那么广度优先搜索找到的第一个必经点必定距离起始点最近,即可终止搜索。根据每个点的被访问属性可以对广度优先搜索进行剪枝。

复杂度相对较低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值