使用邻接矩阵获取给定节点的所有边缘



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

无论如何,我是否能够获得给定节点的所有边缘,而无需循环绕过邻接矩阵中的整个行?还是这是在备用矩阵上使用此结构的固有缺点?

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

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

应该注意的是,没有什么可以阻止您同时维护两个数据结构。即使我还没有看到很多有用的情况,您肯定可以维护O(1)查询的邻接矩阵,以查询是否存在边缘,以及所有边缘上线性查询的邻接列表,所有边缘都会保留给定节点(线性线性)关于这些边的数量)。

取决于您确切需要的信息,仅维护每个节点的程度(导入到节点的边数)也可能会有所帮助 - 如果您实现邻接列表,则此数据"免费",但您可能会发现毕竟您只需要学位。

最新更新