A型システムエンジニアの勉強メモ

情報処理試験の午前問題をネタにして、解説をじっくり書きながら勉強しています。基礎は大事。

広告

基本情報技術者試験 令和元年度 秋季 午前 問3

 データ構造におけるグラフ、無向グラフ、有向グラフ、隣接行列についての問題。

 

--------------------------

基本情報技術者試験

令和元年度 秋期 午前 問3

 

ノードとノードの間のエッジの有無を、隣接行列を用いて表す。ある無向グラフの隣接行列が次の場合、グラフで表現したものはどれか。ここで、ノードを隣接行列の行と列に対応させて、ノード間にエッジが存在する場合は 1 で、エッジが存在しない場合は 0 で示す。

 

f:id:koki2016:20210810150047p:plain

--------------------------

解説

 

 

データ構造におけるグラフの問題。

データ要素であるノード(節点、点)とそのノード間のつながりを示すエッジ(辺、線)でデータ構造を示すもの。

 

この問題の場合、ノードは a や b 、エッジはそれらを繋ぐ線で表現されている。

a や b が電車の駅名であれば、路線図の様になる(エッジがある = 線路が直接つながっている)。

 

 

グラフで表現しているデータ構造は、隣接行列でも表現できる。

f:id:koki2016:20210810150054p:plain

上は問題文の隣接行列に色々と書き込んだもの。

 

問題文には "ノードを隣接行列の行と列に対応させて、ノード間にエッジが存在する場合は 1 で、エッジが存在しない場合は 0 で示す" とある。

  • 青色で協調している行を見れば、ノード a とその他のノード ( b ~ f ) との間にエッジが存在するかがわかる。1 になっている部分は a - b のみなので、ノード a はノード b とのみエッジをもっている。
  • 橙色で協調している行を見れば、ノード d とその他のノード( a, b, c, e, f ) との間にエッジが存在するかがわかる。1 になっている部分は d - b と d - c なので、ノード d はノード b および ノード c とエッジをもっている。
  • 各ノードは自分自身とはエッジをもたないため、赤線部分は全て 0 になる。また、この行列は赤線で対称になっている。この問題は無向グラフ(向きが無い)なので、"a から見た b との繋がり" と "b から見た a との繋がり" が等価になる。有向グラフ(向きが有る)の場合、一方通行のようなエッジが存在するので等価とはならず、赤線で対称にはならなくなる。

 

どの選択肢もノード a はノード b とのみエッジをもっているので、ノード a に関しては正しい。

ノード d を見ると、ノード b とノード c とのみエッジをもつ選択肢はウのみである。

ということで、正解は選択肢ウになる。

 

 

ちなみに、有向グラフの場合はノード間のエッジが向きをもつ矢印の様になるので、以下のようなグラフと隣接行列になる(はず)。

f:id:koki2016:20210810155549p:plain

橙色の部分、a から見た b は 1 になるが、b から見た a は 0 となっている。

これは a → b という向きをもつエッジを表現している。

 

 

 

前後の問題はこちら。

koki2016.hatenadiary.com