在彩色图中查找具有单个不同颜色边的循环
Posted
技术标签:
【中文标题】在彩色图中查找具有单个不同颜色边的循环【英文标题】:Finding cycles with a single differently colored edge in a colored graph 【发布时间】:2021-04-24 17:46:27 【问题描述】:给定一个边缘上带有红色/蓝色颜色的一般无向图,我希望能够检测到图中恰好包含一个蓝色边缘的所有循环。有没有已知的算法?
我知道如何使用 DFS 方法检测一般图中的循环,并且一旦找到循环,我就可以通过回溯和计数蓝色边的数量来检测单蓝色边循环,但是这个解决方案会据我所知,导致边缘二次时间复杂度。有什么更好的吗?
【问题讨论】:
@DavidEisenstat 抱歉,未指定。编辑了我的问题。 下一个问题:这样的循环可能是指数级的。您是否要枚举所有这些?或者,一个循环中出现的每个蓝色边缘可能就足够了。 对于我的特定用途,找到一个这样的循环就足够了,因为我将终止算法的其余部分。 【参考方案1】:要检测是否存在恰好有一条蓝色边的环,请找到由红色边组成的子图的连通分量。对于每个蓝色边缘,测试其端点是否位于相同的红色连通分量中。如果是这样,那么就有这样一个循环,由蓝色边和它的端点之间的路径在 DFS 指定为树边的边的生成森林中形成。
反过来,假设有这样一个循环。循环的红色部分确保蓝色边缘的端点属于同一个组件。
【讨论】:
非常酷,并且像魅力一样工作。谢谢!以上是关于在彩色图中查找具有单个不同颜色边的循环的主要内容,如果未能解决你的问题,请参考以下文章