实验:象棋棋盘让‘’马‘’走路
- 绘制一个棋盘,任意给定两个位置A和B,寻找“马”(走“日”字)从A到B的最短路径。
解:
-
绘制棋盘。
为简便起见,我们这里只做5×5的棋盘,也就是有25个点,并且按顺序编号。见下图
-
创建邻接矩阵来表示这25个点每对节点之间是否可到达,那么就为25×25邻接矩阵。开始时赋值为0矩阵。
-
接下来我们需要对邻接矩阵进行赋值。这里赋值的思路由笔者想出,具体可见代码及其注释。还请斧正。
-
邻接矩阵创建完成后,就可以创建其对应稀疏矩阵,并且绘制25个点每对节点之间是否可到达的无向关系图。见下图。
-
任意输入两个位置,给出马从A到B的最短路径。
代码:
chessgraph = zeros(25,25); %创建一个邻接矩阵,值为1的地方表示可到达,0表示不可到达(在每次只考虑一步情况下)
relmat = zeros(9,9);
relmat(3:7,3:7) = reshape([1:1:25],5,5); %创建一个5×5棋盘,非