Oczekiwana liczba niewidzialnych kart przy dobieraniu


10

Mamy talię kart. Losujemy z niego karty jednolicie losowo z wymianą. Po 2 n losowaniach, jakiej oczekiwanej liczby kart nigdy nie wybrałeś?n2n

To pytanie jest częścią 2 problemu 2.12 w

M. Mitzenmacher i E. Upfal, Prawdopodobieństwo i obliczenia: randomizowane algorytmy i analiza probabilistyczna , Cambridge University Press, 2005.

Co więcej, nie jest to zadanie domowe. To samokształcenie i po prostu utknąłem.

Moja dotychczasowa odpowiedź brzmi:

Niech być liczba oddzielnych kart traktowany po I th rysować. Następnie:Xii

E[Xi]=k=1nk(knP(Xi1=k)+nk1nP(Xi1=k1))

Chodzi o to, że za każdym razem, gdy dobieramy, albo dobieramy kartę, którą widzieliśmy, albo dobieramy kartę, której nie widzieliśmy, i że możemy to zdefiniować rekurencyjnie.

2nnE[X2n]

Uważam, że jest to poprawne, ale musi istnieć prostsze rozwiązanie.

Każda pomoc byłaby bardzo mile widziana.


Symulowałeś to i porównywałeś wyniki?
Adam,

Odpowiedzi:


10

n1n2n


3
(+1) To dobry początek. Połączenie tego z liniowością oczekiwań prowadzi do ekonomicznego i eleganckiego rozwiązania.
kardynał

6

Dziękuję Mike za podpowiedź.

Właśnie to wymyśliłem.

XiXi=1ithpi=P(Xi=1)=(n1n)2npiip=pi

X=i=1nXi2n

E[X]=E[i=1nXi]=i=1nE[Xi]=i=1np=np

I to chyba tak.


4
npe2

To może być trochę bardziej skomplikowane. Prawdopodobieństwo, że karta (i) zostanie pominięta, jest takie, jak napisałeś. Jednak gdy wiemy, że karta (i) została pominięta, prawdopodobieństwo braku karty (j) zmienia się. Nie wiem, czy kwestia niezależności zmieni ostateczny wynik, ale komplikuje wyprowadzenie.
Emil Friedman,

@Emil Friedman: Oczekiwanie jest liniowe niezależnie od tego, czy lata są niezależne, czy nie. Brak niezależności wpływa na wielkości takie jak wariancja, ale nie na oczekiwania.
Douglas Zare

4

Oto trochę kodu R do weryfikacji teorii.

evCards <- function(n) 
{
    iter <- 10000;
    cards <- 1:n;
    result <- 0;
    for (i in 1:iter) {
        draws <- sample(cards,2*n,T);
        uniqueDraws <- unique(draws,F);
        noUnique <- length(uniqueDraws);
        noNotSeen <- n - noUnique;
        result <- result + noNotSeen;
    }
    simulAvg <- result/iter;
    theoryAvg <- n * ((n-1)/n)^(2*n);
    output <-list(simulAvg=simulAvg,theoryAvg=theoryAvg);
    return (output);
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.