In computing Triconnected components of a graph using HopCropt and Tarjan algorithm, i.e https://sci-hub.tw/https://epubs.siam.org/doi/pdf/10.1137/0202012, they compute two additional values Lowpt1 and Lowpt2, in addition to a dfs number, while computing a DFS tree of a given undirected graph. Let frond or back_edge be the edge which is not part of DFS tree. Additionally, Let each vertex is identified by its dfs number, then :

1. Lowpt1(v)=min({w| there exist back_edge xw, where x is descendant of v} U v}).

2. Lowpt(2)=min({w| there exist a back_edge xw, where x is descendant of v} \set_minus Lowpt1(v)} U v})

Now, for computing these values inside a dfs, the standard procedure given is given below.

However, i want to compute

3. Lowpt(v)=min({w| there exist back_edge xw, where x is a descendant of v})

4. Lowpt2(v) = same as above with lowpt1 replaced by lowpt(v)

. In other words, i want to exclude the parameter v from the Lowpt1(v). I want to know what will be the changes required for computing Lowpt(v) in addition to dfs number and Lowpt2(v).

Thanks in Advance for your help.

' An algorithm is as :[Standard DFS procedure (for computing lowpt1 and lowpt2, insert statements given below as comments in their corresponding flagged position)][1]

PROCEDURE 1.

begin comment routine for depth-first search of a multigraph G represented by

adjacency lists A(v). Variable n denotes the last number assigned to a

vertex;

integer n;

procedure DFS (, u); begin comment vertex u is the father of vertex v in the

spanning tree being constructed. The graph to be searched is

represented by a set of adjacency lists A(v);

n:= NUMBER (v) := n + 1;

LOWPT1 (v):= LOWPT2 (v):= NUMBER (v);

for w A(v) do begin

if NUMBER (w) 0 then begin

comment w is a new vertex;

mark (v, w) as a tree arc;

DFS (w, v);

if LOWPT1 (w)< LOWPT1 (v)then begin

LOWPT2 (v) min (LOWPT (v), LOWPT2 (w))

LOWPT1 (v):= LOWPT1 (w);

end else if LOWPT1 (w) LOWPT1 (v) then

LOWPT2 (v) := min (LOWPT2 (v), LOWPT2 (w)};

else LOWPT2 (v) := min (LOWPT2 (v), LOWPT1 (w)};

end

else if (NUMBER (w) < NUMBER(v)) and ((w 4= u) or -a FLAG(v))

then begin

comment the test is necessary to avoid exploring an edge

in both directions. FLAG (v) becomes false when the

entry in A(v) corresponding to tree arc (u, v) is

examined;

mark (v, w) as a frond;

if NUMBER (w) < LOWPT1 (v)then begin

LOWPT2 (v):= LOWPT1 (v);

LOWPT1 (v):= NUMBER (w);

end else if NUMBER (w) > LOWPT1 (v) then

LOWPT2 (v) := min {LOWPT2 (v), NUMBER (w)};

end;

if w u then FLAG (v) false;

end;

end;

n:=0;

for "= until V do begin

NUMBER (0 := O;

FLAG (0 true;

end;

comment the search starts at vertex s;

DFS (s, 0);

end;

`

More Imran Khan's questions See All
Similar questions and discussions