2023.07.13 学习笔记

爆搜 & 模拟专题

即为那些没有多少思维难度, 但实现起来非常复杂的题目。

Solution : 搜索哪些话为真,哪些为假, 并根据矛盾关系剪枝。


Solution : 模拟+搜索, 先计算一张,两张,三张,四张的牌各有几张, 再进行搜索。


Solution : 采用迭代加深搜索, 即限定深度的dfs, 若超过限定步数则直接返回, 若搜不到解则增加限定深度, 直到找到一组解。

但是这还不够, 我们需要一点优化。可以对搜索中的每个状态设计一个估价函数来衡量状态优劣。若当前步数+估价最少步数 >= 当前答案 则直接剪枝。(类似A*算法)。


关于A*:

  • 概述:采用广度优先搜索策略,在搜索过程中使用启发函数(即上文中的估价函数),即有大致方向的向前进虽然目标有时候不是很明确。
  • 核心:启发函数。
  • 应用:可用于优化bfs,当前步数+估计步数越小, 则该状态越有潜力, 用优先队列存储状态, 每次取最有潜力的状态进行拓展。

书接上文, 我们将A* 与迭代加深结合起来, 就成为了传说中的 IDA* 。
设当前限定深度为$d$, 若当前步数 + 估价步数 > $d$则可以直接剪枝。

剪枝技巧:

    1. 优化搜索顺序(先大后小)
    1. 避免重复搜索(记忆化)
    1. 前瞻性预测(A*)

eg1: 小木棍

eg2: 八数码难题

eg3: 生日蛋糕

小组成员:邵品渊,邵品砚,蒋佳成,顾天泽

3 个赞