まず、あなたの質問に対する答えがあります:
すべてのカルノー マップ内のセルの数は、すべての可能な入力の組み合わせの数と一致します。マップのセルにインデックスを付ける方法は、真理値表に対応する必要があります。次の図は、さまざまなサイズのカルノー マップの例であり、隣接するセルの視覚化は非常に簡単です。

ご覧のとおり、要点は、隣接する 2 つのセルは 1 つの変数の値のみが異なり、隣接する 4 つのセルは 2 つの変数の値が異なるということです。そのため、サイズが 2^n のグループを探す必要があります。Map のインデックス付けは少し混乱しているように見えるかもしれませんが、これは真理値表のすべての行の間のすべての関係を表示するためのものです。
K マップにインデックスを付けたが、どの行がどの変数に対応しており、どの順序で入力する必要があるかがわからない場合は、次のように確認できます。
- インデックス 0 = 1 つの変数が trueでない場合
- インデックス 1 =最下位ビットのみが true の場合 ( abcdで順序付けされた真理値表の場合、dになります)
- index 2 = 最下位から 2 番目のビットのみが true である (同じ真理値表の場合、c )
- インデックス 4 = 最下位から 3 番目のビットのみが true である (同じ真理値表の場合、b )
- インデックス 8 = 最下位から 4 番目のビットのみが true である ( aとなる同じ真理値表の場合)
例として:ここでは、ムーア マシンとして実装された 01364 シーケンス ジェネレーターの状態図を確認できます。マシンのすべてのエッジは、リセット ボタンの入力値によってラベル付けされます。

マシンの望ましい動作と状態に一致する出力値は、次の遷移表で説明できます。
state || output (decimal) | reset || next state
-------------------------------------------------
S_0 || 0 | 0 || S_1
|| | 1 || S_0
-------------------------------------------------
S_1 || 1 | 0 || S_2
|| | 1 || S_0
-------------------------------------------------
S_2 || 3 | 0 || S_3
|| | 1 || S_0
-------------------------------------------------
S_3 || 6 | 0 || S_4
|| | 1 || S_0
-------------------------------------------------
S_4 || 4 | 0 || S_0
|| | 1 || S_0
10 進出力をバイナリ ( q_2、q_1およびq_0 ; d_2、d_1およびd_0 )に一致するように状態の表現をエンコードした後、遷移テーブルは次のようになります。
state || q_2 | q_1 | q_0 | reset || d_2 | d_1 | d_0 || next state
-------------------------------------------------------------------
S_0 || 0 | 0 | 0 | 0 || 0 | 0 | 1 || S_1
|| | | | 1 || 0 | 0 | 0 || S_0
-------------------------------------------------------------------
S_1 || 0 | 0 | 1 | 0 || 0 | 1 | 1 || S_2
|| | | | 1 || 0 | 0 | 0 || S_0
-------------------------------------------------------------------
S_2 || 0 | 1 | 1 | 0 || 1 | 1 | 0 || S_3
|| | | | 1 || 0 | 0 | 0 || S_0
-------------------------------------------------------------------
S_3 || 1 | 1 | 0 | 0 || 1 | 0 | 0 || S_4
|| | | | 1 || 0 | 0 | 0 || S_0
-------------------------------------------------------------------
S_4 || 1 | 0 | 0 | 0 || 0 | 0 | 0 || S_0
|| | | | 1 || 0 | 0 | 0 || S_0
入力のすべての可能な組み合わせについて遷移表を調べると便利です。これは、いくつかの 'do not care' ( x ) 出力値 (シーケンスに存在しない状態の場合) があるためです。カルノーの地図。
index | state || q_2 | q_1 | q_0 | reset || d_2 | d_1 | d_0 || next state
---------------------------------------------------------------------------
0 | S_0 || 0 | 0 | 0 | 0 || 0 | 0 | 1 || S_1
1 | S_0 || 0 | 0 | 0 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
2 | S_1 || 0 | 0 | 1 | 0 || 0 | 1 | 1 || S_2
3 | S_1 || 0 | 0 | 1 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
4 | - || 0 | 1 | 0 | 0 || x | x | x || -
5 | - || 0 | 1 | 0 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
6 | S_2 || 0 | 1 | 1 | 0 || 1 | 1 | 0 || S_3
7 | S_2 || 0 | 1 | 1 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
8 | S_4 || 1 | 0 | 0 | 0 || 0 | 0 | 0 || S_0
9 | S_4 || 1 | 0 | 0 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
10 | - || 1 | 0 | 1 | 0 || x | x | x || -
11 | - || 1 | 0 | 1 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
12 | S_3 || 1 | 1 | 0 | 0 || 1 | 0 | 0 || S_4
13 | S_3 || 1 | 1 | 0 | 1 || 0 | 0 | 0 || S_0
---------------------------------------------------------------------------
14 | - || 1 | 1 | 1 | 0 || x | x | x || -
15 | - || 1 | 1 | 1 | 1 || 0 | 0 | 0 || S_0
最後に、d_2、 d_1 、およびd_0 (つまり、 01364シーケンスの数値に一致するバイナリ エンコードされた状態/出力) を定義する関数は、次の K マップで簡単にマークできることがわかります。

f(d_2) = q_1 ⋅ ¬(reset)
f(d_1) = q_0 ⋅ ¬(reset)
f(d_0) = ¬(q_2) ⋅ ¬(q_1) ⋅ ¬(reset)
(すべての画像はラテックスを使用して生成されました。)