Related articles |
---|
From: | woong.jun@gmail.com |
Newsgroups: | comp.compilers |
Date: | Fri, 24 Aug 2018 00:40:12 -0700 (PDT) |
Organization: | Compilers Central |
References: | 18-08-001 18-08-003 |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="42568"; mail-complaints-to="abuse@iecc.com" |
Keywords: | optimize, analysis, books |
Posted-Date: | 24 Aug 2018 10:30:23 EDT |
In-Reply-To: | 18-08-003 |
David Lovemore wrote:
> On Thursday, August 16, 2018 at 1:41:12 PM UTC+1, woon...@gmail.com wrote:
> > The official errata for the book, Advanced Compiler Design and Implementation
> > by Steven Muchnik added, among other fixes, this line to the Tarjan's algorithm
> > to find maximal strongly connected components (SCCs) from a directed graph.
> >
> > All_SCC U= {{Stack[1]}}
> >
> > where I replaced with brackets an arrow to mean retrival of an element from a
> > sequence named Stack. ...
>
>
> I don't have the book, so I can't see implementation of
> Strong_Components.
Strong_Components implements an algorithm essentially same to what
Tarjan's original paper specifies.
Strong_Components looks like this:
x is a parameter to denote a flowgraph node
LowLink(x) = Dfn(x) = NextDfn += 1
push x to Stack
for each y from x's successors do
if Dfn(y) = 0 then
Strong_Components(y)
LowLink(x) = min(LowLink(x), LowLink(y))
elif Dfn(y) < Dfn(x) and y is on Stack then
LowLink(x) = min(LowLink(x), Dfn(y))
fi
od
if LowLink(x) = Dfn(x) then // x is root of SCC
SCC is an empty set
while Stack is not empty do
z = top from Stack without popping
if Dfn(z) < Dfn(x) then
add set SCC to another set All_SCC
return
fi
pop from Stack
add z to SCC
od
add set SCC to set All_SCC
fi
> But I believe the description of the algorithm on
> wikipedia is correct. I suggest comparing with that.
>
> https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm
Thanks for the reference. I compared and found no differences.
If the line in question had come from the text instead of the errata,
I would not have posted this question. I still wonder why the author
decided to add the line that looks unnecessary.
Thanks.
--
Woong Jun (woong.jun at gmail.com)
http://code.woong.org
Return to the
comp.compilers page.
Search the
comp.compilers archives again.