参考图:
我正在编写一个测试图形所有边缘的程序。当且仅当它们不共享公共节点时,程序才能并行测试图形的边缘。我的问题来自这样一个事实:我还必须选择不以最有效的方式测试边缘。
如果测试上图中最有效的平行边选择,则可以在第一个周期并行测试边AB
,DE
和CF
,然后{{{在第二个期间,1}},AD
和BC
。这样,第三个周期只留下EF
。
如果我一次只限于两条平行边缘,那么我可以通过多种方式访问边缘,其中一些比其他方式更有效。例如:
可以先访问BE
和AB
,然后是CF
和BC
。这会使AD
,BE
和DE
一次一个地进行测试,共计5个周期。效率低于首先访问EF
和AB
,DE
和BC
秒,EF
和AD
第三,{{1} }作为总共4个循环的最终边缘。
是否有可用于找到以这种方式访问图表的最有效路径的算法或实践?我的图表具有可变的大小和连接性,因此即使我愿意,也无法亲自解决和计划它们。
任何帮助或指示将不胜感激。自从有了图论的教训以来已经有一段时间了,所以我不记得是否存在这种性质的东西。我目前正在理论上处理这个问题,并且还没有开始尝试在这方面实现任何类型的编程。因此,如果我的问题更好地指向其他地方,我会非常乐意将我的问题转移到相关的Stack Exchange站点。
答案 0 :(得分:4)
此问题是边缘着色:https://en.wikipedia.org/wiki/Edge_coloring
如果为图形边缘着色以使两个相邻边缘没有相同的颜色,则可以为每种颜色执行一个循环,并行测试该颜色的所有边缘。
不幸的是,找到颜色数量最少的颜色是NP难的。