证明此算法最终终止的简便方法


10

简介和符号:

这是我算法的一个新的简单版本,它似乎终止了(根据我的实验),现在我想证明这一点。

令的符号指的是维数据点(向量)。我有三组A,B和C,使得,,: p | A | = n | B | = m | C | = l A = { x i | = 1 n } B = { x j | Ĵ = Ñ + 1 n + m } C = { x u |xiRpp|A|=n|B|=m|C|=l

A={xi|i=1,..,n}
B={xj|j=n+1,..,n+m}
C={xu|u=n+m+1,..,n+m+l}

给定,令表示从到最近点的平均欧几里得距离;和表示从到最近点的平均欧几里得距离。 d X X ķ d Ç X X ķ ÇkNdxiAxikAdxiCxikC

算法:

我有以下算法,该算法通过将一些选定的元素从A移到B以及反之亦然来迭代地修改集合A和B,并且C始终保持不变(不变)。为简单起见:该算法的目的是为了更好地分离集和使得“的点更类似于那些已知的固定的一组的 ”和“的点终于自相似和远离和最终集合那些:B B C A C BABBCACB

  • A={xiAdxiA>dxiC} ...(1)
  • A=AA ; ...(2)B=BA
  • B={xiBdxiA<dxiC } ...(3)
  • = 'B=BB ; ...(4)A=AB
  • 重复(1),(2),(3)和(4),直到:(没有元素从移动到或从到,即A'和B'变为空)或((或)B B A | A | ķABBA|A|k|B|k

该算法在两种情况下终止:

  • 当或小于或等于| B | ķ|A||B|k
  • 或最标准的情况,当,这意味着在A和B之间不再移动任何元素。A=B=

题:

如何证明该算法最终终止?我没有找到可以通过算法严格最小化或最大化的便捷势函数。我尝试了一些函数成功:函数但它不会在每次迭代时增加。函数但它不会在每次迭代时递减。函数似乎在每次迭代中都没有减少。函数 ΣXdX +ΣXxAdxC+xBdxA Σ X d X + Σ X d X Σ X d X + Σ X xAdxA+xBdxCxAdxA+xBdxBxAdxB+xBdxA似乎并不是每次迭代都在增加。那么在每次迭代中增加或减少的便利势函数是什么?还是我们应该证明函数减少但不是在每次迭代时减少(而是在某些迭代之后)?怎么样 ?

笔记:

  • 所述最近点到在一组,指:点(别人比在),具有最小欧几里得距离 。您只需取即可简化分析。x S k x S x k = 1kxSkxSxk=1
  • 我不知道这是否有帮助,但是我的初始集合具有以下属性:最初(如果是最近的点)到和是最接近点,因此始终是。这直观装置,在点更接近比点。X X ĴX bÇ X X Ç X Ĵ d š 一个Ñ Ç ë X X b< d š 一个Ñ Ç e x jx aA,B,CxiB,xjAxbCxixaCxjdistance(xi,xb)<distance(xj,xa)C ABCA
  • 如果这样可以简化分析:完全有可能考虑使用稍有不同的算法版本,在该版本中,只要将的点移至,然后将其从移至(不经过),并且可见反之亦然为。'ABABAB

3
您为什么对这种特定算法感兴趣?

1
shna:您想对任意分为三组的一组点进行什么处理?

4
@shna知道算法的目的和目标可能会改善直觉,从而帮助解决问题。

@RichardRast为了使说明简单:目的是为了更好地分离集和使得“的点更类似于那些已知的固定的一组的 ”和“的点终于自相似和远离和最后一组 ”。B B C A C BABBCACB
2013年

向美学理论的迁移被拒绝了。

Answers:


2

这是的情况的解决方案:k=1

假设算法没有终止。由于算法的状态数量有限(将点分配给和),因此算法状态必须在一个循环中重复。由于循环经历不同的状态,因此必须有一个点经常在和之间无限次切换。B A BABAB

令为在该循环中频繁切换的点。在从切换到的周期内,选择算法的第一次迭代。对于切换到,一定有至少一个点在,与。任意选择标记最小的点;定义一个函数使。请注意,还必须经常在和之间无限切换(因为停留在xxBAxAxAdxC>dist(x,x)ff(x)=xxABxA永久地),所以我们可以取等。xf(f(x)),f(f(f(x))),

由于我们的点数有限,因此f的迭代必须最终重复: 对于某些。现在查看距C的相应距离序列: 。由于重复,该序列不能均匀减小。必须有一个迭代使得fn(x)=fm(x)m>ndf(x)C,df2(x)C,...dfn(x)C,...odfo1(x)Cdfo(x)C

现在,和彼此足够接近,以使彼此位于(如果其中一个位于其中)。也就是说,它们是相互接近比它们中的是: (根据定义)fo1(x)fo(x)ACdfo(x)Cdfo1(x)C>dist(fo1(x),fo(x))f

因此,一旦和都在,它们将永远彼此保持在(请参阅算法的第1-2行)。这与所有迭代必须经常无限切换集合这一事实相矛盾。因此,对于的情况,算法终止。f ox A A f k = 1fo1(x)fo(x)AAfk=1


这有点复杂,可能仅在。相反,如果我们可以导出一个潜在函数,该函数可以显示为在每次迭代中增加或减少,则更好。或可以显示在“一些”迭代而不是1之后增加或减少k=1
。–

1
@shn我不确定您为什么批评在解决问题上比您更成功的某人的证明技术选择。尤其是当您自己的问题列出了四种使用首选技术的失败尝试时。
David Richerby 2013年

1
@DavidRicherby我不是在批评;)实际上,我在IRC上用“原因”(谁给出了这个答案)讨论了该解决方案,我们发现对于不可能用这种方式证明;因此我们推论出,如果可以导出一个潜在函数,该函数可以证明在每次迭代中都减小,那将更好。我的评论只是提供信息。k>1
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.