并行访问图的边缘的算法?

时间:2017-11-03 17:01:17

标签: algorithm computer-science graph-algorithm theory

参考图:

enter image description here

我正在编写一个测试图形所有边缘的程序。当且仅当它们不共享公共节点时,程序才能并行测试图形的边缘。我的问题来自这样一个事实:我还必须选择不以最有效的方式测试边缘。

如果测试上图中最有效的平行边选择,则可以在第一个周期并行测试边ABDECF,然后{{{在第二个期间,1}},ADBC。这样,第三个周期只留下EF

如果我一次只限于两条平行边缘,那么我可以通过多种方式访问​​边缘,其中一些比其他方式更有效。例如: 可以先访问BEAB,然后是CFBC。这会使ADBEDE一次一个地进行测试,共计5个周期。效率低于首先访问EFABDEBC秒,EFAD第三,{{1} }作为总共4个循环的最终边缘。

是否有可用于找到以这种方式访问​​图表的最有效路径的算法或实践?我的图表具有可变的大小和连接性,因此即使我愿意,也无法亲自解决和计划它们。

任何帮助或指示将不胜感激。自从有了图论的教训以来已经有一段时间了,所以我不记得是否存在这种性质的东西。我目前正在理论上处理这个问题,并且还没有开始尝试在这方面实现任何类型的编程。因此,如果我的问题更好地指向其他地方,我会非常乐意将我的问题转移到相关的Stack Exchange站点。

1 个答案:

答案 0 :(得分:4)

此问题是边缘着色:https://en.wikipedia.org/wiki/Edge_coloring

如果为图形边缘着色以使两个相邻边缘没有相同的颜色,则可以为每种颜色执行一个循环,并行测试该颜色的所有边缘。

不幸的是,找到颜色数量最少的颜色是NP难的。