【补充】回溯法

1 方法概述

1.1 搜索算法介绍

  1. 穷举搜索(Exhaustive Search)
  2. 盲目搜索(Blind or Brute-Force Search)
    • 深度优先搜索(DFS)或回溯搜索(Backtracking)
    • 广度优先搜索(BFS)
    • 迭代加深搜索(Iterative Deepening)
    • 分支界限法(Branch & Bound)
    • 博弈树搜索
  3. 启发式搜索(Heuristic Search)
    • A*算法和最佳优先(Best-First Search)
    • 迭代加深的A*算法
    • B*、AO*、SSS*等算法
    • Local Search, GA等算法

1.2 搜索空间的三种表示

  • 表序表示:搜索对象用线性表数据结构表示;
  • 显式图表示:搜索对象在搜索前就用图(树)的数据结构表示;
  • 隐式图表示:除了初始结点,其他结点在搜索过程中动态生成.缘于搜索空间大,难以全部存储。

1.3 提高搜索效率的思考

提高搜索效率的思考:随机搜索。

上世纪70年代中期开始,国外一些学者致力于研究随机搜索求解困难的组合问题,将随机过程引入搜索;

选择规则是随机地从可选结点中取一个,从而可以从统计角度分析搜索的平均性能:

随机搜索的一个成功例子:判定一个很大的数是不是素数,获得了第一个多项式时间的算法。

1.3 回溯算法

回溯法是一个既带有系统性又带有跳跃性的搜索算法。

  • 它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。——系统性
  • 算法搜索至解空间树的任一结点时,判断该结点为根的子树是否包含问题的解,如果肯定不包含,则跳过以该结点为根的子树的搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。——跳跃性

这种以深度优先的方式系统地搜索问题的解的算法称为回溯法,它适用于解一些组合数较大的问题。

image-20230630132357972

image-20230630132425655

image-20230630132459489

1.4 算法的基本步骤

  1. 针对问题,定义问题的解空间(对解进行编码);
  2. 确定易于搜索的解空间组织结构(按树或图组织解);
  3. 以深度优先搜索方式搜索解空间,搜索过程裁减掉死结点的子树,提高搜索效率。

提取自schap2

提取自schap2

提取自schap2

posted @ 2023-07-02 22:04  gengduc  阅读(12)  评论(0编辑  收藏  举报  来源