1

任何人都可以在此算法中提出实际问题插入排序、呼吸优先搜索、深度优先搜索或拓扑排序吗?谢谢你。

递归的真实示例

我在这里看到了示例但我需要的是插入排序、呼吸优先搜索、深度优先搜索或拓扑排序算法的具体问题。

我希望你能帮助我。

4

3 回答 3

2

它能比我们日常单调的生活更真实吗?

当我们需要对事物进行排序时,插入排序是我们(或至少我)最常用的。考虑一副纸牌 - 一张一张地翻过它们,将最小的放在前面,放在后面,等等。或者一堆需要按日期排序的文件,相同的算法。

在 CS 中,插入排序不太常用,因为我们有更好的算法(想到 qsort 和 merge-sort)。人类也可以做到,但这确实是一项更加乏味的任务。

广度优先搜索的用途在于名称:当我们想要水平而不是垂直越过一棵树时。假设您听说您的家人与俄罗斯艺术家伊利亚·列宾 ( Ilya Repin ) 有联系。你走到阁楼上,打开积满灰尘的巨大木箱,取出可以追溯到19世纪的古老家谱(不是每个人都有吗?)。你知道他离树顶比离树底更近,所以你要广度优先:取第一行,然后是第二行,依此类推……再多一点……Efim Repin。 ..答对了!

如果 Ilya Repin 恰好在树的最左侧分支,那么深度优先会更有意义。然而,在一般情况下,你会想要广度优先,因为我们知道我们的目标更接近根而不是叶子。在 CS 中有大量使用案例(Cheney's AlgorithmA*等,您可以在 wikipedia 上看到更多)。

当我们...鼓声...想先到树的深度,垂直移动时,使用深度优先搜索。有这么多用途我什至无法开始,但最简单和最常见的是解决谷物盒迷宫。你走一条路,直到你到达死胡同,然后你回溯。我们做得并不完美,因为我们有时会跳过一条路径或忘记我们走了哪条路,但我们仍然会这样做。

在 CS 中,有很多用例,所以我将再次将您重定向到维基百科

我们中的一些人在脑后使用拓扑排序,但它很容易在厨师、厨师、程序员、任何必须执行一组有序任务的人身上看到。我的祖母做了我吃过的最好的意大利卷饼,她非常简单的食谱由几个简单的步骤组成(我已经忘记了,但这里是它们的大致大纲):制作“煎饼”包装纸,制作酱汁并将它们包裹在一起。现在,我们不能不做就把这两个包起来,所以很自然,我们首先要做包皮和酱汁,然后再包起来。

在 CS 中,它用于完全相同的事情:调度。我认为 Excel 使用它来计算相关的电子表格公式(或者它可能只是使用简单的递归算法,这可能效率较低)。有关更多信息,您可以查看我们的好朋友wikipedia我发现的随机文章

于 2013-08-19T08:28:36.957 回答
1

插入排序- 没有,它对学习有好处。在计算机之外,它通常用于分类,例如卡片。在现实世界中,合并排序或快速排序更好。

BFS - 寻找连接节点,寻找最短路径。Dijkstra 算法和 A*(Dijkstra 的更快版本)的基础。

DFS - 查找连接节点,在树中编号节点。

拓扑排序- 找到正确的任务顺序。

于 2013-08-19T06:49:52.690 回答
1

我使用分层数据结构,并且总是需要 BFS 来查找我需要嵌套在特定根目录下的对象.​​.....
例如 Find(/Replace)

有时(显着减少)我使用 DFS 来检查一些设计约束,如果不调查叶子就无法评估这些约束。


虽然我没用过,也不完全是 BFS,
但是 GPS 导航软件使用 A* 来搜索一条好的路径,
这是“加权 BFS”的孩子


于 2013-08-19T06:47:39.410 回答