当前位置: 首页 > 知识库问答 >
问题:

使用Lloyd算法进行锚定分区

顾磊
2023-03-14

我可以使用Lloyd算法将一个多边形划分为n个多边形。假设我使用上述算法将下面的多边形划分为5个多边形,得到如下结果:-

但我想进行锚定分区,这意味着我希望每个子多边形至少包含一个边界点,如下所示:

是否已经对算法进行了修改,可以帮助我实现这一点?如何确保锚定?

如果您可以引用一些现有的Matlab/python代码而不是伪代码,这将非常有用?我在上面使用的代码就是从这里开始的,它执行普通的实现。

共有1个答案

东门令
2023-03-14

只是一个建议:一个简单的尝试。在正方形上定义一个势函数U(x,y)。像这样的。您可以选择参数,使其最小值为一个圆,该圆几乎是内接在正方形中的圆。或者可以自由选择不同的潜力。给定点p1=[x1;y1],p1=[x1;y1]。。。pn=[xn;yn],形成2 x n矩阵

P = [p1 p2 ... pn]; 

让Lloyd算法的一步函数是

P_out = LA(P_in)

i、 e.给定点P_in=[p1_in p2_in…pn_in]它生成它们的Voronoi图,然后计算每个Voronoi单元的质心p1_out,p2_out。。。,pn_out并将输入点移动到新输出,质心点P_out=[p1_out p2_out…pn_out]
然后您可以沿电势的负梯度应用重新定位,即。

function  P_out = GR(P_in)
   P_out = P_in - gradU(P_in); 
end

其中GRAD=gradU(P_in)是计算每个列向量的梯度向量P_in(:,j)并生成2 x n矩阵梯度的函数。

所以你的算法实际上就是

P_out = LA(GR(P_in));

也许这些点会倾向于广场的外围,避开中间部分,从而最终让沃罗诺伊细胞接触边界?我选择了一个势,假设在这种情况下矢量梯度场是不旋转的,所以不会有某种循环动力学出现,但是算法会收敛到某种十六向平衡构型(听起来可信,但我不确定)。

 类似资料:
  • 我正在尝试使用angular与主播合作,我已经做了我的研究,但没有成功,所以我正在联系你们。 我有 3 个组件 {导航栏组件, 红色组件, 蓝色组件} 导航栏组件有 2 个锚点。我希望当我单击其中一个时,它实际上会将我引导到正确的组件 导航栏组件.ts 红色. component.ts blue.component.ts app.component.html 应用程序模块

  • 关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务。 这些关系可以有两种形式: 频繁项集(frequent item sets): 经常出现在一块的物品的集合。 关联规则(associational rules): 暗示两种物品之间可能存在很强的关系。 相关术语 关联分析(关联规则学习): 从大规模数据集中寻找物品间的隐含关系被称作 关联分析(associati analysis) 或者

  • 关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务。 这些关系可以有两种形式: 频繁项集(frequent item sets): 经常出现在一块的物品的集合。 关联规则(associational rules): 暗示两种物品之间可能存在很强的关系。 相关术语 关联分析(关联规则学习): 从大规模数据集中寻找物品间的隐含关系被称作 关联分析(associati analysis) 或者

  • 介绍 CBA算法全称是Classification base of Association,就是基于关联规则进行分类的算法,说到关联规则,我们就会想到Apriori和FP-Tree算法都是关联规则挖掘算法,而CBA算法正是利用了Apriori挖掘出的关联规则,然后做分类判断,所以在某种程度上说,CBA算法也可以说是一种集成挖掘算法。 算法原理 CBA算法作为分类算法,他的分类情况也就是给定一些预先

  • 问题内容: NumPy / SciPy或相关库中是否有类似Matlab的函数? 以供参考。Procrustes分析的目的是对齐2组点(换句话说,是2个形状),以通过消除缩放,平移和旋转扭曲分量来最小化它们之间的平方距离。 Matlab中的示例: NumPy中的相同任务: 注意:我只对对齐的形状感兴趣,因为平方误差(在Matlab代码中可变)很容易从2个形状中计算出来。 问题答案: 我不知道Pyth

  • 在我正在开发的应用程序中,我需要知道一串单词是否是名词短语、动词短语等。我知道NP和VP既不是依赖项,也不是位置。我也知道要做到这一点,我可能需要某种分块工具,但我找不到任何开源工具。 在SyntaxNet输出的“她真的很喜欢可爱的黑狗”一句中: 我注意到NP“可爱的黑狗”已经放在了自己的树节点中: 所以我想知道是否有任何方法可以将SyntaxNet用作chunker?