【问题标题】:get all the edges for a given node using an adjacency matrix使用邻接矩阵获取给定节点的所有边
【发布时间】:2014-01-27 22:57:09
【问题描述】:

我正在寻找使用邻接矩阵实现 BFS 遍历,并且有一个与查找矩阵中的相邻元素有关的问题。

无论如何,我是否能够获得给定节点的所有边,而不必遍历邻接矩阵中的整行?或者这是在备用矩阵上使用这种结构的固有缺点?

【问题讨论】:

  • 请更具体。您是否为邻接矩阵提供了特定的表示形式,或者您是从头开始设计的?您是在寻找算法、数据结构还是两者兼而有之?

标签: c++ algorithm search


【解决方案1】:

您的解释是正确的 - 使用邻接矩阵的主要缺点是,对于大多数应用程序,您必须遍历整个行,即使在处理稀疏图时,才能访问所有相邻节点。

如果您没有使用邻接矩阵的特殊原因,那么考虑使用邻接列表可能是一个不错的选择。

应该注意的是,没有什么能阻止您同时维护这两种数据结构;即使我没有看到很多有用的情况,您当然可以维护O(1)查询边是否存在的邻接矩阵,以及对离开给定节点的所有边进行线性查询的邻接列表(与这些边的数量成线性关系)。

根据您确切需要的信息,仅维护每个节点的度数(节点的边数)也可能会有所帮助 - 如果您实施邻接列表,这些数据“免费提供”,但您可能会发现毕竟你只需要学位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多