令和7年度 春期 午前Ⅱ 問8
実装・構築
サイクロマティック複雑度の問題
プログラムの構造的な複雑度を測る尺度として McCabe が提唱したサイクロマティック複雑度がある。制御の流れが次のグラフで表されるプログラムのサイクロマティック複雑度は幾らか。ここで,エッジの個数を e,ノードの個数を n とし,サイクロマティック複雑度は e-n+2 で求めるものとする。
制御の流れのグラフ:
- ノード: A,B,C,D,E(5個)
- エッジ(7本): A→B,A→C,B→C,B→E,C→D,C→E,D→E
- ア3
- イ4
- ウ5
- エ7
答えと解説を見る
✓ これが正解イ4
解説
エッジ7本・ノード5個なので、7-5+2=4 になります。
サイクロマティック複雑度は、制御の流れのグラフに含まれる独立な経路の数を表し、値が大きいほど構造が複雑だと判断します。設問の式は e-n+2 です。グラフのノードは A、B、C、D、E の5個なので n=5 です。エッジは A→B、A→C、B→C、B→E、C→D、C→E、D→E の7本なので e=7 です。これを式に当てはめると 7-5+2=4 となり、複雑度は 4 です。確かめとして、分岐の数に 1 を足す数え方でも、二方向に分かれるノードが A、B、C の3個なので 3+1=4 となり、結果が一致します。エッジとノードを漏れなく数えて式に入れる、という手順を守れば選べます。
ほかの選択肢はなぜ違うのか
- ア3:3 は、二方向に分かれるノード A、B、C の数をそのまま答えた場合の値で、式の+2 を+1 にして 7-5+1 と計算しても 3 になります。設問の式 e-n+2 に正しく当てはめると 4 です。
- ウ5:5 は、ノードの個数 n=5 をそのまま答えた場合の値です。サイクロマティック複雑度はエッジとノードの差に 2 を足して求めるので、7-5+2 から 4 となり、5 にはなりません。
- エ7:7 は、エッジの本数 e=7 をそのまま答えた場合の値です。ノードの個数を引いて 2 を足す計算を省いていて、式どおりに 7-5+2 を求めると 4 になります。
出典:令和7年度 春期 システムアーキテクト試験 午前Ⅱ 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)