ord*_*ary 121 algorithm graph-theory breadth-first-search time-complexity
BFS的基本算法:
set start vertex to visited
load it into queue
while queue not empty
for each edge incident to vertex
if its not visited
load into queue
mark vertex
Run Code Online (Sandbox Code Playgroud)
所以我认为时间的复杂性将是:
v1 + (incident edges) + v2 + (incident edges) + .... + vn + (incident edges)
Run Code Online (Sandbox Code Playgroud)
v
顶点1
到哪里n
首先,我说的是正确的吗?其次,这是怎样的O(N + E)
,直觉为什么会非常好.谢谢
Mih*_*eac 253
你的总和
v1 + (incident edges) + v2 + (incident edges) + .... + vn + (incident edges)
Run Code Online (Sandbox Code Playgroud)
可以改写为
(v1 + v2 + ... + vn) + [(incident_edges v1) + (incident_edges v2) + ... + (incident_edges vn)]
Run Code Online (Sandbox Code Playgroud)
第一组是O(N)
另一组O(E)
.
小智 38
DFS(分析):
O(1)
时间O(n + m)
如果图形由邻接列表结构表示,则DFS 及时运行?v deg(v) = 2m
BFS(分析):
Li
O(n + m)
如果图形由邻接列表结构表示,则BFS 及时运行?v deg(v) = 2m
Dhr*_*pta 10
时间复杂度O(E+V)
不是O(2E+V)
因为如果时间复杂度是n ^ 2 + 2n + 7那么它被写为O(n ^ 2).
因此,O(2E + V)写为O(E + V)
因为n ^ 2和n之间的差异很重要,但不在n和2n之间.
对此的直观解释是简单地分析单个循环:
所以单个循环的总时间是 O(1)+O(e)。现在对每个顶点求和,因为每个顶点都被访问过一次。这给
For every V
=>
O(1)
+
O(e)
=> O(V) + O(E)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
136115 次 |
最近记录: |