問題22
問題 #22
Section titled “問題 #22”ATMを通じた支払いシステムをテストします。支払いはデビットカード(D)または現金(C)で行うことができ、受け入れ可否はPIN、要求金額、ATMの設置場所など複数の要因に依存します。ビジネスルールは以下のデシジョンテーブルで定義されています。
| ID | 条件 / アクション | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 | R11 | R12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C1 | 支払い方法 | D | D | D | D | D | D | D | D | C | C | C | C |
| C2 | PIN OK | Y | Y | Y | Y | N | N | N | N | n/a | n/a | n/a | n/a |
| C3 | 要求金額 OK | Y | Y | N | N | Y | Y | N | N | Y | Y | N | N |
| C4 | 設置場所 OK | Y | N | Y | N | Y | N | Y | N | Y | N | Y | N |
| A1 | 支払い処理 | X | X | X | X | ||||||||
| A2 | 銀行へ通知 | X | X | ||||||||||
| A3 | 顧客へ通知 | X | X | X | X | X | X | X | X | X |
このデシジョンテーブルを最小化した後の**最小の列数(ルール数)**はいくつか?
- a) 4
- b) 5
- c) 6
- d) 7
アクションパターンの整理
Section titled “アクションパターンの整理”最初に各ルールのアクションの組み合わせを整理します。
デビットカード(D)の場合:R1〜R8
| ルール | C2 | C3 | C4 | A1 | A2 | A3 |
|---|---|---|---|---|---|---|
| R1 | Y | Y | Y | X | ||
| R2 | Y | Y | N | X | X | X |
| R3 | Y | N | Y | X | ||
| R4 | Y | N | N | X | X | |
| R5 | N | Y | Y | X | ||
| R6 | N | Y | N | X | ||
| R7 | N | N | Y | X | ||
| R8 | N | N | N | X |
現金(C)の場合:R9〜R12
| ルール | C2 | C3 | C4 | A1 | A2 | A3 |
|---|---|---|---|---|---|---|
| R9 | n/a | Y | Y | X | ||
| R10 | n/a | Y | N | X | ||
| R11 | n/a | N | Y | X | ||
| R12 | n/a | N | N | X |
現金ルールの最小化
Section titled “現金ルールの最小化”C2 は現金では常に「n/a」のため、条件として機能しません。
R9 と R10 の統合:
C4 の値のみ異なり、アクションが同じ(A1のみ)なので、C4 をドントケアにして1ルールに統合できます。
| C1 | C2 | C3 | C4 | A1 | A2 | A3 | |
|---|---|---|---|---|---|---|---|
| RC1(R9+R10) | C | n/a | Y | - | X |
R11 と R12 の統合:
同様に、C4 をドントケアにして統合できます。
| C1 | C2 | C3 | C4 | A1 | A2 | A3 | |
|---|---|---|---|---|---|---|---|
| RC2(R11+R12) | C | n/a | N | - | X |
現金ルールは 2列 に削減されます。
デビットカードルールの最小化
Section titled “デビットカードルールの最小化”R5〜R8の統合(A3のみ):
R5 と R6 は C4 のみ異なるため統合 → (C2=N, C3=Y, C4=-)
R7 と R8 は C4 のみ異なるため統合 → (C2=N, C3=N, C4=-)
さらに (C2=N, C3=Y, C4=-) と (C2=N, C3=N, C4=-) は C3 のみ異なるため統合 → (C2=N, C3=-, C4=-) → A3
R3 との比較:
R3 は (C2=Y, C3=N, C4=Y) → A3 のみ。
統合済み R5〜R8 は (C2=N, C3=-, C4=-) → A3 のみ。
両者は C2 が異なり(Y vs N)、かつ C3・C4 も異なるため、さらなる統合は不可能です。
デビットカードの最小化結果:
| ルール | C2 | C3 | C4 | A1 | A2 | A3 | 元のルール |
|---|---|---|---|---|---|---|---|
| RD1 | Y | Y | Y | X | R1 | ||
| RD2 | Y | Y | N | X | X | X | R2 |
| RD3 | Y | N | N | X | X | R4 | |
| RD4 | Y | N | Y | X | R3 | ||
| RD5 | N | - | - | X | R5〜R8 |
各ルールのアクションパターンが異なるため、これ以上の統合はできません。デビットカードルールは 5列 が最小です。
最小化後のテーブル
Section titled “最小化後のテーブル”| RD1 | RD2 | RD3 | RD4 | RD5 | RC1 | RC2 | |
|---|---|---|---|---|---|---|---|
| C1 | D | D | D | D | D | C | C |
| C2 | Y | Y | Y | Y | N | n/a | n/a |
| C3 | Y | Y | N | N | - | Y | N |
| C4 | Y | N | N | Y | - | - | - |
| A1 | X | X | X | ||||
| A2 | X | X | |||||
| A3 | X | X | X | X | X |
合計:5(デビット)+ 2(現金)= 7列
それ以上削減できない理由
Section titled “それ以上削減できない理由”| 削減の試み | 結果 |
|---|---|
| RD4(Y,N,Y)→A3 と RD5(N,-,-)→A3 の統合 | ✗ C2 が Y と N で異なり、中間値が存在しない |
| RD1(Y,Y,Y)→A1 と RD2(Y,Y,N)→A1+A2+A3 の統合 | ✗ アクションが異なる |
| RD3(Y,N,N)→A2+A3 と RD4(Y,N,Y)→A3 の統合 | ✗ アクションが異なる(A2の有無) |
| RC1 と RC2 の統合 | ✗ アクションが異なる(A1 vs A3) |
d) 7
支払い方法による分離
Section titled “支払い方法による分離”C1(支払い方法)が「D(デビット)」か「C(現金)」かで、ルールの構造が根本的に異なります。現金では C2(PIN OK)が常に「n/a」となるため、この条件が最初から無効化されます。最小化の前段階として、支払い方法ごとにルールグループを分けて考えることが重要です。
ドントケア適用の手順
Section titled “ドントケア適用の手順”ドントケア(-)を適用できるのは、アクションが完全に一致するルールの間で、1つの条件だけが異なる場合です。段階的に適用します。
- まず1条件だけ異なるペアを見つけて統合する
- 統合されたルール同士でさらに統合できないか確認する
- 異なるアクションパターンのルールは統合できない
最小列数の下限はアクションパターンの種類数
Section titled “最小列数の下限はアクションパターンの種類数”最小化後の列数は、異なるアクションパターンの種類数が下限となります。この問題では:
| アクションパターン | 列 |
|---|---|
| A1 のみ | RD1, RC1 → 2列 |
| A1+A2+A3 | RD2 → 1列 |
| A2+A3 | RD3 → 1列 |
| A3 のみ | RD4, RD5, RC2 → 3列 |
合計7列となり、これ以上は削減できません。