- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 1 亿对这种形式:
(point_index, cluster_index)
目标是为每个集群选择(第一个?没关系)m
个点。簇的数量最多为 16k。如何有效地做到这一点?
m
应该很小,<=100。
我的第一次尝试:
cluster_index
对对进行排序。m
个点当前簇被选中,然后打印点,否则什么都不做直到找到下一个集群。这会产生一个:
O(nlogn)
时间复杂度,其中 n = 100m。但是请注意,我只对实际应用感兴趣,而不是对具有巨大常数的下界感兴趣!该算法将在 javascript 中执行通过笔记本电脑。
最佳答案
具有以下假设的解决方案:
根据这些假设,随机取点可以快速得出结果。要进行随机排列,您可以使用@zerkms 算法。
取一个质数 p > n。
clustercount = Array(size = c, filled_with = 0)
i = randint(0, p)
complete = 0
while (complete < c*m) {
if (clustercount[points[i].cluster] < m) {
clustercount[points[i].cluster] = 1 + clustercount[points[i].cluster]
plot(points[i])
complete = complete + 1
}
i = i + p % n
}
平均而言,此方法需要 c*log(c) + m * c * log(log(c)) + O(c)
迭代。
关于javascript - 每个簇选取 m 个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340743/
在下面的代码中,我想不必添加undefined作为filteredDevice的类型注解。我认为一个被过滤的设备不应该是未定义的,因为我过滤掉了未定义的设备。 但是如果我删除 undefined类型注
我有一个 UIButton,其文本来自服务器。按钮的宽度是固定的。我想要的是,如果按钮的文本超过按钮的宽度,文本应该在按钮内选取框。如果文本适合按钮宽度,则不应有选取框效果。 我点击了一些链接(one
我正在从头开始实现 webgl 选取,并决定走 GLSL 路线,而不是光线相交测试。 所以我将整个场景渲染到一个单独的帧缓冲区中,为每个对象分配一个唯一的颜色,该颜色作为统一变量传递给片段着色器。当场
例如,我有包含多个对象的数组, var arr = ["a", "b", "c", "d"]; 我想要的是从该数组中选取 2 个随机对象,例如“a”和“c”,并将这 2 个对象推送到另一个数组中,例如
我是一名优秀的程序员,十分优秀!