使用邻接矩阵获取给定节点的所有边缘
get all the edges for a given node using an adjacency matrix
我希望使用邻接矩阵实现BFS遍历,并有一个与查找矩阵中的相邻元素有关的问题。
无论如何,我是否能够获得给定节点的所有边缘,而无需循环绕过邻接矩阵中的整个行?还是这是在备用矩阵上使用此结构的固有缺点?
您的解释是正确的 - 主要缺点或使用邻接矩阵是,对于大多数应用程序,即使在处理稀疏图时,您也必须循环整个行,以便访问所有相邻节点。
如果您没有使用邻接矩阵的特定原因,那么考虑邻接列表可能是一个不错的选择。
应该注意的是,没有什么可以阻止您同时维护两个数据结构。即使我还没有看到很多有用的情况,您肯定可以维护O(1)
查询的邻接矩阵,以查询是否存在边缘,以及所有边缘上线性查询的邻接列表,所有边缘都会保留给定节点(线性线性)关于这些边的数量)。
取决于您确切需要的信息,仅维护每个节点的程度(导入到节点的边数)也可能会有所帮助 - 如果您实现邻接列表,则此数据"免费",但您可能会发现毕竟您只需要学位。
相关文章:
- 节点是否为空,即使它有一个值?
- 在 c++ 中,在链表节点上使用括号有什么意义?
- C++创建指向有向图中节点的指针数组
- 无法打印完整的二叉搜索树,因为我从最低节点向后迭代的逻辑有缺陷
- 如何仅在 2 个节点之间获取最短路径,给定邻接列表有向图?
- C++中是否有一个函数可以为您获取指向该节点的所有指针的地址空间
- 结构之外的节点 * head 有什么作用?
- 有没有办法访问C++ Boost rtree 中的非叶节点
- 如何获取列表中有子项的树的节点总和?
- 有没有办法在 std::list 中交换节点?
- C++创建一个链表,每个节点有超过 2 个字段
- 有没有一种方法可以使用弗洛伊德-沃歇尔算法给出最短路径,其中存在负权重循环而不允许重叠边缘?
- 函数调用中的结构节点* 和节点* 有什么区别?
- 光标和节点的AST遍历之间有什么区别
- 有没有办法通过 LEMON 图形库中的 Map 值获取节点?
- 如何将这些节点连接为有向图
- 使用 typedef 创建节点有什么优势?
- C++ 当节点有两个子节点时,从树中删除该节点
- 链表的头节点和起始节点有什么区别
- 每个节点有多个数据的c++链表