如何连接两个点而不穿过另一个路径?

时间:2012-06-25 04:54:23

标签: algorithm graph-algorithm

让我假装我有以下网格。我必须连接成对的字母。不仅必须连接相同的字母,而且还必须确保连接路径不会相互交叉。什么算法可以告诉我是否可以连接所有对而没有交叉路径和最短路径?

我意识到这是一个图形问题,可以使用BFS解决最短路径部分。我不确定的是过路。

  +---+---+---+---+---+---+---+---+
  | A |   |   | B |   |   |   |   |
  +-------------------------------+
  |   |   |   |   |   |   |   |   |
  +-------------------------------+
  |   |   | B |   |   |   | D |   |
  +-------------------------------+
  |   |   |   |   |   |   |   |   |
  +-------------------------------+
  |   | C |   |   | C |   |   |   |
  +-------------------------------+
  |   |   |   | A |   |   |   |   |
  +-------------------------------+
  |   |   |   |   |   |   | D |   |
  +-------------------------------+
  |   |   |   |   |   |   |   |   |
  +---+---+---+---+---+---+---+---+

1 个答案:

答案 0 :(得分:3)

这是一个名为“Disjoint Connecting Paths”的NP完全问题。除了一些超多项式算法(真的很慢),还有一些近似算法(可能会出错,或者是非最优的)。