我正在寻找使用邻接矩阵实现BFS遍历,并且有一个与查找矩阵中相邻元素相关的问题。
无论如何我能够获得给定节点的所有边缘而不必遍历邻接矩阵中的整个行吗?或者这是在备用矩阵上使用这种结构的固有缺点吗?
答案 0 :(得分:1)
您的解释是正确的 - 主要的缺点或使用邻接矩阵是,对于大多数应用程序,您必须遍历整个行,即使在处理稀疏图时,也要访问所有相邻节点。
如果您没有使用邻接矩阵的特定原因,那么考虑邻接列表可能是一个不错的选择。
应该注意的是,没有什么可以阻止你同时维护两个数据结构;即使我没有看到很多有用的情况,你当然可以维护O(1)
查询边界是否存在的邻接矩阵,以及所有边缘上的线性查询的邻接列表给定节点(这些边的数量是线性的)。
根据您需要的具体信息,仅保持每个节点的程度(入点到节点的边数)也可能有帮助 - 如果您实现邻接列表,这些数据“免费提供”,但您可能会发现你毕竟只需要学位。