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