回溯法最大团问题_【算法】浅析回溯法

回溯法总结

本文会引导大家从一个具象的小例子出发来认识回溯法。

6d335accaed94e4ba2f518bff03c1378.png

用一句歌词概括回溯法,那就是**“向左向右向前看”**。图中的小蓝要去找小绿,但是小蓝一开始并不知道小绿在哪里,所以他只能摸索着找。先向左走,找到了小红,但不是他想要的,于是退回来;然后向上走,找到了小黄,可也不是他想要的,只能再次退回来;最后向右走,终于找到了小绿,结束。

0.回溯法的本质

先说结论,回溯法的本质是一棵N叉树的遍历。N叉树中除叶子节点外每个节点都有N个孩子节点,回到上图,如果将小蓝看做树中节点的话,那小红、小黄、小绿便是小蓝的孩子节点。如果有N个和小蓝同级的节点,并且他们连在同一个父节点上,以此重复,便可得到回溯法的解空间树。而小蓝在丁字路口的向左、向上、向右以及退回的操作便相当于回溯法中的选择和撤销选择,关于选择和撤销选择的概念在后文详解介绍。

1.回溯法框架

我们把小蓝找小绿的难度加大,如下图所示:

91c66903309a0f8d243221bcbf7188a0.png

小蓝初始站在Root位置,在他面前是一个十字路口,有1、2、3、4四个方向,并且沿每个方向走,又会遇到丁字路口,分别是5、6,7、8,9、10,11、12。小蓝的目标是找到12号小绿。我们先用文字来描述一下搜索过程。

  • 进入方向1 (选择)
  • 不是12号小绿 (结束条件)
    • 进入方向5 (选择)
    • 不是12号小绿 (结束条件)
    • 从方向5退回 (撤销选择)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值