Cette réponse comporte deux parties, montrant ensemble que la borne correcte est :Θ(logN)
- Une borne inférieure de (multipliée par le rayon du premier cercle).Ω(logN)
- Une limite supérieure correspondante de .O(logN)
Limite inférieure de Ω(logN)
Considérons deux cercles unitaires qui se touchent en un point . (Voir ci-dessous; p est à droite, le bogue commence à gauche.) Alterner entre un cercle et l'autre. Le bug se déplacera de haut en bas en zigzaguant à travers la crevasse entre les deux cercles, se déplaçant principalement de haut en bas mais progressant également lentement vers la droite. Si j'ai fait la trigonométrie correctement, après N étapes, la distance du point commun sera ΘppN, et laNème étape fera marcher le bugΘ(1/N), pour une distance totale deΘ(logΘ(1/N−−√)NΘ(1/N) .Θ(logN)
Voici un croquis des calculs. Considérez deux étapes consécutives que le bogue fait. Il va d'un certain point , à b , à c . Les points a et c sont sur le même cercle; le point b est sur l'autre cercle. Soit oabcacbo être le centre du cercle qui est allumé. Considérez les trois triangles suivants, par ordre décroissant de taille:a
- Le triangle isocèle (rappel p est le point commun).△oapp
- Le triangle .△abp
- Le petit triangle △abc
Ces triangles sont presque similaires (c.-à-d. Mise à l'échelle modulo congruente). Plus précisément, pour , les trois ont la propriété suivante:
le rapport de la longueur de la jambe courte à la jambe longue est Θ ( ϵ )ϵ=|ap|Θ(ϵ) . (Je ne le prouverai pas plus en détail ici, mais notez que
fur et à mesure que le bogue marche, et en perturbant un sommet dans chaque triangle d'une quantité négligeable, les triangles peuvent être rendus similaires.)ϵ→0
Les longues jambes et p o du premier triangle ont une longueur 1. Sa jambe courte | a p | a une longueur ϵ . Le segment a p est une longue jambe du deuxième triangle, de sorte que la jambe courte du triangle a b a une longueur Θ ( ϵ 2 ) . Le segment a b est une longue jambe du troisième triangle, de sorte que la jambe courte du triangle a c a une longueur Θ ( ϵ 3 ) . Ainsi, dans ces deux étapes que le bogue prend:copo|ap|ϵapabΘ(ϵ2)abacΘ(ϵ3)
- La distance le bug se déplace est Θ (|ab|+|bc| .Θ(ϵ2)
- La distance entre le bogue et le point commun diminue de ϵ à ϵ - Θ (pϵ .ϵ−Θ(ϵ3)
Définir le temps étant le nombre d'étapes avant ε t ≈ une / deux k . Par (2) ci-dessus, ϵ diminue d'un facteur constant après environ Θ ( 1 / ϵ 2 ) pas, donc t k + 1 = t k + Θ ( 2 2 k ) = t k + Θ ( 4 k ) . Ainsi, t k = Θ ( 4 ktkϵt≈1/2kϵΘ(1/ϵ2)tk+1=tk+Θ(22k)=tk+Θ(4k) . Autrement dit, après Θtk=Θ(4k) des étapes, la distance entre le bogue au point commun p sera d'environ 1 / 2 k . En changeant les variables, après N étapes, la distance entre le bug et le point commun sera ϵ = Θ (Θ(4k)p1/2kN. Et, à laNème étape, le bug se déplaceΘ(ϵ2)=Θ(1/N). Donc la distance totale parcourue dans les premiersNétapes estΘ(1+1/deux+1/trois+...+1/N)=Θ(ϵ=Θ(1/N−−√)NΘ(ϵ2)=Θ(1/N)N .Θ(1+1/2+1/3+...+1/N)=Θ(logN)
Ceci est la limite inférieure.
Il s'étend à la variante 2 proposée (si je comprends bien), comme suit:
L'ajout de la restriction selon laquelle le bogue doit se déplacer vers le point le plus proche de l'intersection des deux derniers cercles placés n'aide pas. C'est-à-dire que la borne inférieure ci-dessus s'applique toujours. Pour voir pourquoi, nous allons modifier l'exemple ci-dessus en ajoutant un seul cercle étranger qui permet au bogue de respecter la restriction tout en parcourant le même chemin:Ω(logN)
Les cercles vert et bleu sont les deux cercles de l'exemple ci-dessus. Les points d'intersection et b sont les mêmes a et b que dans l'exemple ci-dessus. Le cercle rouge est le nouveau cercle "étranger". La séquence précédente alternait entre les cercles bleu et vert. La nouvelle séquence sera cette séquence, mais avec le cercle rouge ajouté avant chaque cercle de l'ancienne séquence: rouge, bleu, rouge, vert, rouge, bleu, rouge, vert, rouge, bleu, ...abab
Supposons que le bug est assis à après le bleu est placé. Le prochain cercle placé est rouge. Le rouge contient le bug, donc le bug ne bouge pas. Le prochain cercle placé est vert. Maintenant, le bug se déplace vers b (qui est le point le plus proche de l'intersection des cercles vert et rouge). En répétant cela, le bug se déplace comme avant.ab
Limite supérieure de O(logN)
Je ne fais qu'esquisser la preuve.
Corrigez toute séquence de cercles. Nous soutiendrons que comme , la distance totale parcourue par le bug dans les N premières étapes est O ( log N ) . Supposons sans perte de généralité que le premier cercle a un rayon de 1.N→∞NO(logN)
Fixe un arbitrairement grand . Soit p par n'importe quel point de l'intersection des N premiers cercles. Notez qu'en raison de la façon dont le bug se déplace, à chaque étape qu'il se déplace, il se rapproche de p .NpNp
Considérons d'abord les étapes où le rapport suivant est d'au moins :
la réduction de la distance à p1/logN
La distance totale parcourue à ces étapes estO(logN), car la distance totale parcourue à ces étapes estO(logN)multipliée par la distance initiale jusqu'àp. Il suffit donc de délimiter la distance totale parcourue dans les autres étapes --- celles dans lesquelles ce rapport est au maximum de1/logN
the reduction in the distance to pthe distance traveled in the step.
O(logN)O(logN)p1/logN .
Tout d'abord, nous soutenons quelque chose de légèrement plus faible: que la distance totale parcourue à de telles étapes
avant que le rayon du cercle ne diminue à 1/2 ou moins soit O(logN) . (Nous montrerons plus tard que cela suffit pour donner la limite.)
Considérez une telle étape. Soit et b , respectivement, les emplacements du bogue avant et après l'étape. Soit o le centre du cercle courant. Soit b ′ le point du rayon → p b tel que | p a | = | p b | :abob′pb→|pa|=|pb|
Considérez les triangles suivants:
- △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