Boost logo

Boost :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-01-14 08:36:57


Hi Vladimir,

Thanks for your reply...

----- Original Message -----
From: "Vladimir Prus" <ghost_at_[hidden]>

> Here the first thoughts that I have:
>
> Say edge is (s, t), and destination vertex is d. "-->" means reachable.
> The only interesting case is when
> (t --> d) and (t-->s) and (s-->d)

(t-->d) implies (s-->d). So the only interesting case, asked that way, is
when (t-->s), i.e. SCC(t) == SCC(s).

> In this case we don't know if (t-->d) is due to (t-->s) plus (s-->d) or
> there's independent path. Observe that (t-->s) means t and s belong to the
> same SCC. Again, the interesting case is when d belongs to a different
SCC.

I'm not sure of that:

+---+____ +---+____ +---+
| d |<- `->| s |<- `->| t |
+---+ `----+---+ `----+---+

In the above case the answer is "no", while in this one, it's "yes":

+---+____ +---+____ +---+
| d | `->| s | `->| t |
+---+ +---+ ---+---+
  ^ |
  `----------------------/

Isn't that enough to make the case where they're all in the same SCC
interesting?

> When we consider the condensation graph (see the docs), the "yes" answer
is
> given when either
> - there are two different paths from SCC(t) to SCC(d)" where SCC(x)
denoted
> SCC to which x belongs.

Really? Unless I'm mistaken:

+---+____ +---+____ +---+
| x |<- `->| s |<- `->| t |
+---+ `----+---+ `----+---+
  | |
  V V
+---+ +---+
| y |------>| d |
+---+ +---+

SCC(s) == SCC(t) == {x,s,t}
SCC(y) == {y}
SCC(x) == {x}

+---------+
| {x,s,t} |--\
+---------+ |
  | |
  V V
+---+ +---+
| y |------>| d |
+---+ +---+

Am I confused?

> - or, the first edge in SCC(t)->SCC(d) path corresponds to several
vertices
> in the original graph.

Not sure what you mean by the above.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk