回溯算法

原文链接:https://note.noxussj.top/?source=sifo

介绍

回溯算法是算法设计中的一种方法。回溯算法是一种渐进式寻找并构建问题解决方式的策略。回溯算法会先从一个可能的动作开始解决问题,如果不行,就回溯并选择另一个动作,直到将问题解决。

就像你在一个迷宫里面遇到了当前有三条岔路,你选择了第一条后发现此路不通,那你是不是要回到原点,进行选择第二条道路,以此类推,最后选择一条正确的道路。


什么问题适合用回溯算法解决?

  • 有很多分岔路
  • 这些路里面有死路,也有出路
  • 通常需要用递归来模拟所有的路

基础案例

场景一

全排列

    // 输入
    const input = [1, 2, 3]
    
    // 输出
    const output = [
        [1, 2, 3],
        [1, 3, 2],
        [2, 1, 3],
        [2, 3, 1],
        [3, 1, 2],
        [3, 2, 1]
    ]
步骤:
  1. 用递归模拟所有出路的情况
  2. 遇到包含重复元素的情况,就回溯
  3. 收集所有到达递归终点的情况并返回

原文链接:https://note.noxussj.top/?source=sifo


菜园前端
19 声望2 粉丝

« 上一篇
分而治之算法
下一篇 »
什么是 ES 6