Anda dan seorang teman kehilangan satu sama lain pada saat konser, dan tidak ada yang yakin Anda lebih maju. Secara formal, masing-masing berada pada koordinat bilangan bulat dan hanya dapat berjalan menuju koordinat yang lebih tinggi atau tetap di tempatnya.
Anggap Anda dan teman Anda mengikuti algoritma yang sama persis (dan tidak, Anda mungkin tidak mengatakan "jika (nama ==" R B ") melakukan sesuatu :)), dan jarak awal antara Anda berdua adalah (yang tidak diketahui oleh Anda).
Apa algoritma yang meminimalkan jarak berjalan yang diharapkan sampai Anda dan teman Anda bertemu?
Anda mungkin menganggap teman dan diri Anda bergerak dalam kecepatan konstan yang sama.
Contoh algoritma sederhana adalah sesuatu seperti:
Pada tahap (mulai dari 0 ):
- Jalan langkah ke kanan wp 1 atau tunggu3nunit waktu jika tidak.
Untuk melihat algoritma ini membuat teman-teman bertemu dengan probabilitas 1 mempertimbangkan apa yang terjadi pada tahap . Bahkan jika teman yang x langkah maju selalu berjalan dan yang lain selalu tetap di tempatnya, jarak antara keduanya adalah: x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x - 1
Oleh karena itu, di iterasi, teman yang memilih untuk berjalan kaki akan menutupi jarak 3 log 3 x + 1 = 3 x , maka dengan probabilitas 1 , teman yang ada di belakang akan menyusul dan mereka akan bertemu.
Optimalisasi sederhana (untuk mengurangi jarak berjalan) adalah, alih-alih berjalan langkah, berjalan c x langkah, di mana c diberikan oleh: 2 + 1
Karenanya optimal untuk algoritma ini adalah c = 3 + √
Sayangnya, meskipun algoritma ini menjamin bahwa teman-teman akan bertemu dengan probabilitas 1, jarak jalan kaki yang diharapkan tidak terbatas, yang merupakan sesuatu yang ingin saya hindari jika memungkinkan.
Apakah ada algoritma yang lebih efisien?