微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有一条从s-t穿过特殊节点的路径?

如何解决是否有一条从s-t穿过特殊节点的路径?

我已经看到此网站描述了此问题的一些变体,但并非完全如此。

问题

我有一个未加权的图G =(V,E),最好我需要制定一种适用于有向图和无向图解决方案。

V的子集是W,它们是特殊的节点。 我需要找出是否有可能找到从起始节点s到结束节点t的路径,该路径经过W中的一个或多个特殊节点。这是一条简单的路径,其中节点不重复,并且它必须在多项式时间内运行

所以我只需要输出'true'或'false'。

我到目前为止的尝试

首先,我认为对于每个特殊节点i W,我都会运行一个bfs,可以找到该节点w,然后从节点w到t运行一个新的bfs。 大概是这样的:

for w in W:
    firstpath = bfs from s to w
    secondpath = bfs from w to t (that does not touch nodes in firstpath)
    if firstpath + second == path from s to t:
         return True
    else:
        continue

但是,这里的问题可能是“ firstpath”可能会阻止从w到t的可能路径。

关于此问题的多项式算法的任何构想都可以保证不存在“节点冲突”

解决方法

对于无向图,我们可以尝试W中的所有w,并使用最大流寻找从w到s和t的两个节点不相交的路径。不幸的是,我不确定这是否可以推广到有向图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。