DLS 深度受限搜索 狼羊 过河 问题 python 实现

深度受限搜索(DLS)简单地说就是深度有限搜索(DFS)+深度限制(limit)

DLS伪代码

 
 

实例:狼羊 过河 问题

3只羊和3头狼在河岸A,想要过河抵达河岸B。它们只有一艘船并且船上必须有1-2只生物。当

任意一边的狼的数量大于羊时,羊会被吃光(fail)。初始状态为(3,3,1,0,0,0),意为3头羊

,3头狼和一艘船在河岸A,而河岸B没有羊,没有狼,也没有船。算法程序要达成的目标是(

0,0,0,3,3,1),意为3头羊,3头狼和一艘船都从河岸A抵达了河岸B。请用深度受限搜索(

Depth-Limited-Search)完成这份python程序,受限深度为15。

思路:

action是所有的操作方法,递归的时候在每个节点都要判断从它延伸的其他以下节点是否符合所需要的操作。然后再加上递归的深度限制,就可以解决。

代码1:

# -*- coding: utf-8 -*-
# Python版本:3.6



# 已探索集合
_explored = []

action = [[0, -1, 0], [0, -2, 0], [-1, 0, 0], [-2, 0, 0], [-1, -1, 0], [0, 1, 1], [0, 2, 1], [1, 0, 1], [2, 0, 1], [1, 1, 1]]

# 节点数据结构
class Node:
    def __init__(self, state, parent, action):
        self.state = state
        self.parent = parent
        self.action = action





def main():
    global _explored

    src_state=[3,3,1,0,0,0]
    dst_state=[0,0,0,3,3,1]
   

猜你喜欢

转载自blog.csdn.net/LZJSTUDY/article/details/104280761