アルゴリズムとプログラミング

基本情報技術者試験グラフ」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
有向グラフを次の辺リストで与える(u → v は u から v への辺)。 1→3, 2→3, 4→3, 2→5, 4→5 各ノードの入次数(そのノードへ入ってくる辺の本数)を数え、入次数が最大のノードの番号を求める。最大が同数のときは番号の小さいノードを選ぶ。次の擬似言語を実行したとき返り値 best はどれか。
○関数: maxInDegree(): 整数型
  整数型の配列: indeg ← {0, 0, 0, 0, 0}
  各辺 u→v について
    indeg[v] ← indeg[v] + 1
  整数型: i, best ← 1
  for (i を 2 から 5 まで 1 ずつ増やす)
    if (indeg[i] > indeg[best])
      best ← i
    endif
  endfor
  return best
ノード 5(入次数 2)
ノード 3(入次数 3)
ノード 2(入次数 0)
ノード 4
正解
ノード 3(入次数 3)

辺の終点 v を数えると、ノード3へは 1→3, 2→3, 4→3 の 3 本、ノード5へは 2→5, 4→5 の 2 本、他は 0 本である。indeg={0,0,3,0,2} の最大はノード3(3本)なので best=3、すなわち イが正しい。

?選択肢ごとの解説

ア ×入次数 2 のノード5 であり、最大ではなく 2 番目に大きいノードを選んだ誤りである。
イ ○辺の終点 v を数えると、ノード3へは 1→3, 2→3, 4→3 の 3 本、ノード5へは 2→5, 4→5 の 2 本、他は 0 本である。indeg={0,0,3,0,2} の最大はノード3(3本)なので best=3、すなわち イが正しい。
ウ ×ノード2 は入次数 0 であり、辺の始点(出る側)を誤って数えた、入次数と出次数を取り違えた誤りである。
エ ×ノード4 も入次数 0 であり、入ってくる辺が 1 本もないノードを選んだ誤りである。
この問題の「深掘り・誤答の完全解説・試験のコツ・覚え方」はアプリで。

基本情報技術者試験の全問を、一問ごとにAIの8-ways解説つきで。SRS暗記カード・全真模試・弱点診断まで。まずは無料で。

無料ではじめる →

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0154

【基本情報技術者試験】グラフの問題と解答・解説|ukamiru 過去問