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.

Craig Wright
źródło
Symulowałeś to i porównywałeś wyniki?
Adam,

Odpowiedzi:

10

n1n2n


źródło
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.

Craig Wright
źródło
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);
}
Varty
źródło