Sen ve bir arkadaşınız bir konser sırasında birbirinizi kaybettiniz ve ikiniz de hanginizin daha ileriye gittiğinden emin değilsiniz. Resmi olarak, her biri bir tamsayı koordinatındadır ve sadece daha yüksek bir koordinata doğru yürüyebilir veya yerinde kalabilir.
Siz ve arkadaşınızın tam olarak aynı algoritmayı izlediğini varsayarsak (ve hayır, "if (= =" R B ") bir şey yaparsanız :) diyemezsiniz ve ikiniz arasındaki başlangıç mesafesi (ki bu bilinen).
Siz ve arkadaşınız buluşana kadar beklenen yürüme mesafesini en aza indiren algoritma nedir?
Hem arkadaşınızın hem de kendinizin aynı sabit hızda hareket ettiğini varsayabilirsiniz.
Örnek bir basit algoritma şuna benzer:
aşamasında ( başlayarak ):
- Sağ wp adım yürüyün veyaaksi takdirdezaman birimibekleyin.
Bu algoritmayı görmek için arkadaşların olasılıkla buluşmasını sağlar 1 aşamada neler olduğunu düşünün . X adım önde olan arkadaş her zaman yürüse ve diğeri her zaman yerinde kalsa bile , ikisi arasındaki mesafe: x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x - 1
Bu nedenle, yinelemesinde, yürümeyi seçen arkadaş 3 log 3 x + 1 = 3 x mesafesini , dolayısıyla olasılık 1'i kapsayacaktır. , arkasında olan arkadaş yetişecek ve buluşacaklar.
Basit bir optimizasyon (yürüme mesafesini azaltmak için), adım yürümek yerine c x adım yürümek , c tarafından verilir: 2 + 1
Bu nedenle en iyi , bu yöntem için olan C = 3 +
Ne yazık ki, bu algoritma arkadaşların olasılık 1 ile buluşacağını garanti ederken, beklenen yürüme mesafesi sonsuzdur, bu da mümkünse kaçınmak istediğim bir şeydir.
Daha verimli bir algoritma var mı?