主题
Search

格雷码


格雷码是一种数字编码方式,使得相邻数字之间只有一个数字的差异为 1。“格雷码”一词通常用于指“反射”码,更具体地说是指二进制反射格雷码。

要将二进制d_1d_2...d_(n-1)d_n 转换为其对应的二进制反射格雷码,从右侧的数字 d_n (第 n个或最后一个数字)开始。如果 d_(n-1) 为 1,则将 d_n 替换为 1-d_n ;否则,保持不变。然后继续到 d_(n-1) 。继续直到第一个数字 d_1 ,由于 d_0 被假定为 0,所以保持不变。结果数字 g_1g_2...g_(n-1)g_n 是反射二进制格雷码。

要将二进制反射格雷码 g_1g_2...g_(n-1)g_n 转换为二进制数,再次从第 n 位数字开始,并计算

 Sigma_n=sum_(i=1)^(n-1)g_i (mod 2).

如果 Sigma_n 为 1,则将 g_n 替换为 1-g_n ;否则,保持不变。接下来计算

 Sigma_(n-1)=sum_(i=1)^(n-2)g_i (mod 2),

等等。结果数字 d_1d_2...d_(n-1)d_n 是对应于初始二进制反射格雷码的二进制数。

该代码被称为反射码,因为它可以通过以下方式生成。取格雷码 0, 1。先正向写,再反向写:0, 1, 1, 0。然后在前半部分前面加上 0,后半部分前面加上 1:00, 01, 11, 10。继续,写 00, 01, 11, 10, 10, 11, 01, 00 得到:000, 001, 011, 010, 110, 111, 101, 100, ... (OEIS A014550)。因此,每次迭代都会使代码数量翻倍。

Binary plot of the Gray code

上面的图表显示了前 255 个(上图)和前 511 个(下图)格雷码的二进制表示。下表给出了对应于前几个非负整数的格雷码。

00201111040111100
11211111141111101
211221110142111111
310231110043111110
4110241010044111010
5111251010145111011
6101261011146111001
7100271011047111000
81100281001048101000
91101291001149101001
101111301000150101011
111110311000051101010
1210103211000052101110
1310113311000153101111
1410013411001154101101
1510003511001055101100
16110003611011056100100
17110013711011157100101
18110113811010158100111
19110103911010059100110

二进制反射格雷码与河内塔和中国环的解,以及超立方体图的哈密顿环(包括方向反转;Skiena 1990,第 149 页)密切相关。


另请参阅

中国环, 二进制, 希尔伯特曲线, Ryser 公式, 图厄-摩尔斯序列, 河内塔

使用 Wolfram|Alpha 探索

参考文献

Gardner, M. “二进制格雷码”。《缠结的甜甜圈和其他数学娱乐》第 2 章。纽约:W. H. Freeman,1986 年。Gilbert, E. N. “n 维立方体上的格雷码和路径。”Bell System Tech. J. 37, 815-826, 1958.Gray, F. “脉冲编码通信。”美国专利号 2632058. 1953 年 3 月 17 日。Nijenhuis, A. 和 Wilf, H. 《计算机和计算器的组合算法》第 2 版。纽约:Academic Press,1978 年。Press, W. H.; Flannery, B. P.; Teukolsky, S. A.; 和 Vetterling, W. T. “格雷码”。《Fortran 数值方法:科学计算的艺术》第 2 版第 20.2 节。英国剑桥:Cambridge University Press,第 886-888 页,1992 年。Skiena, S. “格雷码”。《用 Mathematica 实现离散数学:组合数学和图论》第 1.5.3 节。马萨诸塞州雷丁:Addison-Wesley,第 42-43 页和 149 页,1990 年。Sloane, N. J. A. “整数序列在线百科全书”中的序列 A014550Vardi, I. 《Mathematica 计算娱乐》。加利福尼亚州红木城:Addison-Wesley,第 111-112 页和 246 页,1991 年。Wilf, H. S. 《组合算法:更新》。宾夕法尼亚州费城:SIAM,1989 年。

在 Wolfram|Alpha 中被引用

格雷码

请这样引用

Weisstein, Eric W. “格雷码”。来自 MathWorld--Wolfram Web 资源。 https://mathworld.net.cn/GrayCode.html

学科分类