login
Number of daughters to wait before picking in sultan's dowry problem with n daughters.
15

%I #33 Oct 08 2017 12:33:38

%S 0,1,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,6,7,7,8,8,8,9,9,9,10,10,10,11,11,

%T 12,12,12,13,13,13,14,14,15,15,15,16,16,16,17,17,17,18,18,19,19,19,20,

%U 20,20,21,21,22,22,22,23,23,23,24,24,24,25,25,26,26,26,27,27,27

%N Number of daughters to wait before picking in sultan's dowry problem with n daughters.

%C The correct rule can be found in the Gardner reference (p. 60) and in the Wikipedia article (see link): if the number of candidates is n, then the optimal r (the number of candidates to skip) is the r that maximizes (r/n)(1/r+1/(r+1)+...+1/(n-1)). - Zvi Mendlowitz (zvi113(AT)zahav.net.il), Jul 12 2007

%D M. Gardner, My Best Mathematical and Logic Puzzles, Dover, 1994

%H R. J. Mathar, <a href="/A054404/b054404.txt">Table of n, a(n) for n = 1..1000</a>

%H Eric Weisstein's World of Mathematics, <a href="http://mathworld.wolfram.com/SultansDowryProblem.html">Sultan's Dowry Problem.</a>

%H Wikipedia, <a href="http://en.wikipedia.org/wiki/Secretary_problem">Secretary problem</a>.

%F a(n) = the integer r that maximizes (r/n)(1/r+1/(r+1)+...+1/(n-1)). - Zvi Mendlowitz (zvi113(AT)zahav.net.il), Jul 12 2007

%p A054404 := proc(n)

%p local r ;

%p r := 0 ;

%p sr := 0 ;

%p for s from 1 to n do

%p p := s/n*add(1/i,i=s..n-1) ;

%p if p > sr then

%p r := s ;

%p sr := p ;

%p end if;

%p end do;

%p return r;

%p end proc: # _R. J. Mathar_, Jun 09 2013

%t a[n_] := r /. Last[ Maximize[ {(r/n)*Sum[1/k, {k, r, n - 1}], 0 <= r < n/2}, r, Integers]]; a[1] = 0; a[2] = 1; Table[a[n], {n, 1, 75}] (* _Jean-François Alcover_, Dec 13 2011, after Zvi Mendlowitz *)

%t (* The code above may not work in Mma 8 *)

%t PR[n_, r_] := (r/n)*Sum[1/k, {k, r, n - 1}];

%t maxi[li_] := {Do[If[li[[n + 1]] <

%t li[[n]], aux = n; Break[]], {n, 1, Length[li] - 1}], aux}[[2]];

%t SEQ[1] = 0; SEQ[2] = 1; SEQ[n_] := maxi[Table[PR[n, i], {i, 1, n - 1}]];

%t Table[SEQ[n], {n, 1, 133}] (* _José María Grau Ribas_, May 11 2013 *)

%t a[1]=0; a[2]=1; a[n_] := Block[{r}, r /. Last@ Maximize[{(r/n) * (PolyGamma[0, n] - PolyGamma[0, r]), 1 <= r < n/2}, r, Integers]]; Array[a, 75] (* _Giovanni Resta_, May 11 2013 *)

%K nonn

%O 1,5

%A _Eric W. Weisstein_

%E Corrected by Zvi Mendlowitz (zvi113(AT)zahav.net.il), Jul 12 2007