使用邻接矩阵与邻接链表时 Dijkstra 算法的时间复杂度
Time Complexity of Dijkstra's Algorithm when using Adjacency Matrix vs Adjacency Linked List
对于具有 v
个顶点和 e
条边以及存储在二进制最小堆中的边缘的图,最坏情况下的运行时间是 O((n+e)lg(n))
。但是,这是假设我们使用邻接链表来表示图。使用邻接矩阵需要O(n^2)
遍历,而链表表示可以在O(n+e)
中遍历。
因此,使用矩阵表示图形是否会将 Dijkstra 的运行时间更改为 O(n^2lg(n))
?
O(log n) 成本是为处理边支付的,而不是为遍历图支付的,所以如果你知道图中边的实际数量,那么 Dijkstra 的算法就具有最小堆的邻接矩阵在 O(n^2 + (n+e)log(n)) 时间内。
对于具有 v
个顶点和 e
条边以及存储在二进制最小堆中的边缘的图,最坏情况下的运行时间是 O((n+e)lg(n))
。但是,这是假设我们使用邻接链表来表示图。使用邻接矩阵需要O(n^2)
遍历,而链表表示可以在O(n+e)
中遍历。
因此,使用矩阵表示图形是否会将 Dijkstra 的运行时间更改为 O(n^2lg(n))
?
O(log n) 成本是为处理边支付的,而不是为遍历图支付的,所以如果你知道图中边的实际数量,那么 Dijkstra 的算法就具有最小堆的邻接矩阵在 O(n^2 + (n+e)log(n)) 时间内。