确定最接近的边界(图论和几何)

时间:2014-03-20 13:10:12

标签: algorithm graph-traversal

示例图

Graph

  
      
  • A :{ x :x A ; y :y A ; 邻居:{B,J}}
  •   
  • B :{ x :x B ; y :y B ; 邻居:{A,C}}
  •   
  • C :{ x :x C ; y :y C ; 邻居:{B,D,G,H}}
  •   
  •   

输入

verticies 的集合(点,笛卡尔坐标系)。

  • 有些顶点连接到其他顶点。
  • 输入上有无边缘交叉点

问题

如何找到给定点的最近边界(例如绿点1,2,3之一)?我只能使用连接的顶点。

  • 1 的解决方案是{A,B,C,D,E,F,G,I,J}。
    • {A,B,D} - {B和D}与{D和A}之间没有边缘。
  • 2 的解决方案是{C,D,E,F,G}。
  • 3 的解决方案是{C,G,H}。

我的想法

找到垂直线(此线穿过问题点)和边(两个顶点之间)的交点。我现在知道2个顶点。怎么继续??

在这种情况下,我可以使用图论中的任何算法吗?

1 个答案:

答案 0 :(得分:1)

首先,你的想法有三个极端情况,必须处理:

  • 垂直线在上方和下方相交,您必须选择一个
  • 垂直线可以与顶点相交而不是边缘
  • 垂直线可以与也是垂直的边相交 (因此存在无限的共同点)

这就是说,

假设您在该点下方找到了优势。所以你找到了1个边和2个顶点。您可以选择左顶点,计算找到的边相对于源自此顶点的每个线段的角度,然后选择具有最小角度的线段。然后你按照这个新的边来找到一个新的顶点,并迭代。