システムアーキテクト 2012年 午前2 問10
問題文
学生レコードのデータが正しいかどうかを検証したい。学生レコードを構成するデータ項目には、学籍番号、出身高校コード、学年が含まれ、それぞれを入力とする原因-結果グラフは図のとおりである。テストケースを設計するために、このグラフから作成した決定表として正しいものはどれか。ここで、原因-結果グラフの要素間の関係には、次の表記を用いる。


選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
原因-結果グラフの決定表【午前2解説】
正解の理由
図の接続(直線=同値、波線=否定、論理積・論理和)を素直に式に置き換えると、受け付け条件は「正しい学籍番号」かつ「出身高校コードが正しくない」すなわち
(A:正しい学籍番号、B:正しい出身高校コード)、一方で棄却条件は「正しい学籍番号」または「学年が正しくない」すなわち
(C:正しい学年)となります。これらの論理式に基づいて、条件の組合せごとの結果(受け付け/棄却)が決まります。選択肢の中で、この論理式から導かれる最小の決定表パターンと整合するのが ウ です。
解法ステップ
- 図の記号を変数に置き換える
- A:正しい学籍番号(真:Y/偽:N)
- B:正しい出身高校コード(真:Y/偽:N)
- C:正しい学年(真:Y/偽:N)
- 図を式に変換する
- 「受け付ける」側は A(直線) と B(波線=否定)を論理積 →
- 「受け付けない」側は A(直線) と C(波線=否定)を論理和 →
- 真理値表を作成して,各入力組合せ(8通り)ごとの Accept/Reject を求める
- 代表的組合せの結果(抜粋):
- A=1,B=0,C=1 → Accept=1, Reject=1(両方成立)
- A=1,B=1,C=1 → Accept=0, Reject=1
- A=0,B=*,C=0 → Accept=0, Reject=1
- A=0,B=*,C=1 → Accept=0, Reject=0
- 代表的組合せの結果(抜粋):
- 真理値パターンを「最小の決定表列」にまとめる
- 列の作り方の方針:出力(Accept/Reject)の組み合わせが変わる最小の条件で列を作る(不要な詳細は「—(不要)」でまとめる)。
- 上記の最小化結果と各選択肢を照合して、表の記載が一致するものを選ぶ(これに一致するのが ウ)。
選択肢別の誤答解説
- 図ア/図イ/図エ
- いずれも決定表の条件指定(Y/N/–)と出力(X)の対応が、上で導いた式 , に合致していません。
- よくあるミスは「波線=否定」を見落として B や C を肯定として扱ったり、論理和/論理積の結合関係を逆に解釈することです。これにより,ある列で本来は棄却が成立するはずの入力を受け付けに割り当てたり,ある列を不要に細分化してしまいます。
- 図ア/イ/エ のいずれかは,特定の列で Accept と Reject の論理的帰結が一致していない(または逆になっている)ため誤りです。
よくある誤解
- 波線(~)を見て「波=不確か」や「波=別種の接続」と誤解する
- 図中の波線は否定(NOT)を表します。因果関係が否定で結ばれているときは,該当因子が「偽(N)」であることが条件になります。
- 決定表作成時に「–( don't care )」を多用して条件を省略しすぎる
- 簡略化は可能ですが,省略した列の出力が論理式と矛盾していないかを必ず真理値で確認する必要があります。
- 「受け付ける」と「受け付けない」が同時に成立しうるケースを見落とす
- 図の結線からは両方が同時に真になる入力組合せが存在します。決定表では「両方成立(または両方不成立)」というパターンも明示します。
補足コラム
簡易真理値表(抜粋)を示すと、重要な傾向が見えます。
- A=1 のときは Reject が必ず 1(A ∨ ¬C のため)。A が真なら棄却判定が常に働く。
- Accept は A が真でかつ B が偽のときのみ 1(A∧¬B)。つまり「学籍番号が正しく、出身高校コードが正しくない」場合に受け付けるという条件です。
- A=0 かつ C=1 の場合だけ、Accept=0 かつ Reject=0 となり「どちらでもない(受け付けも棄却もされない)」パターンが生じます。
(この補足から,決定表の列は「A が 1 で B が 0 の場合」「A が 1 で B が 1 の場合」「A が 0 で C が 0 の場合」「A が 0 で C が 1 の場合」など,出力が変化する最小単位で作るのが合理的であることが分かります。)
FAQ
Q1. 波線は必ず「因子そのものを否定」するのですか?
A1. はい。本問の表記規則では波線は「否定」を表し,その因子が偽であることを条件にします。したがって決定表ではその列で N(false)に指定します。
A1. はい。本問の表記規則では波線は「否定」を表し,その因子が偽であることを条件にします。したがって決定表ではその列で N(false)に指定します。
Q2. 決定表の列において Accept と Reject が同時に X になることは許されますか?
A2. 図の論理結合からは実際に同時成立するケースがあり得ます。決定表は論理式の帰結を正確に表すのが目的なので,同時成立を表現する列があればそれを許容して記述します(テストケース設計では後で優先度ルールを設けることもあります)。
A2. 図の論理結合からは実際に同時成立するケースがあり得ます。決定表は論理式の帰結を正確に表すのが目的なので,同時成立を表現する列があればそれを許容して記述します(テストケース設計では後で優先度ルールを設けることもあります)。
Q3. 「–(don't care)」を使ってよい基準は?
A3. 出力に影響しない因子(すなわちその因子が true/false のどちらでも対象出力が変わらない場合)に対して使います。使う前に必ず真理値表で確認してください。
A3. 出力に影響しない因子(すなわちその因子が true/false のどちらでも対象出力が変わらない場合)に対して使います。使う前に必ず真理値表で確認してください。
関連キーワード: 原因結果グラフ、決定表、論理式、条件網羅、テスト設計、論理和、論理積、否定

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

