SAシステムアーキテクト試験 午前Ⅱ

令和7年度春期 システムアーキテクト 午前Ⅱ 問8

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

プログラムの構造的な複雑度を測る尺度としてMcCabeが提唱したサイクロマティック複雑度がある。制御の流れが次のグラフで表されるプログラムのサイクロマティック複雑度は幾らか。ここで,エッジの個数をe,ノードの個数をnとし,サイクロマティック複雑度はe-n+2で求めるものとする。
制御の流れを表す有向グラフ。ノードはA,B,C,D,Eの5個。有向エッジはA→B,A→C,B→C,B→E,C→D,C→E,D→Eの7本。
制御の流れを表す有向グラフ。ノードはA,B,C,D,Eの5個。有向エッジはA→B,A→C,B→C,B→E,C→D,C→E,D→Eの7本。

選択肢

  1. ア
    3
  2. イ
    4
  3. ウ
    5
  4. エ
    7
解き方のヒントを見る

グラフの構成要素を正確に数える観点

制御の流れを表すグラフでは、何を一つの要素として数えるかが結果を左右します。定義に必要な構成要素を、与えられた情報から漏れなく重複なく数え上げられるか。本問ではこの一点に絞って確認しましょう。

この問題で問われていること

複雑度の値を出す前に、計算の土台となる要素を正しく把握できているかが問われる題材です。経路が合流する箇所や始点・終点の扱いなど、数え間違いが起きやすい部分を意識し、丁寧に確認することが大切です。

視点

サイクロマティック複雑度は、プログラムの制御構造の複雑さを表す指標です。制御フローグラフの構造をもとに求めます。値を導くには、定義が前提とするグラフの構成要素を正しく読み取る必要があります。そのため、最初に自分が学んだ定義を思い出し、その定義で数える対象を明確にしてください。そのうえで、同じ手順で一つずつ確認しながら数えることが、正確な値を得る基本になります。

確認ポイント

  • 自分が学んだ定義では、どの種類の構成要素の個数が必要になるかを明確に思い出せているか
  • 数える順序を決めて、同じ要素を二重に数えたり見落としたりしていないかを確認したか
  • 求めた値が、グラフの構造から直感的に想定される経路の多さと大きく食い違っていないか
正解と解説を見る

正解

イ

解説

図にはノードが5個、エッジが7本あるため、指定式 e-n+2 に代入するとサイクロマティック複雑度は4になる。

理由

公式画像のノードはA、B、C、D、Eの5個です。エッジはAからB、AからC、BからC、BからE、CからD、CからE、DからEの7本です。したがって、e=7、n=5となる。

計算

サイクロマティック複雑度は、問題文で示された式 e-n+2 に単位のない個数を代入して、7-5+2=4と求める。よって、図の制御フローに対応する複雑度は4です。

選択肢ア

これは不正解だよ。選択肢の3は、公式画像から数えられるエッジ7本とノード5個を指定式 e-n+2 に代入した結果とは一致しない。ノードやエッジの数え落としがある場合に生じる値であり、図の全ての接続を反映していない。

選択肢イ(正解)

これは正解だよ。公式画像にはノードが5個、エッジが7本あるため、指定された式 e-n+2 は 7-5+2=4 となる。したがって、図に示された制御フローのサイクロマティック複雑度は4である。

選択肢ウ

これは不正解だよ。選択肢の5は、公式画像のエッジ7本とノード5個を数え、e-n+2へ代入した結果の4より1大きい。図には存在しない追加のエッジや、ノード数の誤認を含めない限り、この値にはならない。

選択肢エ

これは不正解だよ。選択肢の7は、公式画像のノード5個とエッジ7本に対する指定式の結果4とは異なる。エッジの本数そのものを複雑度と取り違えるなど、式にノード数を反映していない値であり、正しい計算結果ではない。

学習のポイント

ノード数とエッジ数を図から正確に数え、指定式へ代入する。

出典:独立行政法人 情報処理推進機構(IPA)令和7年度春期 システムアーキテクト試験 午前Ⅱ 問8(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針