关于搜索的复杂剪枝
  • 板块灌水区
  • 楼主JoeBiden2020
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/10/16 23:06
  • 上次更新2023/11/4 03:33:36
查看原帖
关于搜索的复杂剪枝
432183
JoeBiden2020楼主2021/10/16 23:06

最优解迷宫问题理论上的最大复杂度应为 O(4mn)O(4^{mn})。对于较大的数据范围,考虑在步数过多时返回当前找到的解(或无解):

if(steps>1e8)return;

但是,这种方法是存在缺陷的,例如对于这个数据:

8 8

########

########

########

########

S#######

########

########

#######E \ 假定从S开始,走到#就可以拿到1积分,终点为E,显然螺旋地走可以拿到所有积分,但是该方法不能得到最优解,如果限制步数过大会超时,失去了它原本的意义。

比如本人和几个同学,一直在尝试https://www.luogu.com.cn/problem/U180518 但是,在我们构造出的极端数据下,根本就不能通过。

搜索算法对于这个问题效率低下的根本原因,在于大量的无用搜索分支。为此,我们尝试过二分答案、搜索是否联通、预处理能否到达等情况,但是这些方法只能对特定的数据有优化作用。

尽管复杂度上界很高,我坚信存在一种方法可以大大减少搜索尝试,一种复杂的剪枝,使得这个问题得到高效地解决(差不多能够在1秒内算出20×2020\times 20还请各位大佬各抒己见。

2021/10/16 23:06
加载中...