Php 有效地分组节点?

Php 有效地分组节点?,php,javascript,containers,grouping,nodes,Php,Javascript,Containers,Grouping,Nodes,虽然大多数问题都是关于基于相似性(pidgeonholes)对节点进行分组的,但我只想根据节点的接近程度对节点进行分组 我有一个庞大、密集的节点集合——可能有数百万个。在屏幕上,它们占据了一定的空间,因此可以认为它们具有一定的尺寸 我试图做的是将这些节点有效地分组到单个包含节点中,这既节省了处理时间,也节省了每个容器收集更多节点的时间 我目前的尝试要么太慢,要么不起作用,但都基于我想到的同一个解决方案:随机选取一个节点及其周围的节点并对其分组,然后选择最有效的容器,计算出许多可能的容器 你的想法

虽然大多数问题都是关于基于相似性(pidgeonholes)对节点进行分组的,但我只想根据节点的接近程度对节点进行分组

我有一个庞大、密集的节点集合——可能有数百万个。在屏幕上,它们占据了一定的空间,因此可以认为它们具有一定的尺寸

我试图做的是将这些节点有效地分组到单个包含节点中,这既节省了处理时间,也节省了每个容器收集更多节点的时间

我目前的尝试要么太慢,要么不起作用,但都基于我想到的同一个解决方案:随机选取一个节点及其周围的节点并对其分组,然后选择最有效的容器,计算出许多可能的容器

你的想法是什么,不是用任何语言,但我将使用PHP或JavaScript来实现这一点

Edit

我忘了提到节点将被流式传输,因此它需要接受无限的节点,将它们放入容器中,创建新的容器,甚至根据需要删除它们,用于多达数百万个容器。这将是最理想的。这个问题称为集群。您有一组节点和一个计算任意两个节点之间距离的函数
m
。现在搜索簇,使每个簇内所有节点之间的所有距离之和最小

有一些简单的算法可以做到这一点。搜索和,例如。这两种方法与您的方法非常相似。更有效的版本是
CLARANS
算法[NH94]。我没有为您找到任何好的来源,但您可以这样做:

(德语)关于集群的一般脚本。在第45页的伪代码中包含CLARANS

解释CLARANS的英文脚本

关于克拉兰的论文

名称中的“k”是群集数。对于这3种算法,您必须事先指定簇的数量


有关不同的方法,请参见算法。对于这个算法,您不需要集群的数量,但是您必须提供一些关于节点的其他知识。维基百科的文章对此做了很好的解释。:-)

这个问题称为集群。您有一组节点和一个计算任意两个节点之间距离的函数
m
。现在搜索簇,使每个簇内所有节点之间的所有距离之和最小

有一些简单的算法可以做到这一点。搜索和,例如。这两种方法与您的方法非常相似。更有效的版本是
CLARANS
算法[NH94]。我没有为您找到任何好的来源,但您可以这样做:

(德语)关于集群的一般脚本。在第45页的伪代码中包含CLARANS

解释CLARANS的英文脚本

关于克拉兰的论文

名称中的“k”是群集数。对于这3种算法,您必须事先指定簇的数量


有关不同的方法,请参见算法。对于这个算法,您不需要集群的数量,但是您必须提供一些关于节点的其他知识。维基百科的文章对此做了很好的解释。:-)

我在自己的代码中使用了术语集群,这正是我想要的。谢谢你的算法。我会看看它们,让你知道它们是否是合适的解决方案。看看我设计的那些算法,它们是混合的。我将随机放置我的“k”容器,找到离每个节点最近的容器,表示这些组,然后将容器移动到那里,重复几次。我需要改进的部分是循环。。有些节点将超出范围,我想知道是否有一种更快的方法可以只循环其他节点范围内的节点。。它将是密集的,但可能有非常稀疏的区域,节点超出范围。你已经读过关于DBSCAN的文章了吗?这似乎是你想要的。老实说,它不太符合我的理想。。如果我需要的话,我会更仔细地阅读,我。。扫描了一下我的理想是:我将一个节点馈送到一个函数中,该函数将其放入其容器中,必要时创建一个新容器。这样我就可以对节点进行流式处理。它还可以在必要时移动容器,但我确实希望它能够处理节点流。我目前的想法是让网格像一块布一样工作,某个区域中的节点越多,布垂度就越大,局部最大值就是我的容器…再多一个节点-我希望避免聚类中出现奇怪的形状,理想情况下只是圆或凸多边形。。。当你点击一个群组时,它会放大,显示里面的一切,所以当它被放大时,它需要能够很好地填充查看区域。。。它几乎是最近的邻居,但能够接受不断变化的容器位置的节点流。我在自己的代码中使用了术语集群,这正是我想要的。谢谢你的算法。我会看看它们,让你知道它们是否是合适的解决方案。看看我设计的那些算法,它们是混合的。我将随机放置我的“k”容器,找到离每个节点最近的容器,表示这些组,然后将容器移动到那里,重复几次。我需要改进的部分是循环。。有些节点将超出范围,我想知道是否有一种更快的方法可以只循环其他节点范围内的节点。。它将是密集的,但可能有非常稀疏的区域,节点超出范围。你已经读过关于DBSCAN的文章了吗?这似乎是你想要的。老实说,它不太符合我的理想。。如果我需要的话,我会更仔细地阅读,我。。扫描了一下我的理想是:我将一个节点馈送到一个函数中,该函数将其放入其容器中,必要时创建一个新容器。这样我就可以对节点进行流式处理。它可能是艾尔