我有一个有向图的传出邻域结构:
a{f}=[d e];
a{d}=[c];
a{e}=[c h];
a{h}=[b];
a{c}=[a b];
其中a{f}=[d e]
表示节点d
和e
是节点的传出邻域f
。
现在,我的目标是确定是否存在两条路径,一条是 from f
to a
,一条是 from f
to b
,谁的节点不允许相互交叉?
对于这个例子,答案是肯定的,因为我们可以找到两条路径:
p1: f->d->c->a
p2: f->e->h->b
但是当我们删除h->b
图中的边时,答案是否定的,因为即使有两条路径:
p1: f->d->c->a
p3: f->e->c->b
但是,路径p3
有一个c
与路径相交的节点p1
。
f
/ \
d e
\ / \
c h
/ \ /
a b
我的问题是:是否有任何算法来检查这两条路径的存在?