Definitions
Undirected graphs
Directed graphs
An arborescence of graph ''G'' is a directed tree of ''G'' which contains a directed path from a specified node ''L'' to each node of a subset ''V''′ of . Node ''L'' is called the root of arborescence. An arborescence is a spanning arborescence if . MBST in this case is a spanning arborescence with the minimum bottleneck edge. An MBST in this case is called a Minimum Bottleneck Spanning Arborescence (MBSA). The graph on the right is an example of MBSA, the red edges in the graph form a MBSA of .Properties
A MST (orCamerini's algorithm for undirected graphs
Camerini proposed anPseudocode
The procedure has two input parameters. ''G'' is a graph, ''w'' is a weights array of all edges in the graph ''G''. function MBST(graph ''G'', weights ''w'') ''E'' ← the set of edges of ''G'' if , ''E'' , = 1 then return ''E'' else ''A'' ← half edges in ''E'' whose weights are no less than the median weight ''B'' ← ''E'' - ''A'' ''F'' ← forest of ''G''''B'' if ''F'' is a spanning tree then return MBST(''G''''B'',''w'') else return MBST((''G''''A'')''η'', ''w'') ''F'' In the above (''G''''A'')''η'' is the subgraph composed of super vertices (by regarding vertices in a disconnected component as one) and edges in ''A''.Running time
The algorithm is running in '' O''(''E'') time, where ''E'' is the number of edges. This bound is achieved as follows: * dividing into two sets with median-finding algorithms in ''O''(''E'') * finding a forest in ''O''(''E'') * considering half edges in E in each iteration ''O''(''E'' + ''E''/2 + ''E''/4 + ··· + 1) = ''O''(''E'')Example
In the following example green edges are used to form a MBST and dashed red areas indicate super vertices formed during the algorithm steps.MBSA algorithms for directed graphs
There are two algorithms available for directed graph: Camerini's algorithm for finding MBSA and another from Gabow and Tarjan.Camerini's algorithm for MBSA
For a directed graph, Camerini's algorithm focuses on finding the set of edges that would have its maximum cost as the bottleneck cost of the MBSA. This is done by partitioning the set of edges ''E'' into two sets ''A'' and ''B'' and maintaining the set ''T'' that is the set in which it is known that ''G''''T'' does not have a spanning arborescence, increasing ''T'' by ''B'' whenever the maximal arborescence of ''G''(''B'' ∪ ''T'') is not a spanning arborescence of ''G'', otherwise we decrease ''E'' by ''A''. The total time complexity is ''O''(''E'' log ''E'').Pseudocode
function MBSA(''G'', ''w'', ''T'') is ''E'' ← the set of edges of ''G'' if , ''E − T'' , > 1 then ''A'' ← UH(E-T) ''B'' ← (''E − T)'' − ''A'' ''F'' ← BUSH(''G''''BUT'') if ''F'' is a spanning arborescence of G then S ← F MBSA((''G''''BUT''), ''w'', ''T'') else MBSA(G, ''w'', ''TUB''); # T represents a subset of E for which it is known that GT does not contain any spanning arborescence rooted at node “a”. Initially T is empty # UH takes (E−T) set of edges in G and returns A ⊂ (E−T) such that: ## ## Wa ≥ Wb , for a ∈ A and b ∈ B # BUSH(G) returns a maximal arborescence of G rooted at node “a” # The final result will be SExample
Gabow and Tarjan algorithm for MBSA
Gabow and Tarjan provided a modification ofPseudocode
For a graph ''G(V,E), F'' is a collection of vertices in ''V''. Initially, ''F'' = where ''s'' is the starting point of the graph ''G'' and ''c''(''s'') = -∞ 1 function MBSA-GT(''G'', ''w, T'') 2 repeat , V, times 3 Select ''v'' with minimum ''c''(''v'') from ''F''; 4 Delete it from the ''F''; 5 for ∀ edge(''v, w'') do 6 if ''w'' ∉ ''F'' or ∉ Tree then 7 add ''w'' to ''F;'' 8 ''c''(''w'') = ''c''(''v,w''); 9 ''p''(''w'') = ''v''; 10 else 11 if ''w'' ∈ ''F'' and ''c(w) > c(v, w)'' then 12 ''c''(''w'') = ''c''(''v, w''); 13 ''p''(''w'') = ''v'';Example
The following example shows that how the algorithm works. Another approach proposed by Tarjan and Gabow with bound of for sparse graphs, in which it is very similar to Camerini’s algorithm for MBSA, but rather than partitioning the set of edges into two sets per each iteration, was introduced in which ''i'' is the number of splits that has taken place or in other words the iteration number, and is an increasing function that denotes the number of partitioned sets that one should have per iteration. with . The algorithm finds in which it is the value of the bottleneck edge in any MBSA. After is found any spanning arborescence in is an MBSA in which is the graph where all its edge's costs are .References
{{Reflist, 30em Graph algorithms Spanning tree