在彩色图中查找具有单个不同颜色边的循环

Posted

技术标签:

【中文标题】在彩色图中查找具有单个不同颜色边的循环【英文标题】:Finding cycles with a single differently colored edge in a colored graph 【发布时间】:2021-04-24 17:46:27 【问题描述】:

给定一个边缘上带有红色/蓝色颜色的一般无向图,我希望能够检测到图中恰好包含一个蓝色边缘的所有循环。有没有已知的算法?

我知道如何使用 DFS 方法检测一般图中的循环,并且一旦找到循环,我就可以通过回溯和计数蓝色边的数量来检测单蓝色边循环,但是这个解决方案会据我所知,导致边缘二次时间复杂度。有什么更好的吗?

【问题讨论】:

@DavidEisenstat 抱歉,未指定。编辑了我的问题。 下一个问题:这样的循环可能是指数级的。您是否要枚举所有这些?或者,一个循环中出现的每个蓝色边缘可能就足够了。 对于我的特定用途,找到一个这样的循环就足够了,因为我将终止算法的其余部分。 【参考方案1】:

要检测是否存在恰好有一条蓝色边的环,请找到由红色边组成的子图的连通分量。对于每个蓝色边缘,测试其端点是否位于相同的红色连通分量中。如果是这样,那么就有这样一个循环,由蓝色边和它的端点之间的路径在 DFS 指定为树边的边的生成森林中形成。

反过来,假设有这样一个循环。循环的红色部分确保蓝色边缘的端点属于同一个组件。

【讨论】:

非常酷,并且像魅力一样工作。谢谢!

以上是关于在彩色图中查找具有单个不同颜色边的循环的主要内容,如果未能解决你的问题,请参考以下文章

在OpenGL中将深度映射到颜色

具有重复颜色的 HTML5 图表堆叠条形图

彩色字体字形

从 matplotlib 中的颜色图中获取单个颜色

从 matplotlib 中的颜色图中获取单个颜色

有没有办法将颜色点链接到具有不同图例的字典?