The Nicklas B optimization can be applied to both of the following optimizations.
Optimization # 1: Modify BFS to perform the intersection as it launches, not after words.
, BFS - . , BFS redudant. , , ( BFS). , BFS.
, , , "ToVisit" "", .
BFS :
- ToVisit BFS. ToVisit , .
- , , ToVisit, . ToVisit node.
- node BFS, ToVisit - . ToVisit node.
, ToVisit , m k, , N.
# 2: , , .
. k, , O (VE).
, O (V * M * Q), Q - , M - , V - , , O (M * Q) > O (E), . , , k , O (V).
.
"kCount [A] [k] = k A". . " , , " , O (m) > O (sqrt (V)), O (m ^ 2), . k . .
- "kMax [A] = max k A", hashmap/dictionary. k >= , , kCount [A] [kMax [A]] < ( ), A.
: "kFrom [A] [k] = k, A", k 0 , / / , /. ***, <= k A.
- "dist [A] [B] = A B", , /. .
* , k A, O (V ^ 3) , , . , , , , k. , dist > k dist <= k. dist <= k dist <= k , , .