整数翻转
数位逆向排列,特别是按位逆向 (bit-reversal) 排列,是在快速傅里叶变换算法中使用的重新排序技巧.
定义一个生成 级的逆向排列的函数.
In[1]:=
reversalperm[k_, b_] := IntegerReverse[Range[0, b^k - 1], b, k] + 1;
生成长度为 的列表的按位逆向 (bit-reversal) 排列.
In[2]:=
Table[reversalperm[k, 2], {k, 0, 5}]
Out[2]=
生成 9 个元素的列表的基数-3 按位逆向 (bit-reversal) 排列.
In[3]:=
reversalperm[2, 3]
Out[3]=
显示这些交换.
In[4]:=
segment[{p1_, p2_}] := {PointSize[Large], Point[{p1, p2}],
Line[{p1, p2}], Text[Last[p1], p1 - {1/2, 0}],
Text[Last[p2], p2 + {1/2, 0}]};
In[5]:=
With[{k = 2, b = 3}, Graphics[
segment /@
Thread[{Thread[{0, Range[b^k]}], Thread[{b^k, reversalperm[k, b]}]}]
]]
Out[5]=