나는 BFS가 n을 노드로, m을 호인 O (n + m) 시간이 걸린다는 것을 알고있다.그래프에 BFS 트리를 만드는 것은 어느 정도 복잡합니까?
BFS를 수행하는 동안 트리를 작성하는 방법은 무엇입니까?
트리가 완전히 불균형 한 최악의 경우 n을 추가합니까?
나는 BFS가 n을 노드로, m을 호인 O (n + m) 시간이 걸린다는 것을 알고있다.그래프에 BFS 트리를 만드는 것은 어느 정도 복잡합니까?
BFS를 수행하는 동안 트리를 작성하는 방법은 무엇입니까?
트리가 완전히 불균형 한 최악의 경우 n을 추가합니까?
하지 난 다음 그러나에 의해 경우입니다 완전히 확인 :
하는가가
당신은 복잡 O(n+m+n)
될 것을 의미하는 또 다른 N을 추가 O(n+m+n) = O(n+m)
있습니다, 그래서 정말 여기가 문제가되지 않습니다 . 이 배열 a[1,...,n]
a[i] = j if and only if node i is connected to node j in the tree
(루트에 대한 특별한 마크) 노드 v
는 "발견"는 BFS 동안 그래서
, 노드로 표현 될 수 있기 때문에
은 나무의 건물은, O(n+m)
에서 할 수 있습니다 u
, 당신은 단지 a[u]=v
을 할 필요가 전체의 복잡성 당신은 노드를`발견 v` 때 노드 'I 추가했습니다 u`했다 O(n+m)
남아 있으므로, 이것은,
n
시간을 일정 시간에 완료하고, 정확하게 이루어집니다 'a [v] = u'. 그것은 반대가되어서는 안됩니까? 같은 노드가 더 많은 노드를 발견 할 수 있습니다. 오타가되었거나 뭔가 빠졌습니까? – Zagorax예, 그렇습니다. 수정해 주셔서 감사합니다. – amit
질문이 하나 더 있습니다. 그리고 우리가 나무를 배열이 아닌 '나무'로 만들고자한다면 어떨까요? 내 말은, 만약 내가 진짜 나무 구조를 가지고 있다면, 그 노드가 소스로부터 얼마나 멀리 떨어져 있는지를 결정할 수 있습니다. 그런 구조를 만드는 데 더 비싼 경우는 얼마나 비쌉니까? – Zagorax