48、搜索算法与决策问题详解

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

搜索算法与决策问题详解

1. 搜索算法概述

1.1 分支限界法与正向搜索

分支限界法并不一定能比正向搜索减少计算量,二者在最坏情况下的时间复杂度相同。算法的效率在很大程度上依赖于启发式函数。

1.2 动态规划

正向搜索和分支限界法都不会记录某个状态是否曾被访问过,这会导致多次评估相同状态,浪费计算资源。而动态规划(算法 E.4)通过记录特定子问题是否已被解决,避免了重复工作。

动态规划适用于那些最优解可以由其子问题的最优解构建而成的问题,这种性质被称为最优子结构。例如,若从 $s_1$ 到 $s_3$ 的最优动作序列经过 $s_2$,那么从 $s_1$ 到 $s_2$ 以及从 $s_2$ 到 $s_3$ 的子路径也是最优的。

在图搜索中,评估状态时,首先检查置换表,看该状态是否曾被访问过。若已访问过,则返回其存储的值;否则,正常评估该状态并将结果存储在置换表中。以下是动态规划应用于正向搜索的代码:

function dynamic_programming(𝒫::Search, s, d, U, M=Dict())
    if haskey(M, (d,s))
        return M[(d,s)]
    end
    𝒜, T, R = 𝒫.𝒜(s), 𝒫.T, 𝒫.R
    if isempty(𝒜) || d ≤ 0
        best = (a=nothing, u=U(s))
    else
        best = (a=first(𝒜), u=-Inf)
        for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值