如何连接两点而不经过另一条路径?
假设我有以下网格。 我必须连接字母对。 不仅必须连接相同的字母,还必须确保连接路径不会相互交叉。 有什么算法可以告诉我,如果可以连接所有的线对而不穿越路径和最短路径?
我意识到这是一个图形问题,最短路径部分可以使用BFS解决。 我不确定的是交叉路口。
+---+---+---+---+---+---+---+---+
| A | | | B | | | | |
+-------------------------------+
| | | | | | | | |
+-------------------------------+
| | | B | | | | D | |
+-------------------------------+
| | | | | | | | |
+-------------------------------+
| | C | | | C | | | |
+-------------------------------+
| | | | A | | | | |
+-------------------------------+
| | | | | | | D | |
+-------------------------------+
| | | | | | | | |
+---+---+---+---+---+---+---+---+
这是一个称为“不相交连接路径”的NP完全问题。 除了一些超多项式算法(真的很慢)以外,还有一些近似算法(可能会犯错或者不是最优)。
上一篇: How to connect two points without crossing another path?