Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每个簇拾取m个点_Javascript_Algorithm_Data Structures_Time Complexity_Bigdata - Fatal编程技术网

Javascript 每个簇拾取m个点

Javascript 每个簇拾取m个点,javascript,algorithm,data-structures,time-complexity,bigdata,Javascript,Algorithm,Data Structures,Time Complexity,Bigdata,我有100万双这样的表: (point_index, cluster_index) 目标是为每个集群选择(第一个?没关系)m点。集群的数量最多为16k。如何有效地做到这一点 m应较小,具有以下假设的解决方案: 没有特定的数据结构,只有一个带簇的点列表 集群大小是平衡的 m.n clustercount=Array(大小=c,用=0填充) i=randint(0,p) 完成=0 while(完整

我有100万双这样的表:

(point_index, cluster_index)
目标是为每个集群选择(第一个?没关系)
m
点。集群的数量最多为16k。如何有效地做到这一点


m
应较小,具有以下假设的解决方案:

  • 没有特定的数据结构,只有一个带簇的点列表
  • 集群大小是平衡的
  • m.n

    clustercount=Array(大小=c,用=0填充)
    i=randint(0,p)
    完成=0
    while(完整

    平均而言,这种方法需要
    c*log(c)+m*c*log(log(c))+O(c)
    迭代。

    实际的JS数据结构是什么?您已经为您的对使用了括号,但每对都是数组,然后您就有了一个对数组数组数组,或者…?将其存储在
    result
    中可能更有益:只需迭代集合并填充它。@nnnnnn我还没有决定!数据还在烘焙中..我使用了一个样本,因此没有真正想到这一点,但我应该!老实说,虫族,我还没有玩过虫族和数据结构。我将对此进行研究,但如果您有时间用一个示例提供答案,那将是受欢迎的!:)@gsamaras只是一个对象,key=cluster index,values=array of points。@user1470500“如果没有一种方法可以在不重复和不需要检查的情况下执行伪随机序列?”---有:取一个大于数组中元素数的素数(P)。随机挑选第一项。然后将数组视为一个环(或仅使用
    %
    处理重叠),按所选的P递增。不确定这个算法是否有一个合适的名字,我在几年前的某个地方读过它。js中的快速脏实现
    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
    }