問題タブ [gray-code]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - グレイコードの変更位置を反復する効率的な方法
n ビットのグレイ コードを反復処理する方法は多数あります。いくつかは他よりも効率的です。ただし、実際にはグレイ コードは必要なく、実際のグレイ コードではなく、グレイ コード リストで変更されたビット インデックスを反復処理したいと考えています。たとえば、次の 3 ビットのグレイ コード リストを見てください。
000、001、011、010、110、111、101、100
3、2、3、1、3、2、3 を出力したいと思います。これは、リストを取得するためにビット 3、2、3 などを変更する必要があることを示しています。ここでは、1 と左からインデックスを付けています。
これを行う 1 つの方法は、グレー コードを順番に計算し、連続するペア (x, y) ごとに (x XOR y) を計算してどのビットが変化したかを特定し、(x XOR y) の整数対数底 2 を取得することです。
ただし、反復をできるだけ高速にする必要があり、30 ~ 40 ビットのグレイ コードに関心があります。
これを行う効率的な方法はありますか?
binary - 進化的計算におけるグレイコードの利点は何ですか?
遺伝的アルゴリズムに関する書籍やチュートリアルでは、グレイ コードを使用してバイナリ ゲノム内の整数をエンコードする方が、標準の基数 2 を使用するよりも優れていることが多いと説明されています。任意の数。言い換えると、隣接する整数はグレイ コードでも隣接しており、グレイ エンコーディングの最適化問題には、最大で元の数値問題と同じ数のローカル最適値があります。
標準ベース 2 と比較して、グレイ コードを使用する利点は他にありますか?