人工智能pacman

该博客详细介绍了Pacman游戏中的几种人工智能搜索算法,包括DFS、BFS、UCS和A*等,还讨论了如何找到所有角落、使用启发式解决角落问题以及实现吃掉所有点的策略,最后探讨了次优搜索的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:DFS

def depthFirstSearch(problem):
	# 以访问过节点集合
    visited_node = []
    # 定义栈实现dfs
    stack_node = util.Stack()
    # 最终路径
    result = []

    if problem.isGoalState(problem.getStartState()):
        return []
    # 初始状态入栈(初始状态,路径)
    stack_node.push((problem.getStartState(), []))

    while not stack_node.isEmpty():
        # 栈中取出节点
        node = stack_node.pop()
        if node[0] in visited_node:
            continue
        visited_node.append(node[0])
        result = node[1]
        # 目标测试
        if (problem.isGoalState(node[0])):
            return result
        # 获取后继节点
        for record in problem.getSuccessors(node[0]):
            child = record[0]
            action = record[1]
            sub_result = list(result)
            # 判断节点是否重复,把后继节点加入栈
            if not child in visited_node:
                sub_result.append(action)
                stack_node.push((child, sub_result))

    return result
    util.raiseNotDefined()

问题2:BFS

def breadthFirstSearch(problem):
	 # 以访问过节点集合
    visited_node = []
    # 定义队列实现bfs
    queue_node = util.Queue()
    # 最终路径
    result = []

    if problem.isGoalState(problem.getStartState()):
        return []
    # 初始状态入队列(初始状态,路径)
    queue_node.push((problem.getStartState(), []))

    while not queue_node.isEmpty():
        # 队列中取出节点
        node = queue_node.pop()
        if node[0] in visited_node:
            continue
        visited_node.append(node[0])
        result = node[1]
        # 目标测试
        if (problem.isGoalState(node[0])):
            return result
        # 获取后继节点
        for record in problem.getSuccessors(node[0]):
            child = record[0]
            action = record[1]
            sub_result = list(result)
            # 判断节点是否重复,把后继节点加入队列
            if not child in visited_node:
                sub_result.append(action)
                queue_node.push((child, sub_result))

    return result
    util.raiseNotDefined()

问题3:UCS

def uniformCostSearch(problem):
	 # 以访问过节点集合
    visited_node = []
    # 定义优先队列实现ucs
    priorityQueue_node = util.PriorityQueue()
    # 最终路径
    result = []

    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I will be here

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值