8得票2回答
实现二叉树的深度优先搜索和广度优先搜索

我正在尝试使用深度优先遍历和广度优先遍历来遍历二叉树,但我遇到了一些问题。 我的节点和树实现似乎很好,只是我不知道如何正确地进行深度和广度遍历。 class Node: def __init__(self, val): self.l = None se...

8得票8回答
二叉树的层序遍历

void traverse(Node* root) { queue<Node*> q; Node* temp_node= root; while(temp_node) { cout<<temp_node->val...

8得票1回答
我该在哪里修改我的广度优先搜索算法以找到两个节点之间的最短路径?

我正在学习图形算法课程,我卡在了找到两个顶点之间的最短路径问题上。 问题陈述: 给定一个有n个顶点和m条边的无向图,以及两个顶点u和v,请计算u和v之间最短路径的长度。输出从u到v的路径中最小边数,如果没有路径则输出-1。 我的代码通过了一些测试用例,但是其中有几个失败了,而我真的看不出错...

8得票1回答
Dijkstra算法能够处理权重为0的图吗?

如果存在一张带权图G,且所有权重都为0,Dijkstra算法是否仍然能找到最短路径?若是,为什么? 根据我对算法的理解,如果没有边权,则Dijsktra算法会像普通BFS一样运行,但是我希望能有些澄清。

8得票2回答
如何使用BFS在boost中遍历图形

我在编译一个非常简单的图的BFS时遇到了问题。无论我怎么做,都会得到各种不匹配的方法调用的编译器消息(我尝试过boost::visitor和扩展boost::default_bfs_visitor等)。 #include <stdint.h> #include <iostr...

8得票1回答
在Haskell中从BFS输出重构一个图

我希望在Haskell中重构一个图的发生结构,该结构由其广度优先遍历的输出给出。明确地说,输出包括一个根节点和一个邻域列表(邻域是一个标记为新或旧(=已访问)的顶点列表),其中每个邻域对应于尚未分配到邻域的最小顶点。 在任何命令式语言中,我会使用队列来解决这个问题: Input: roo...

8得票3回答
BFS和DFS搜索在树中需要标记为已访问吗?

看到BFS和DFS算法,它们似乎会将节点标记为已访问。如果我只遍历树,那么我的实现是否仍需要标记节点为已访问?我想对每个节点执行某些操作,确保每个节点只执行一次。 看起来只有在存在循环的图形中才需要这样做,否则可能会重复遇到相同的节点。如果我递归地调用树,那么没有必要设置访问状态,因为我可以...

8得票1回答
Prolog中的广度优先搜索

我是一个有用的助手,可以为您翻译文本。 我是Prolog的新手,目前正在实现DFS(深度优先搜索)和BFS(广度优先搜索)算法。我的DFS代码运行良好,但当BFS到达叶子节点时会被终止和中止(它不会回溯并继续搜索)。 我还阅读了一些关于此的示例代码,但其中有一些函数没有定义,例如s(Node...

8得票3回答
C++中的稀疏图实现及性能表现

我目前正在使用C ++编写有向图数据结构(此项目中不使用Boost GL)。主要应用将是识别连接组件和汇点。预计图形稀疏(E〜4V上限的边数),并且所有图形的权重都将是均匀的。我正尝试在邻接表、关联表之间进行选择,或者可能是一些我还没听说过的其他表示方法(邻接矩阵由于稀疏性不是选项)。瓶颈可能...

7得票2回答
Python实现广度优先搜索

我在网上找到了一个例子,但是仅返回BFS元素的序列不足以进行计算。假设根节点是BFS树的第一层,那么它的子节点就是第二层,以此类推。从下面的代码中,我该如何知道它们所处的层级以及每个节点的父节点是谁(我将创建一个对象来存储其父节点和树的层级)? # sample graph implemen...