如何连接一组孤立的顶点

时间:2015-07-13 09:04:53

标签: algorithm graph-algorithm

给定平面中的一组顶点,选择一个点作为入口,入口附近的一个点作为出口,如何连接它们,任何两个连续点的边缘不大于某个最大值? 如下面,*代表顶点,给定一个点为In,而不是从入口附近的一个点退出,是否有任何算法可以做到这一点?救命?

*  *  *  *  *  *  *  *  *  *
*  *  *  *  *  *  *  *  *  *
*  *  *  *  *  *  *  *  *  *
*  *  *  *  *  *  *  *  *  *  <------ in 
*  *  *  *  *  *  *  *  *  *
*  *  *  *  *  *  *  *  *  * <------- out
*  *  *  *  *  *  *  *  *  *
*  *  *  *  *  *  *  *  *  *
*  *  *  *  *  *  *  *  *  *
*   *   *  *   *  *   *   *
* *  *   *   *   *  *   * *

2 个答案:

答案 0 :(得分:2)

如果将点放在规则网格上,并且没有丢失点,则解决方案相对简单(A,B,C)。如果网格具有奇数行和奇数列,并且如果点之间的对角线距离大于最大允许距离(D),则可能出现问题。

enter image description here

如果您对可能的解决方案的理论属性感兴趣,您可能还想查看Moore curvespace-filling curves

我认为如果点间距不均匀,或者网格上的所有位置都没有占用,问题会变得相当复杂。

答案 1 :(得分:0)

使用breadth first search

  # Input: G (set of vertices), v (entry vertex)
  procedure BFS(G,v) is
      let Q be a queue
      Q.enqueue(v)
      label v as discovered
      while Q is not empty
         v ← Q.dequeue()
         process(v)
         for all edges from v to w in G.adjacentEdges(v) do
             if w is not labeled as discovered
                Q.enqueue(w)
                label w as discovered

G.adjacentEdges(v)会搜索足够接近但尚未发现的顶点。 process(v)会测试v是否是退出顶点。每个顶点还必须记住它是如何从入口顶点到达的。