Algorithm 图的分区定位点

Algorithm 图的分区定位点,algorithm,search,graph,Algorithm,Search,Graph,我有一个区域已经被划分成几十个子区域(就像一个国家被划分成几个州一样) 现在我有一个点坐标,告诉我点处于哪个状态的最佳算法是什么 当然我可以一个子区域一个子区域地匹配,但这很愚蠢,因为我必须平均搜索其中的一半,对吗 是否有一种算法来确定如何将几个相邻的子区域组合在一起以便于搜索,从而优化搜索次数?我将首先消除所有不能在其中包含点的区域 假设您有一个二维笛卡尔坐标系,您有一个点作为二维向量,区域被描述为其边界点的集合 然后,您可以按最小和最大的x和y坐标对区域进行排序(共有4种排序方式)。您可以消

我有一个区域已经被划分成几十个子区域(就像一个国家被划分成几个州一样)

现在我有一个点坐标,告诉我点处于哪个状态的最佳算法是什么

当然我可以一个子区域一个子区域地匹配,但这很愚蠢,因为我必须平均搜索其中的一半,对吗


是否有一种算法来确定如何将几个相邻的子区域组合在一起以便于搜索,从而优化搜索次数?

我将首先消除所有不能在其中包含点的区域

假设您有一个二维笛卡尔坐标系,您有一个点作为二维向量,区域被描述为其边界点的集合

然后,您可以按最小和最大的
x
y
坐标对区域进行排序(共有4种排序方式)。您可以消除其最小
x
坐标大于点的
x
坐标等的所有区域

在那之后,你可以用一个简单的方法检查剩余的多边形,你应该是好的


如果您有一个结构,可以在所有不同的方向上对区域进行排序,这是非常有效的,因为您可以在对数时间内消除区域。

如何描述子区域边界?您需要光栅法还是矢量法?有多少子区域,多少顶点?边界用坐标表示,所以有向量。子区域不是排他性的,可以重叠,也就是说,有些区域可能包含较小的区域。谢谢马特,你的方法简单多了。如果某些子区域实际上位于更大的子区域内,您有什么见解吗?我应该先选择最小的一个,反之亦然,或者其他标准来判断吗?首先,你需要问问自己,什么是你真正想要的领域。对我来说,当你谈论一个区域时,它们不能重叠。有点像在地图上,摩纳哥没有与法国重叠,但它在法国境内。现在,如果你有一个区域在另一个区域内(完全包围),那么我认为最简单的方法就是用光线投射或类似的方法来检查这两个区域。