depth-first-search - 在深度优先遍历中如何使用回溯?
问题描述
谁能简单地告诉我,在深度优先遍历中如何使用回溯?我很难理解,所以我可以举个例子。
谢谢。
解决方案
每次遇到“死胡同”时,都会在深度优先遍历中使用回溯。它确保最终探索每条路径。例如,假设给定这张图,您从 A 开始进行深度优先遍历。(我们将使用让孩子先走的约定。)
1. A -> B(图中蓝色)
B有一个孩子!很好,我们会去那里。
2. B -> D(图中绿色)
D有2个孩子!很好,我们先向左走。
3. D -> E(图中紫色)
哦哦,E没有孩子!这是一个死胡同。这意味着我们需要回溯一个级别(返回“向上”到 D),看看我们是否还有其他可以搜索的路径。
是的——D 有另一个未开发的孩子。让我们去那里。
4. D -> F(图中粉红色)
F没有孩子!这是另一个死胡同,让我们回溯一个级别(“向上”到 D),看看我们是否还有其他路径可以搜索。
否 - D 没有孩子。让我们回溯另一个级别(“向上”到 B)。
否 - B 没有孩子。让我们回溯另一个层次。
是的——A还有一个未开发的孩子!让我们去那里。
5. A -> C(图中黄色)
C 没有孩子。让我们回溯另一个层次。
不——A 没有孩子可以探索,它是根。这意味着我们的遍历完成了!:)
推荐阅读
- visual-studio - 如何将子分支提升为 Team Foundation Server 中的主干分支
- android - Unity Editor - 坚持使用 IL2CPP 构建本机二进制文件
- html - 溢出问题
- sql-server - 声明标量变量中遗漏了什么
- python - 比较来自表单字段值和查询集值的值
- wordpress - 我将如何将移动用户从 wordpress 重定向到我的 amp 页面以获取该单页?
- html - 如何在html中正确添加空格
- r - R ggplot 热图手动分箱和选择中间箱颜色
- django - 如何将带有上下文变量的 Django 模板发送到 Ajax 调用?
- php - 如何从 wp-admin .htaccess 中删除 www