algorithm - NP完全?具有特定约束的图的最佳图嵌入

标签 algorithm optimization graph complexity-theory np

我有一个基于网格的图形,其中节点和边占据单元格。边可以交叉,但不能在同一方向上相互重叠。

假设我想优化图表,使边覆盖的距离最小化。 我目前正在对每个连接使用 A* 搜索,但该算法是贪婪的,没有提前计划。考虑下图,其中连接的顺序发生了变化(另请注意,任何给定边都可以有多个最短路径,请参见绿色和 紫色连接)。

enter image description here

我的直觉告诉我们这是 NP-Complete,需要进行详尽的搜索,随着图的大小增加,这将非常昂贵。然而,我无法证明这一点,它与通常涉及交叉最小化的其他图嵌入问题不太一样。

最佳答案

你没有真正描述你的问题,你的形象也不见了,但你的问题听起来像是最小的 T-join 问题。

最小 T 连接问题是在图 G 上定义的。给定一个偶数集 T,你试图找到该图的一个子图,其中 T 的顶点具有奇数度,而另一个顶点具有偶数度。您在边上设置了权重,并试图最小化子图中边的权重之和。

令人惊讶的是,最小 T 连接问题可以在多项式时间内解决,这要归功于与非二分匹配问题的密切联系。也就是说,如果你找到 T 的顶点之间的所有对最短路径,最小 T 连接是通过 T 中顶点的最小权重完美匹配获得的,其中两个顶点之间有一条边,其长度是最短路径的长度在 G.

最小的 T 连接将是路径的集合。如果两个不同的路径,比如 a->b 和 c->d,使用相同的边 uv,那么它们可以被替换为 a->u->c 和 b->v->d 并减少 T 的成本-加入。所以它不会两次使用相同的边缘。

关于algorithm - NP完全?具有特定约束的图的最佳图嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961747/

相关文章:

java - 寻找保持大小的数据结构并清除过程中的旧元素

algorithm - 构建数据结构以在多日志时间执行反向和报告查询

c++ - 适用于 GNU C++ 的 SSE SSE2 和 SSE3

java - 在java中保存为文本文件或对象有什么区别以及何时使用?

xml - 加速将数据导入 Neo4j 图形数据库

algorithm - 二分查找的时间复杂度

algorithm - 数组中给定数字的最小窗口

php - SELECT COUNT() 与 mysql_num_rows();

internet-explorer - Internet Explorer 网络开发者工具很长的间隔时间

algorithm - Dijkstra 算法在 O ((V+E) log W) 时间内计算从给定源顶点 s 的最短路径