Алгоритм разделения большой площади координатного пространства на более мелкие на лету при выполнении определенных условий - PullRequest
0 голосов
/ 02 июня 2018

Я работаю над проектом разделения области координатного пространства.Поскольку мне нужна ваша помощь, я объяснил подробно.Так что не кажется сложным понять проблему.

Ключом является разделение больших площадей на маленькие секции, которые соответствуют критериям.Критерии описаны ниже.Я думаю, что есть три подхода к решению конкретных проблем, которые я пытаюсь решить.Если вы считаете, что есть лучший подход к этой проблеме, пожалуйста, порекомендуйте.

Во-первых, когда пересечение полос называется узлом, большая область координатного пространства состоит из множества ребер (= полос), которые соединяютузлы, и каждое ребро имеет определенное значение.Я хочу разделить большую область на столько маленьких секций, сколько мне нужно, где ребра в сегментированной зоне должны быть смежными друг с другом, а сумма значений ребер в разделенной зоне аналогична другой маленькой разделенной зоне. (= балансировка)

<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). Можете ли вы помочь мне с этим?если вы не понимаете эту проблему или у вас есть вопросы, пожалуйста, сообщите мне.

enter image description here

[enter image about adjacency data description here]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...