基于C语言的创新实践——第二课——迷宫最短路径算法

基于C语言的创新实践——第二课——迷宫最短路径算法
基于C语言的创新实践——第二课——迷宫最短路径算法
方法之一:让一个小机器人在迷宫里随机走直到找到终点,这样做足够多次,记录最短路径。
缺点:几率低。可能走回头路。无法证明是真正的最短路径。
基于C语言的创新实践——第二课——迷宫最短路径算法
换种说法:x到【x到y最短路径上】的某一点的最短路径还是在这条最短路径上
基于C语言的创新实践——第二课——迷宫最短路径算法
如何判断无解?
1、可用一个计数器,每当访问新格子,计数器加一。计数器最大值显然是各自总数。我们可以设置一个值,当计数器超过这个值的时候,结束程序。
2、可以如下操作。记录等于n-1的点和n的点,从这些可以推断出等于n+1的点。如果推断出没有等于n+1的点了(同时没有到达终点),说明已经没有可以访问的点了,迷宫误解。

下面这幅图中有一处符号错误,答案在图片后
基于C语言的创新实践——第二课——迷宫最短路径算法
请问老师can_be_reached下面一行那个"<“是不是应该是”>"。。。
老师:没错,打错了
L_Table:距离表。承载着核心信息:到起点的距离
冗余运算: 全部可达区域都计算过后才判断是否能达到重点
每次都要遍历全部迷宫寻找“前线”(当前L最大的位置)。
算法复杂度:约为N^2
如何体现“无穷大”:用limit.h头文件。其中定义的部分常量如下。
基于C语言的创新实践——第二课——迷宫最短路径算法
基于C语言的创新实践——第二课——迷宫最短路径算法
说明: 任何一个点最多入队一次
复杂度:N

基于C语言的创新实践——第二课——迷宫最短路径算法
基于C语言的创新实践——第二课——迷宫最短路径算法
基于C语言的创新实践——第二课——迷宫最短路径算法
基于C语言的创新实践——第二课——迷宫最短路径算法
基于C语言的创新实践——第二课——迷宫最短路径算法
开心一刻:广度搜索==摊大饼
基于C语言的创新实践——第二课——迷宫最短路径算法
下节预告:最小生成树
基于C语言的创新实践——第二课——迷宫最短路径算法