Ty i przyjaciel zgubiliście się na linii na koncercie, i żaden nie jest pewien, który z was jest dalej. Formalnie każda z nich ma jakąś całkowitą współrzędną i może podążać w kierunku wyższej współrzędnej lub pozostać na miejscu.
Zakładając, że ty i twój przyjaciel przestrzegacie dokładnie tego samego algorytmu (i nie, nie można powiedzieć „jeśli (name ==" R B ”) zrób coś :)), a początkowa odległość między wami wynosiła (co nie jest znane tobie).
Jaki jest algorytm, który minimalizuje oczekiwany dystans pieszy do spotkania się ciebie i twojego przyjaciela?
Możesz założyć, że zarówno twój przyjaciel, jak i ty poruszamy się z tą samą stałą prędkością.
Przykładowy prosty algorytm mógłby wyglądać następująco:
Na etapie (od 0 ):
- Przejdź kroków w prawo wp 1 lub poczekaj3njednostek czasu inaczej.
Aby zobaczyć ten algorytm, przyjaciele spotykają się z prawdopodobieństwem 1 zastanów się, co dzieje się na etapie . Nawet jeśli przyjaciel, który był x krok do przodu zawsze chodził, a drugi zawsze pozostawał na miejscu, odległość między nimi byłaby: x + 1 + 3 + 9 + … + 3 log 3 x = 2
Dlatego przy iteracji przyjaciel, który zdecyduje się przejść, pokona odległość 3 dziennika 3 x + 1 = 3 x , stąd z prawdopodobieństwem 1 , przyjaciel, który jest z tyłu, dogoni i spotka się.
Prostą optymalizacją (w celu zmniejszenia odległości chodzenia) byłoby, zamiast chodzenia kroków, chodzenie c x kroków, gdzie c jest podane przez: 2 + 1
Dlatego optymalnym dla tego algorytmu jest c
Niestety, podczas gdy ten algorytm gwarantuje, że znajomi spotkają się z prawdopodobieństwem 1, oczekiwany dystans marszu jest nieskończony, czego chciałbym uniknąć, jeśli to możliwe.
Czy istnieje bardziej wydajny algorytm?