Rozważ następujący proces:
Istnieje pojemników ułożonych od góry do dołu. Początkowo każdy pojemnik zawiera jedną kulkę. Na każdym kroku my
- wybierz losowo piłkę równomiernie i
- przenieś wszystkie kule z pojemnika zawierającego do pojemnika poniżej. Jeśli był to już najniższy kosz, usuwamy kulki z procesu.
Ile kroków wymaga oczekiwania do zakończenia procesu, tj. Do momentu, gdy wszystkie kulek zostaną usunięte z procesu? Czy zostało to wcześniej zbadane? Czy odpowiedź wynika łatwo ze znanych technik?
W najlepszym przypadku proces może zakończyć się po krokach. W najgorszym przypadku może to zająć kroków. Oba przypadki powinny być jednak bardzo mało prawdopodobne. Moje przypuszczenie jest takie, że wymaga kroków i przeprowadziłem kilka eksperymentów, które wydają się to potwierdzać.
(Zauważ, że wybranie pojemnika równomiernie losowo jest zupełnie innym procesem, który oczywiście zajmie kroki do końca.)
Odpowiedzi:
Nie do końca odpowiedź, ale obszerny komentarz do odpowiedzi Andrása.
Odpowiedź Andrása zawiera niezłą intuicję, choć nie sądzę, aby była to dokładna kalkulacja oczekiwanej liczby kroków. Myślę, że jest to dobre przybliżenie do odpowiedzi, ale wydaje się, że nie radzi sobie właściwie z przypadkami, w których pojemnik poniżej najwyższego zajętego pojemnika staje się pusty, zanim górny pojemnik zostanie opróżniony w dół. Mimo to może to być rozsądne przybliżenie (nie jestem pewien).
Jego obliczenia zawierają błąd, który wpływa na skalowanie. Wezmę dokładnie ten sam punkt początkowy, powtórzę i rozszerzę obliczenia.
Pomija współczynnik p wewnątrz sumy, ponieważ prawdopodobieństwo losowego wyboru prawidłowego bin wynosi zamiast1pn . W rezultacie mamy1n
gdzie jest n-tą liczbą harmonicznych . Aby zbliżyć H n , możemy po prostu zastąpić sumę całką: H n ≈ ∫ n + 1 1 1Hn=∑np=11/p Hn . Zatem skalowanie wynosin(1+log(n+1))lub okołonlog(n+1). Chociaż to skalowanie nie pasuje dokładnie do skalowania problemu (patrz symulacja poniżej), jest ono prawie dokładnie o współczynniklog(2).Hn≈∫n+111xdx=log(n+1) n(1+log(n+1)) nlog(n+1) log(2)
Czerwone kółka: Punkty danych z symulacji procesu uśrednione dla 10 000 przebiegów. Zielony: . Niebieski: n log ( n + 1 ) .nlog2(n+1) nlog(n+1)
źródło
Edycja: Pozostawiam tę odpowiedź taką, jaka jest (na razie), aby zilustrować niechlujny proces dowodzenia twierdzeń, coś, co zostało pominięte w opublikowanych artykułach. Podstawową intuicją jest to, że wystarczy skupić się na górnej piłce, która zamiata wszystko pod nią. Zobacz komentarze (w szczególności @Michael wskazujący, że mogą wystąpić luki) i późniejszą odpowiedź @ Joe na to, w jaki sposób błędy zostały zidentyfikowane i poprawione. Szczególnie podoba mi się użycie eksperymentów przez Joe, aby dwukrotnie sprawdzić, czy formuły są rozsądne.
źródło