2

これは、アルゴリズムブックのタスクです。

問題は、どこから始めればよいかまったくわからないということです。

Trace the following non-recursive algorithm to generate the binary reflexive
Gray code of order 4. Start with the n-bit string of all 0’s. 
For i = 1, 2, ... 2^n-1, generate the i-th bit string by flipping bit b in the 
previous bit string, where b is the position of the least significant 1 in the 
binary representation of i. 

したがって、1ビットのグレーコードは0 1、200 01 11 10などの場合は .

たくさんの質問

1) n = 1 の場合、 から始めることができることを知ってい0 1ますか?

2) 「すべて 0 の n ビット文字列から始める」をどのように理解すればよいですか?

3)「前のビット列」?「前」はどの文字列ですか?前は下位nビットからですか?(たとえば、n=2 の場合、前は n=1 のものです)?

4) フリップする操作しかない場合、1 ビットの文字列を 2 ビットの文字列に変換するにはどうすればよいですか?

これは私をとても混乱させます。私がこれまでに理解している唯一の「人間」の方法は、下位nビットからセットを取得し、それらを複製し、2番目のセットを反転し、最初のセットのすべての要素に0を追加し、2番目のセットのすべての要素に1を追加することです。完了 (例: 0 1-> 0 1 | 0 1-> 0 1 | 1 0-> 00 01 | 11 10->11 01 11 10完了。

助けてくれてありがとう

4

1 に答える 1

4

あなたの 4 つの質問すべてに対する答えは、このアルゴリズムは のより低い値で開始しないということですn。生成されるすべての文字列は同じ長さで、i-th(for i= 1, ..., 2 n -1) 文字列はその文字列から生成され(i-1)-thます。

n = 4 の最初のいくつかの手順を次に示します。

G 0 =から始める0000

G 1を生成するには、1 = 0001 bのバイナリ表現の最下位の位置と同様に、G 00-thのビットを反転します。G1=._010001

G 2を生成するには、2 = 0010 bのバイナリ表現の最下位の位置と同様に、G 11-stのビットを反転します。G 2 = .110011

G 3を生成するには、3 = 0011 bのバイナリ表現の最下位の位置と同様に、G 20-thのビットを反転します。G 3 = .010010

G 4を生成するには、4 = 0100 bのバイナリ表現の最下位の位置と同様に、G 32-ndのビットを反転します。G=.210110

G 5を生成するには、5 = 0101 bのバイナリ表現の最下位の位置と同様に、G 40-thのビットを反転します。G5=._010111

于 2014-02-26T12:44:42.990 に答える