java - 按簇索引 2d 点的算法

标签 java algorithm indexing geometry cluster-analysis

<分区>

我有一个问题要解决,在网上搜索后我没有找到任何可用的算法,而且我自己也没有能够想出一个令人满意的解决方案。

问题定义:

我得到了一组 N 多点,由它们的 X 和 Y 坐标定义,我应该为每个点提供一个介于 0 和 N 之间的唯一索引。不过有几个条件:

1)如果两点之间的几何距离很小,那么它们的指数之差也应该很小。

2) 如果点 A 具有比点 B 更高的 X 坐标,则它也应该具有更高的索引值。

3) 如果点 A 的 Y 坐标比点 B 高,它也应该有一个更高的索引值。

其他:

由于数据相当小(50 ~ 100 点),因此算法不需要特别快或特别高效。

我需要这个算法来创建一个只有 2 个按钮来浏览数据集的用户界面。使用一个按钮,用户选择下一个点,使用另一个按钮,用户选择上一个点。

欢迎所有建议。提前致谢。

示例图片:

这是一个可能的结果示例。请注意如何不满足所有点的条件(因为那是不可能的),但索引如何仍然很好地分布在集群中。

Example Output

最佳答案

Morton curve aka Z-order (Wikipedia) 对点进行排序.

然后分配数字。

关于java - 按簇索引 2d 点的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47127265/

相关文章:

python - Pandas 数据框按列索引

algorithm - 给定最大匹配找到二分图的最小顶点覆盖

database - 你怎么知道什么是好的索引?

java - 执行键盘操作时遇到问题

java - 如何使用 spring boot 多个用户通过rabbitmq发送消息

arrays - 查找 "divide-and-conquer"算法的数组索引?

ruby - 算法的大O复杂度

mysql - 使用 select count(*) 更新查询速度较慢

java - edittext可见意味着我如何检查android中的if条件

java - dropwizard-testing 资源测试在构建 ResourceTestRule 时爆炸