从一般加权无向图中找到最佳并行化


9

我正在解决“融合”重叠图像集的问题。这些集合可以由无向加权图表示,例如:

7节点图

每个节点代表一个图像。重叠的图像通过边缘连接。边缘权重代表重叠区域的大小(更快混合更大的重叠会导致更好的整体质量)。

该算法通常去除边缘。它可以顺序执行或并行执行。但是,发生混合时,节点会合并,并且图形结构也会更改。因此,只有在自身不重叠的连接组件上才可以并行化!

这样的不重叠组件是DB和FEG。我们可以在这些组件上并行安全地运行混合算法。结果如下图(合并的节点以绿色显示):

4节点图

现在,没有任何进一步的并行化可能,因为任何两个连接的组件都是重叠的(它们之间直接有一条边)。

该算法的并行版本如下所示:

1. Find connected components (no two are connected directly) and create task for each.
2. Run the tasks in parallel.
3. Update graph.
4. Until single node remains, continue with 1.

棘手的部分是第一步:如何找到最佳的连接组件集?

一种方法是贪婪算法,该算法仅在给定迭代中找到最大数量的组件。贪婪算法将在开始时最大程度地提高并行化速度,但会以后来的许多迭代为代价。

最佳解决方案可能是在每次迭代中引入大量的连接组件,以最大程度地并行化并同时最小化迭代次数(因此,优化中有两个变量)。

除了回溯,我没有想到任何优化算法,即搜索所有可能演化的空间并选择具有最大并行度的算法。

可以忽略边缘权重,但是算法的改进版本可能会考虑到它,因为较大的区域需要花费更多的时间进行混合(例如,大小为200的区域要比两个大小为100的区域花费大约两倍的时间进行混合)。考虑权重可能会导致选择组件时采用更好的策略(算法的整体运行时间更快)。

对于这种优化算法,您是否有任何线索,可以找到选择图的各个部分的最佳策略,以便最大程度地实现并行化并减少迭代次数?


此处连接的组件不是正确的词。原始图已连接。您是说将顶点分割为Ť小号1个小号ķ,使得 小号一世小号Ĵ至少是2?没有任何限制小号一世应该看起来像?(例如,我看不到您如何“混合”任何子图)。还不清楚您所说的迭代是什么意思。
徐超

Answers:


1

这与基因组装配中基因序列的重叠非常相似。安南斯论文的第四章。

并行地,您搜索有前途的对,并维护分布式联合查找数据结构。请参见Tarjan和Vishkin的挂钩和快捷方式算法以折叠连接的组件。

另外,您可以在64位行像素块上尝试最近的DeBrujin图方法。我认为这将为您带来最佳效果。为了帮助解决量化问题,我首先将像素尺寸减小为16或8位黑/白。然后,您对64位块进行并行排序,然后使用它们来推断图像之间的边缘。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.