当前位置:   article > 正文

2.17_knight_tour_骑士周游问题 (深度优先 DFS)

2.17_knight_tour_骑士周游问题 (深度优先 DFS)
--- 骑士周游问题 ---
    在国际象棋棋盘上,一个"骑士"按照"马走日"的规则
    从一个格子出发,走遍所有棋盘格恰好一次,即为一次周游

    思路 (深度优先 - Depth First Search (DFS)):
        1. 将合法走棋次序表示为一个图
            1)将棋盘格作为顶点
            2)按照"马走日"规则的走棋步骤作为边
            3)建立每个棋盘格的所有合法走棋步骤,能够到达的棋盘格关系图
        2. 采用图搜索算法,搜寻一个长度为 (行*列-1) 的路径,路径上包含每个顶点恰好一次
        3. 如果沿单支深入搜索到无法继续时,路径长度还没达到预定值
            就清除颜色标记,返回上一层,换一个分支继续深入搜索
        4. 使用栈记录路径,并实施返回上一层的回溯操作
from 2.14_vertex&graph import Graph 
  1. def legal_moves(x, y, bd_size):
  2. """
  3. :param x: x 坐标
  4. :param y: y 坐标
  5. :param bd_size: 格子数
  6. :return: 当前格子下一步的所有合法走棋位置
  7. """
  8. new_moves = []
  9. # "马走日"的 8 个格子
  10. direction = [(-1, -2), (-1, 2), (-2, -1), (-2, 1),
  11. (1, -2), (1, 2), (2, -
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/573566
推荐阅读
相关标签
  

闽ICP备14008679号