あなたと友人は、コンサートのライン上でお互いを失いました。正式には、それぞれが何らかの整数座標にあり、より高い座標に向かって歩くか、所定の位置にとどまることがあります。
あなたとあなたの友人がまったく同じアルゴリズムに従っていると仮定して(そして、いいえ、「if(name == "R B")何もしない:)」と仮定し、あなたの二人の間の最初の距離はでしたあなたに知られている)。
あなたとあなたの友人が出会うまで、予想される歩行距離を最小化するアルゴリズムは何ですか?
あなたはあなたの友人とあなた自身が同じ一定の速度で動いていると仮定するかもしれません。
簡単なアルゴリズムの例は次のようになります。
ステージ(0から開始):
- 右のwpにステップ歩きます1それ以外の場合は 2または3n時間単位待機します。
このアルゴリズムを見るために、友人は確率1で会います。ステージで何が起こるかを考えます。x一歩進んだ友人が常に歩き、もう一方が常に所定の位置に留まったとしても、両者の距離は x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x − 1
したがって、反復で、歩くことを選択した友人は、3 log 3 x + 1 = 3 xの距離をカバーするため、確率1になります。、背後にいる友人が追いつき、彼らは会います。
単純な最適化(歩行距離を短縮する)は、ステップを歩く代わりに、c xステップを歩くことです。ここで、cは2 + 1で与えられます。
したがって、このアルゴリズムの最適なはc = 3 + √です。
残念ながら、このアルゴリズムは友人が確率1で会うことを保証しますが、予想される歩行距離は無限です。これは可能な限り避けたいものです。
より効率的なアルゴリズムはありますか?