这个答案有两个部分,共同表明正确的界线是:Θ(logN)
- 下限(乘以第一个圆的半径)。Ω(logN)
- 匹配上限。O(logN)
下限Ω(logN)
考虑两个在点接触的单位圆。(请参见下文;p在右侧,错误从左侧开始。)在一个圆圈和另一个圆圈之间交替。臭虫会在两个圆之间的缝隙中上下弯曲,在大多数情况下会向上或向下移动,但向右缓慢移动。如果我正确完成了三角学,则在经过N步之后,距公共点的距离将为Θ (1 / √ppN,第N步将导致臭虫行走Θ(1/N),总距离为Θ(logN)。Θ(1/N−−√)NΘ(1/N)Θ(logN)
这是计算的草图。考虑该错误产生的大约两个连续步骤。他从某点转到b到c。点a和c在同一圆上;点b在另一个圆上。令o为a所在的圆的中心。考虑以下三个三角形,以减小的顺序排列:abcacboa
- 等腰三角形(回想p是公共点)。△oapp
- 三角形。△abp
- 小三角形△abc
这些三角形几乎是相似的(即,全等模缩放)。更准确地说,对于中,所有三个具有以下属性:
短腿部到长腿部的长度的比率为Θ (ε )。(我不会在这里更详细地证明这一点,但是请注意,
随着错误的传播,ϵ → 0,并且通过在每个三角形中扰动一个可忽略量的顶点,可以使这些三角形相似。)ϵ=|ap|Θ(ϵ)ϵ→0
第一个三角形的长腿和p o的长度为1 。一个p | 具有长度ε。线段a p是第二个三角形的长腿,因此三角形的短腿a b的长度为Θ (ϵ 2)。段a b是第三个三角形的长腿,因此三角形的短腿a c的长度为Θ (ϵ 3)。因此,该错误需要采取以下两个步骤:copo|ap|ϵapabΘ(ϵ2)abacΘ(ϵ3)
- 距离虫子传播的距离是Θ (ϵ 2)。|ab|+|bc|Θ(ϵ2)
- 从bug到公共点距离从ϵ减小到ϵ - Θ (ϵ 3)。pϵϵ−Θ(ϵ3)
限定时间是前步数ε 吨 ≈ 1 / 2 ķ。通过上面的(2),ϵ在大约Θ (1 / ϵ 2)步后以恒定因子减小,因此t k + 1 = t k + Θ (2 2 k)= t k + Θ (4 k)。因此,t k = Θ (4 ktkϵt≈1/2kϵΘ(1/ϵ2)tk+1=tk+Θ(22k)=tk+Θ(4k)。也就是说,在 Θ (4 ķ)步骤,从错误到公共点的距离 p为约 1 / 2 ķ。在 N步之后更改变量,从bug到公共点的距离将为 ϵ = Θ (1 / √tk=Θ(4k)Θ(4k)p1/2kN。并且,在第N步中,虫子传播Θ(ϵ2)=Θ(1/N)。因此,在所述第一行进的总距离Ñ步骤是Θ(1+1/2+1/3+。。。+1/Ñ)=Θ(登录Ñ)。ϵ=Θ(1/N−−√)NΘ(ϵ2)=Θ(1/N)NΘ(1+1/2+1/3+...+1/N)=Θ(logN)
这是下限。
它扩展到提议的变体2(据我所知),如下所示:
添加限制,即错误应移动到最近放置的两个圆的交点中的最近点,这无济于事。也就是说,上面的下限仍然适用。要知道为什么,我们将通过添加一个无关的圆圈来修改上面的示例,该圆圈允许错误在仍然沿相同路径行驶时满足限制:Ω(logN)
绿色和蓝色圆圈是上例中的两个圆圈。交点和b是相同的一个和b如上面的例子。红色圆圈是新的“外部”圆圈。先前的顺序在蓝色和绿色圆圈之间交替。新序列将是该序列,但在旧序列的每个圆之前会添加红色圆圈:红色,蓝色,红色,绿色,红色,蓝色,红色,绿色,红色,蓝色,...abab
假设错误是坐在蓝色放置后。下一个圆圈是红色。红色包含该错误,因此该错误不会消失。下一个圆圈是绿色。现在,错误移至b(这是绿色和红色圆圈相交处的最近点)。通过重复此步骤,该错误会像以前一样传播。ab
O的上限(log N )O(logN)
我只画证明。
修正任何顺序的圆圈。我们将认为,当,臭虫在前N个步骤中行进的总距离为O (log N )。不失一般性地假设第一个圆的半径为1。N→∞NO(logN)
NpNp
1/logN
the reduction in the distance to pthe distance traveled in the step.
O(logN)O(logN)p1/logN
O(logN)
abob′pb→|pa|=|pb|
考虑以下三角形:
- △opb
- △pba
- △abb′
ϵΘ(ϵ)
|bb′||ab|=Θ(|ab||pa|)=Θ(|pa||bo|)=Θ(ϵ).
|bo|[1/2,1]|ab|=Θ(|pa|2/|bo|)=Θ(|pa|2)|bb′|=Θ(|ab||pa|/|bo|)=Θ(|pa|3)
pdd′d=|pa|d′=|pb|d−d′=|bb′|
d|bb′|Ω(d3)
d/2O(1/d2)d=1/2k1/2k+1O(4k)1/2kO(1/4k)npO(1/n−−√)
n|ab|O((the current distance to p)2)=O(1/n)N[1/2,1]
∑n=1NO(1/n)=O(logN).
k[1/2k,1/2k+1]O(log(N)/2k)kO(logN)