• 具体数学笔记-约瑟夫问题


    据说著名犹太历史学家 $Josephus$有过以下的故事:
    在罗马人占领乔塔帕特后,$39$ 个犹太人与$Josephus$及他的朋友躲到一个洞中,$39$个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,$41$个人排成一个圆圈,由第$1$个人开始报数,每报数到第$3$人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。

    然而$Josephus$ 和他的朋友并不想遵从。首先从一个人开始,越过$k-2$个人(因为第一个人已经被越过),并杀掉第$k$个人。

    接着,再越过$k-1$个人,并杀掉第$k$个人。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么地方才能避免被处决?

    $Josephus$要他的朋友先假装遵从,他将朋友与自己安排在第$16$个与第$31$个位置,于是逃过了这场死亡游戏。

    现在考虑$k=2$时的问题,我们设$J(n)$表示当有$n$个人时幸存者的编号。
    假设一开始有$2n$个人,那么一轮后会剩下$1,3,5,7...2n-1$,并且又是从1开始跳。
    所以 $J(2n)=2J(n)-1$
    奇数的情况差不多,会剩下$3,5,7,9....2n+1$
    所以 $J(2n+1)=2J(n)+1$
    用这个方法可以在$log_2n$的时间内求出$J(n)$

    接下来我们可以打一个表

    容易发现$J(2^m+l)=2l+1 quad 0leq l<2^m$
    用数学归纳法很容易证。

    至此这个问题已经解决,但我们还可以发现一些东西。


    设$n$的二进制展开为
    $$n=(b_mb_{m-1}...b_{1}b_{0})_2 quad b_m=1$$
    把$2l+1表示出来$
    $$2l+1=(b_{m-1}...b_{1}b_{0}1)_2 $$
    这就是$n$在二进制下向左循环移动了一位。

    难道是碰巧吗?

    考虑这个递推式的一般形式
    $f(1)=a$
    $f(2n)=2f(n)+b$
    $f(2n+1)=2f(n)+c$


    $a,b,c$显然是互不影响的,$f(n)$一定可以这样表示出来
    $$f(n)=A(n)a+B(n)b+C(n)c$$
    可以看出对于所有的$a,b,c$,$A,B,C$都是相同的

    我们取$a=1,b=c=0$

    $f(n)=A(n)$
    $A(1)=1$
    $A(2n)=2A(n)$
    $A(2n+1)=2A(n)$

    则 $A(2^m+l)=2^m$

    接下来我们反过来使用递推式,确定$f(n)$,研究是否有$a,b,c$能表示它,取$f(n)=1$

    解得$a,b,c=(1,-1,-1)----->A(n)-B(n)-C(n)=f(n)=1$

    再取$f(n)=n$就可以解出$A,B,C$了。

    我们把递推式改写一下

    $f(1)=a$
    $f(2n+j)=2f(n)+t_j quad j=0,1$
    则$f((b_mb_{m-1}...b_{1}b_{0})_2)=(at_{b_{m-1}}t_{b_{m-2}}...t_{b_1}t_{b_0})_2$(不进位)

    在原问题中$a=1,t_0=-1,t_1=1$


    $f((1100100)_2)=(1 quad1 quad-1quad -1 quad1 quad-1 quad-1)_2$
    因为$(1 quad -1 quad... -1 quad -1)_2=(00...01)_2$,就推出了循环移位的性质。


    再延伸一步
    $f(i)=a quad 1leq i<d$
    $f(dn+j)=cf(n)+t_j quad 0leq j<d$
    则$f((b_mb_{m-1}...b_{1}b_{0})_d)=(at_{b_{m-1}}t_{b_{m-2}}...t_{b_1}t_{b_0})_c$(不进位)


    事实上这个递推式还可以再加参数,也都是可以用成套方法解的。

  • 相关阅读:
    【转】ArcGIS 合并要素 Union Dissolve Append Merge
    Linux命令行下编辑常用快捷键
    rpm aid用法
    SUSE 吉祥物图片
    F9初装体验
    openSUSE10、SUSE EVAL10和SUSE10的区别[翻译]
    装有Linux DIY牛人百元人民币昂贵甜头液晶一体机
    SUSE10.3恢复GRUB体例
    64位Fedora还挑CPU
    Ubuntu8.04安置XCrysDen
  • 原文地址:https://www.cnblogs.com/ezyzy/p/8056589.html
Copyright © 2020-2023  润新知