首页 > 解决方案 > 满足某些条件时将大面积坐标空间即时划分为较小区域的算法

问题描述

我正在做一个坐标空间分区的项目。由于需要您的帮助,我已经详细解释了。所以理解这个问题似乎并不难。

将大区域划分为符合标准的小部分是关键。标准描述如下。我认为有三种方法可以解决我正在尝试解决的特定问题。如果您认为有更好的方法来解决这个问题,请推荐。

首先,当车道的交叉点称为节点时,坐标空间的大面积由连接节点的众多边(=车道)组成,每条边都有特定的值。我想将一个大区域划分为尽可能多的较小部分,其中分割区域内的边缘必须彼此相邻,并且分割区域中边缘的值之和类似于其他小分割区域。( = 平衡)

<Data information>   

[edge_id] : edge1, edge2, edge3 ,, etc
[edge_value] : 10, 5, 20,, etc
[edge_node1_id]: n1_1, n1_2, n1_3,, etc
[edge_node1_latitude] : 37.29188, 37.28342, 37.29563,, etc
[edge_node1_longitude] : 127.09838, 127.10327, 127.10221,, etc
[edge_node2_id]: n2_1, n2_2, n2_3,, etc 
[edge_node2_latitude] : 37.29191, 37.28301, 37.29632,, etc 
[edge_node2_longitude] : 127.09840, 127.10333, 127.10314,, etc

其次,与上面的方法类似,但是如果上面的方法比较困难,可以用边缘的中心点代替边缘。换句话说,边缘的值可以用边缘的中心点的值来代替,其余的过程与上面类似。我想将区域划分为彼此靠近的点,而不是上面提到的第一个条件(边缘之间的邻接)。而且我想确保划分区域内每个点的值的总和与其他区域相似。(=平衡)

<Data information>

[center_node_id]: c_1, c_2, c_3 ,,etc
[center_node_value]: 10, 5, 20 ,,etc
[center_node_latitude]: 37.25116, 37.25143, 37.25184 ,,etc
[center_node_longitude]: 127.11383, 127.10511, 127.10003 ,,etc

第三种方法是图或网络理论中的所谓多切方法。如果你看图片会更容易理解。通过线连接到相邻区域的中心点,我们可以创建一个图形。并且通过选择合适的链接,我们可以进行集群。我们可以根据需要划分图表。约束条件是同一集群中连接的节点的值之和类似于其他集群中其他连接节点的值之和。(=平衡)

<Data information>

[node_id]: n_1, n_2, n_3 ,, etc
[node_value]: 10, 5, 20,, etc
[node_adjacency_data] : Please refer to the attached picture.
[node_latitude]: 37.25201, 37.25211, 37.25219,, etc
[node_longitude]: 127.10195, 127.11321, 127.11377,, etc 

如果您能给我一些关于可以使用哪种算法来解决我上面提到的三个部分中的任何一个以及推荐原因的建议,我将不胜感激。并且项目的最终目标是通过实现代码来解决问题,所以如果您能给出您推荐的算法的源代码或链接,我将非常感激。(我可以使用 java 或 python)。你能帮我解决这个问题吗?如果您不了解此问题或有疑问,请告诉我。

在此处输入图像描述

[在此处输入有关邻接数据描述的图像]

标签: algorithmcluster-analysisgeospatialgraph-algorithmmathematical-optimization

解决方案


推荐阅读