TAOCP V4.F2 格雷码(1)
1、预备知识:关于异或
第四卷的第一册是关于布尔代数的,不过还未出版。而作者在描述格雷码的时候,异或出现的次数很频繁,先了解一点异或的性质有好处。
性质:
1、ab=ba
2、(ab)c=a(bc)
3、abca=bc
4、a0=a
5、a1:将a的二进制表示的最后1位取补
6、a(-1):将a的二进制表示的后n位按位取补
2、知识浏览
1、格雷码的形式定义:
其中:表示空串,R表示反序,即reverse order。
2、令g(k)表示二进制格雷码k的对应数值,那么,若k=+r (r<),则:
g(k)=+g(-1-r)
3、若k=()B,g(k)=()B,那么:
aj=bjbj+1 0<=j<=n-1 (7)
证明:用数学归纳法,对k进行归纳。
1):k=1时,显然成立。
2):假设k<T时,命题均成立。
3):当k=T时,若T=(1)B,即:T=2n+()B,于是,有:
g(T)=+g(-1-()B)
也就是:g(T)=+g( (11...1)B - ()B )
(11...1)B - ()B,就是将按位取补,因此,上式等价于:
g(T)=+g( (-1)()B )
=2n+g( ( )B ) 其中
=bj1
而
g( ( )B )
= g( (bn-11)(bn-11bn-21)...(b11b01) )
=g( (bn-11)(bn-1bn-2)...(b1b0) )
故:g(T)=+g( (-1)()B )
=g( 1(bn-11)(bn-1bn-2)...(b1b0) )
因此,当k=T时,命题也成立。
综上,命题成立!
4、由g(k)得到k的反转公式:
证明:
由(7)有:aj=bjbj+1
因此: aj+1=bj+1bj+2
...
an-2=bn-2bn-1
an-1=bn-10
将以上的式子依次异或,得到:
ajaj+1...an-2an-1=bjbj+1bj+1bj+2...bn-2bn-1bn-10
也就是:
bj0=ajaj+1...an-2an-1
即:
bj=ajaj+1...an-2an-1
5、由异或运算的结合律,就可以得到
6、证明:
证明:
因为 g(+r)=+g(-1-r)
而:-1-r=r(2n-1)
因此,g(-1-r)=g( r(2n-1) )
又由(11)得:
g(-1-r)=g(r)g(2n-1)
而,g(2n-1)=100...0
故g(-1-r)=g(r)100...0
由对应关系,知道:
g(-1-r)对应于
因此: