关于 dfs深度优先搜索

·dfs是什么

 dfs是一个针对图和树的遍历算法

·dfs的原理

 dfs是由栈的形式实现的,通过栈进行路径储存

·dfs的注意事项

 1 剪枝 剪枝是为了减少时间成本

 2 回溯 回溯回到原来路径

 3 还原 回到原来路径时,要还原现场

·dfs的思想

 假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中  所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。

·dfs的特点

 选定一个出发点后进行遍历,能前进则前进,若不能前进,回退一步再前进,或再回退一步后继续前进。依此重复,直到所有与选定点相通的所有顶点都被遍历。

·显然,dfs是一个递归的过程

 

//遍历图上所有节点
Dfs(V)
{
    if(V是旧节点)
        return;
    else
    {
        将V标记为旧点;
        对和V相邻的每个节点U
        {
            Dfs(U);
        }
    }
}
int main()
{
    将所有点标记为新点;
    while(在图中能找到新点k)
        Dfs(k);
}

//在图上寻找路径
bool Dfs(V)
{
    if(V为终点)
        return true;
    if(V为旧点)
        return false;
    将V标记为旧点;
    对和V相邻的每个节点U
    {
        if(Dfs(U)==true)
            return true;
    }
    return false;
}

 

posted @ 2022-03-20 21:19  爱吃虾滑  阅读(47)  评论(0编辑  收藏  举报