Análise
Vamos adivinhar e depois melhorar sistematicamente o palpite até que esteja correto.
Comece adivinhando que a resposta é . Claro que está errado. Para ver o quão errado, rotule um parceiro em cada par como "Vermelho" e o outro como "Azul". Da perspectiva de qualquer indivíduo vermelho, existe uma chance de que o parceiro (azul) fique sentado à frente deles. Como não há indivíduos vermelhos, vamos subtrair desse palpite inicial.11/(2n−1)nn×1/(2n−1)
Mas espere - isso ainda não está certo, porque todos os pares de casais foram contados duas vezes. Se um casal estiver sentado do lado oposto, restam casais, lugares e, do ponto de vista de qualquer indivíduo vermelho, a chance de fazer parte de um segundo casal é . Portanto, precisamos adicionar novamente .n−12n−21/(2n−3)(n2)×1/(2n−1)×1/(2n−3)
Mas agora temos contribuições subestimadas para o resultado de triplos casais, que precisamos corrigir. E assim continua, até que finalmente acomodamos todos os casais na fórmula. (Obviamente, este é apenas o Princípio da Inclusão-Exclusão em ação.) n
A fórmula resultante é
∑i=0n(−1)i(ni)1(2n−1)(2n−3)…(2n−2i+1)=1F1(−n,−n+12,−12).(1)
Computação
Para números inteiros positivos , a função hipergeométrica confluente de Kummer é um polinômio de grau em . Da Transformação Kummern 1F1(−n,−n+12,z)nz
1F1(−n,−n+12,−12)=e−1/2 1F1(12,−n+12,12)
é fácil deduzir que o valor limite da probabilidade conforme cresce é . A convergência é lenta: você precisa multiplicar por para obter um dígito decimal adicional. No entanto, valores precisos (precisão dupla) podem ser calculados rapidamente para qualquer , observando que os termos na soma esquerda de crescem mais lentamente que as potências de . Assim, quando chegar aos , os novos valores serão essencialmente zero em comparação com (e, de fato, uma análise mais detalhada sugere que interromper a soma porne−1/2≈0.6065306597…n10n(1)−1/2i52e−1/2i=45 vai funcionar).
Essa fórmula será dividida em superior a 10.000.000 em determinados ambientes de computação devido a imprecisões na função Gamma do log. O problema surge do cancelamento das diferenças que surgem ao calcular os termos da série. Uma excelente aproximação a essas diferenças quando é suficientemente grande pode ser encontrada em termos de , onde é a derivada de (a função digamma ). Isso é implementado no código abaixo, a um pequeno custo no tempo de computação.nnψ(n−1/4)ψlogΓ
Implementação
O R
código a seguir calcula cerca de 20.000 valores de precisão dupla por segundo.
f <- function(n) {
h <- function(n) {
ifelse(n < 1e6, lfactorial(n) - lfactorial(n-1/2), digamma(n+3/4)/2)
}
m <- min(n, 46)
k <- 0:m
x <- exp(h(n) - h(n-k) - lfactorial(k) - k*log(2)) * (-1)^k
sum(x)
}
Como um exemplo, vamos acompanhar o quão estreitamente se log(f(n))
aproxima seu valor-limite de para o grande . Como reivindicado acima, cada fator de em adiciona uma casa decimal de precisão limitadora. Vejamos, portanto, a decimal no logaritmo da razão de para , para potências inteiras de de a :−1/2n10nnthf(n)e−1/210n=101n=1014
> round(sapply(1:14, function(n) 10^n * (log(f(10^n)) + 1/2)), 3)
[1] -0.255 -0.251 -0.250 ... -0.250 -0.249 -0.249 -0.400
(Sete valores foram omitidos do meio, todos iguais a -0.250
.) O padrão constante é claro. No final, com , começa a quebrar, indicando perda de precisão. Melhorar isso provavelmente exigiria aritmética de alta precisão.n=1014
Por que o método intuitivo funcionaria?
Pense na tabela como uma coleção de pares; ou seja, em vez da cruz tradicional noroeste-leste-sul de uma tabela de ponte, nós a vemos como uma tabela com duas linhas:
Norte Sul
Oeste Leste
Se condicionarmos o Norte a ser o parceiro sênior de um casal, há uma 1/3 de chance de que o Sul seja o parceiro júnior desse casal, o que força o Ocidente e o Leste a serem um casal, e uma chance de 2/3 desse sul será um membro do outro casal e, em seguida, o último conjunto também definitivamente não é um casal.
Quando estendemos de para , apenas adicionamos uma linha à tabela:n=2 n=3
Noroeste-Sudeste
Norte Sul
Oeste Leste
Se definirmos a Northwest como sendo sempre o parceiro sênior do primeiro casal, haverá claramente uma chance de que haja um casal emparelhado e possamos parar, e uma chance de não existe e podemos continuar com um problema menor .15 45
Observe que o problema menor é um problema diferente , que é 'coincidentemente' o mesmo. Em vez de ter quatro pessoas e dois casais envolvidos no problema, precisamos ter um casal e dois solteiros, e a chance de o casal ser emparelhado é (pelas mesmas razões de antes).13
Isso nos dá uma abordagem recursiva; podemos falar sobre um problema com dois parâmetros, , em que se refere ao número de pessoas se refere ao número de casais. Então nos dá (ou seja, quatro casais com 8 pessoas nos dão uma chance de fracasso ao atribuir o primeiro par e, em seguida, a chance de falha para 2 casais e 6 pessoas no caso em que sobrevivemos) e, em seguida, para precisamos expandir quatro casos:(n,c) n c (8,4) 67(6,2) 17 (6,2)
O casal seguinte é solteiro:2∗16∗5(4,2)
Um era solteiro, o outro era um casal:4∗2∗26∗5(4,1)
Ambos estavam em casais diferentes: (Observe que , por razões óbvias.)4∗26∗5(4,0) (4,0)=1
Ambos estavam no mesmo casal: (Esta é uma condição de perda)4∗16∗5
Se você fizer todas as contas, acho que você terminará com para o caso de 8 pessoas, que não é . (É maior por causa da chance de separarmos totalmente os casais desde o início.)2035 67815
Não conheço um truque imediato que permita que você use apenas uma fórmula combinatória para obter uma resposta de forma fechada, mas parece provável que possa haver um. [editar: Veja a resposta do whuber para a solução.]
fonte