问一道具体数学上的题目,期待高手进来解决
在《具体数学》(concrete mathmatics)中第一章,作者给出了Joesephus Problem的一个非常漂亮的数学上的递归求解的办法。Joesephus Problem具体的说就是n个人围成一圈,从第一个人开始,依次杀死第q,2q,3q……个人,循环不断,直至最后
还称下q-1个人,但作者只给了每次杀死第二个人的数学的递归求解,后面就讨论递归式的求解,并没有给出原问题41个人围成一圈,每次杀死第三个人的求解。我想问一下,愿问题的递归式该如何建立,推广到n个人每次杀死第q个人的递归式如何建立,是否也有作者在第一章章的那种巧妙的数学递归解法,我想了一天多,无法自己解决,期待高手进来解决。
[解决办法]
Joesephus Problem当q>=3的情况在《具体数学》第三章3.3节FLOOR/CEILING RECURENCES中给出了解答(英文版79-81页)。因为公式不是很简单,需要一些预备知识,所以没有出现在第一章中。
[解决办法]
那是因为q=3的递归式中含取整运算符,而第一章没有提供解这个递归式的任何基础,因此,作者没有在第一章就解决q=3时的问题,而是在第三章讨论上整以及下整运算时,解决了它。
当然,q>2时的递归式也是不难建立的。
我们记i个人报数,依次杀死第q,2q,3q……个人,最后剩下的人为J(i,q),现在我们要求J(n,q)。
显然第一次出队是第q个人(假设n>=q),现在考虑剩下的n-1个人.
则在下一圈报数中,剩下的n-1个人是如下报数的:
q+1, q+2, ... , n, 1, 2, ... , q-1
记这个序列为T(n-1,i)。
我们将其标上序号,也就是:
T(n-1,i): q+1 , q+2 , ..., n, 1, 2, ... , q-1
i : 1, 2, ..., n-q, n-q+1, n-q+2, ..., n-1
观察上面两行,可得两者的关系式: T(n-1,i)=(i+q-1)%n+1。 (1)
若我们知道:n-1个人报数,依次杀死第q,2q,3q……个人,最后剩下的人的序号x,那么,由关系式(1),我们就可以得到原来n个人报数最后剩下的人的序号y=(x+q-1)%n+1。
即,我们得到了如下的递归式:
J(n,q)=( J(n-1,q)+q-1 )%n+1 (2)
[解决办法]
你想要什么样的递归式?
是像J(2^m+r)=2*r+1这样一步求解的吗?
[解决办法]
非常遗憾,目前并未发现这样的公式。而且也不太可能存在这样的公式。
其实,这样的结果也很好理解。
不知道楼主注意到没,《具体数学》中的推导其实按分类讨论来进行的:作者对n%2的两中情况分别得到了J(2*n)=2*J(n)-1;和J(2*n+1)=2*J(n)+1;这2个递归式,再将这2个式子统一为J(2^m+r)=2*r+1。
其实,对q=3的情形,递归式的获得也是按上面的方法的。不难发现,q为任意数时,按n%q的结果,要分q类来讨论,因此,得到的递归式有q个。而要将这q个递归式归结为1个,在q很小的时候(q=2,3),可能还能做到,但是,
随着q的增大,这项工作的难度是相当大的,可以说几乎是“不可能完成的任务”。