假设我有这样的有向图,我想通过使用深度优先搜索方法遍历。
[D]< - [C]< - [A] - > [B]
我要从顶点A开始。 顶点A具有两个相邻的顶点B和C.
我想知道,我应该先选择哪个顶点来遍历?
它可以是A,C,D,B或A,B,C,D哪个是正确的?有没有规则?
答案 0 :(得分:1)
没有规则。两个订单都同样正确。但是,有时教师会告诉您按特定顺序遍历节点,例如按字母顺序排列;在那种情况下,当然要做你的导师所说的。但是,如果没有明确的指令,您可以按照您喜欢的顺序迭代相邻的顶点。
答案 1 :(得分:1)
简答:否。
由于图形的顶点(通常)没有正确的或规范顺序,因此DFS算法也没有这样的顺序。
作为数据结构存储在计算机内存中的图形由于线性内存地址空间,总是具有一些顶点顺序。根据您在顶点上放置的标签/属性,您可以使用它们来建立明确的排序条件,例如:他们的字母或数字顺序。一般来说,这可能会导致更确定的结果,但不会使运行时受益。
根据数据结构,它的内存布局和目标架构算法将被执行,可能会有增加的顺序,例如遍历图形时的数据局部性,从而可以加速算法的执行。
根据图表模型的问题,特殊情况可能会有一些有益的排序。考虑一种情况,其中DFS用于搜索具有给定属性的某些顶点,然后在找到匹配的顶点时立即中止。如果找到这样一个顶点的概率可以分配给每个顶点,那么首先以最高概率遍历顶点显然是个好主意。