Этот ответ состоит из двух частей, вместе показывающих, что правильная граница равна :Θ(logN)
- Нижняя граница (умноженная на радиус первой окружности).Ω(logN)
- Соответствующая верхняя граница .O(logN)
Нижняя граница Ω(logN)
Рассмотрим две единичные окружности, которые касаются точки . (См. Ниже; p справа, ошибка начинается слева.) Поочередно между одним кружком и другим. Жук будет двигаться вверх и вниз, зигзагообразно, через щель между двумя кругами, двигаясь в основном вверх и вниз, но также медленно продвигаясь вправо. Если я правильно выполнил тригонометрию, после N шагов расстояние от общей точки будет равно Θ ( 1 / √ppN, иN-й шаг приведет к тому, что ошибка пройдетΘ(1/N), на общее расстояниеΘ(logN).Θ(1/N−−√)NΘ(1/N)Θ(logN)
Вот эскиз расчетов. Рассмотрим два последовательных шага, которые делает ошибка. Он идет от некоторой точки к б , к ц . Очки и гр находятся на той же окружности; точка б находится на другом круге. Позвольте o быть центром круга, на котором находится a . Рассмотрим следующие три треугольника в порядке уменьшения размера:abcacboa
- Равнобедренный треугольник (напомним, что p является общей точкой).△oapp
- Треугольник .△abp
- Маленький треугольник △abc
Эти треугольники почти одинаковы (то есть, конгруэнтно по модулю масштабирования). Точнее, для все три имеют следующее свойство:
отношение длины короткой ноги к длинной составляет Θ ( ϵ ) . (Я не буду доказывать это более подробно здесь, но обратите внимание, что ϵ → 0 по
мере того, как ошибка проходит, и, возмущая одну вершину в каждом треугольнике незначительным количеством, треугольники можно сделать похожими.)ϵ=|ap|Θ(ϵ)ϵ→0
Длинные ножки и p o первого треугольника имеют длину 1. Его короткая ножка | р | имеет длину ϵ . Сегмент a p является длинной ногой второго треугольника, так что короткая нога треугольника a b имеет длину Θ ( ϵ 2 ) . Сегмент a b - это длинный отрезок третьего треугольника, поэтому короткий отрезок треугольника a c имеет длину Θ ( ϵ 3 ) . Таким образом, в этих двух шагах, которые принимает ошибка:copo|ap|ϵapabΘ(ϵ2)abacΘ(ϵ3)
- The distance |ab|+|bc| the bug travels is Θ(ϵ2).
- The distance from the bug to the common point p decreases from ϵ to ϵ−Θ(ϵ3).
tkϵt≈1/2kϵΘ(1/ϵ2) steps,
so tk+1=tk+Θ(22k)=tk+Θ(4k).
Thus, tk=Θ(4k).
That is, after Θ(4k) steps,
the distance from the bug to the common point p will be about 1/2k.
Changing variables, after N steps,
the distance from the bug to the common point will be ϵ=Θ(1/N−−√)NΘ(ϵ2)=Θ(1/N).
So the total distance traveled in the first N steps is Θ(1+1/2+1/3+...+1/N)=Θ(logN).
This is the lower bound.
It extends to proposed Variant 2 (as I understand it), as follows:
Adding the restriction that the bug should move to the nearest point in the intersection of the two most recently placed circles does not help. That is, the Ω(logN) lower bound above still applies. To see why, we will modify the example above by adding a single extraneous circle that allows the bug to meet the restriction while still traveling the same path:
The green and blue circles are the two circles from the example above. The intersection points a and b are the same a and b as in the example above. The red circle is the new "extraneous" circle. The previous sequence alternated between the blue and green circles. The new sequence will be this sequence, but with the red circle added before every circle in the old sequence: red, blue, red, green, red, blue, red, green, red, blue, ...
Suppose the bug is sitting at a after blue is placed. The next circle placed is red. Red contains the bug, so the bug doesn't move. The next circle placed is green. Now the bug moves to b (which is the closest point on the intersection of the green and red circles). By repeating this, the bug travels as before.
Upper bound of O(logN)
I only sketch the proof.
N→∞NO(logN).
Assume without loss of generality that the first circle has radius 1.
NpNp
1/logN:
the reduction in the distance to pthe distance traveled in the step.
The total distance traveled in such steps is
O(logN),
because the total distance traveled in such steps
is
O(logN) times the initial distance to
p.
So we only need to bound the total distance traveled in the other steps ---
those in which that ratio is at most
1/logN.
First, we argue something slightly weaker:
that the total distance traveled in such steps
before the circle radius decreases to 1/2 or less is O(logN).
(We show later this is enough to give the bound.)
Consider any such step.
Let a and b, respectively, denote the locations of the bug before and after the step.
Let o denote the center of the current circle.
Let b′ denote the point on the ray pb→ such that |pa|=|pb|:
Consider the following triangles:
- △opb
- △pba
- △abb′
By geometric arguments similar to those in the lower bound,
for some ϵ,
each of these triangles has two long legs and one short leg,
and the ratio (for each triangle) of the short leg length
to the long leg lengths is Θ(ϵ):
|bb′||ab|=Θ(|ab||pa|)=Θ(|pa||bo|)=Θ(ϵ).
This equation and the assumption that |bo|, which is the circle radius,
is in [1/2,1] imply
that |ab|=Θ(|pa|2/|bo|)=Θ(|pa|2),
and then that |bb′|=Θ(|ab||pa|/|bo|)=Θ(|pa|3).
Now we focus on the bug's distance to p.
Call it d before the step, and d′ after the step.
(Note d=|pa|, d′=|pb|, and d−d′=|bb′|.)
In this step, this distance d reduces by |bb′|,
which by the above observations is Ω(d3).
Thus, the number of additional steps required to reduce the distance
by a factor of 2 (to at most d/2) is O(1/d2).
Changing variables, if d=1/2k,
the number of additional steps required to bring the distance below
1/2k+1 is O(4k). Since the sum is geometric,
the total number of steps required to bring the distance below 1/2k is O(1/4k).
Changing variables again,
after n steps, the distance to p will be O(1/n−−√).
Finally, recalling the displayed equation several paragraphs up,
in the nth step, the distance that the bug travels, i.e. |ab|,
is O((the current distance to p)2)=O(1/n). Thus,
the total distance traveled in the first N such steps
while the circle radius is in [1/2,1]
is at most
∑n=1NO(1/n)=O(logN).
By scaling, we conclude that, for any k, the total distance traveled
while the circle radius is in the range [1/2k,1/2k+1]
is O(log(N)/2k).
Summing over k, the total distance traveled is O(logN).
QED