【发布时间】:2014-08-30 15:50:02
【问题描述】:
我正在准备创建一个迷宫解决程序。正如这两个问题中所述:graphs representation : adjacency list vs matrix && Size of a graph using adjacency list versus adjacency matrix? 他们解释了使用邻接列表与邻接矩阵的区别。不幸的是,与其他两个相比,我无法确定边缘列表的优缺点,因为我在邻接矩阵和边缘列表上发现的很少。
遍历迷宫的相邻列表的一个例子(我认为)是:
insertVertex(V) : O(1)
insertEdge(Vertex, Vertex, E) : O(1)
removeVertex(Vertex) : O(deg(v))
removeEdge(Edge) : O(m)
vertices() : O(n)
edges() : O(m)
areAdjacent(Vertex, Vertex) : O(min(deg(v),deg(w))
endVertices(Edge) : O(1)
incidentEdges(Vertex) : O(deg(v))
space complexity : O(n+m)
所以我的问题是,对于这个迷宫解决问题,边列表、邻接列表或邻接矩阵哪个时间成本最好?
【问题讨论】:
-
您使用的是有向图还是无向图?每个表示都有一些优点和缺点。你必须根据你想要做什么(哪些函数会经常执行)和你的图是什么样子(强连接,即m close n*n,或不是?)来选择。
-
这取决于您正在编写的给定算法。请提供更多信息。