美文网首页
backtrack算法

backtrack算法

作者: 81bad73e9053 | 来源:发表于2016-10-12 19:28 被阅读383次
    概念和基本思想

    走不通就退回再走的技术成为回溯法,满足回溯条件的某个状态点成为回溯点。
    在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发深度优先搜索,搜索到某个点的时候,先判断该节点是否包含问题的解,如果包含就继续探索,否则就逐层向根节点回溯。

    步骤

    确定问题的解空间
    确定节点的扩展搜索规则
    深度优先的方式搜索解空间,并在搜索过程中剪枝函数避免无效搜索

    void dfs()//参数用来表示状态
    {
        if(到达终点状态)
        {
            ...//根据题意来添加
            return;
        }
        if(越界或者是不符合法状态)
            return;
        for(扩展方式)
        {
            if(扩展方式所达到状态合法)
            {
                ....//根据题意来添加
                标记;
                dfs();
                修改(剪枝);
                还原标记; 
            }
            
        }
    }
    

    相关文章

      网友评论

          本文标题:backtrack算法

          本文链接:https://www.haomeiwen.com/subject/gywiyttx.html