平成23年度特別 応用情報技術者試験 午前 問4

分野:基礎理論(2進数・論理・集合・確率統計・情報理論・AI/機械学習の理論・オートマトン・形式言語・計算量)|実際に出題されたIPA過去問題

あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これをBNFで定義したとき,aに入るものはどれか。〈digit〉::=0|1|2|3|4|5|6|7|8|9 〈letter〉::=A|B|C|…|X|Y|Z|a|b|c|…|x|y|z 〈identifier〉::= a

  1.  〈letter〉|〈digit〉|〈identifier〉〈letter〉|〈identifier〉〈digit〉
  2.  〈letter〉|〈digit〉|〈letter〉〈identifier〉|〈identifier〉〈digit〉
  3.  〈letter〉|〈identifier〉〈digit〉
  4.  〈letter〉|〈identifier〉〈digit〉|〈identifier〉〈letter〉
解答・解説を見る

正解:エ

AI解説

識別子は「先頭が英字、それ以降は任意個(0個以上)の英数字が続く」という定義である。BNFで再帰的に表現すると、基底として1文字の〈letter〉を置き、既存の識別子の末尾に〈letter〉または〈digit〉を1文字ずつ追加していく左再帰の形になる。 ア: 〈identifier〉〈letter〉と〈identifier〉〈digit〉に加え〈letter〉|〈digit〉も基底になっており、先頭が数字だけの識別子(単独の〈digit〉)も許容してしまうため誤り。 イ: 〈letter〉〈identifier〉のように識別子の前に英字を付加する右再帰的な定義であり、末尾に任意個の英数字が続くという定義とは異なるため誤り。 ウ: 〈identifier〉〈digit〉しか再帰規則がなく、英字を追加して識別子を延長するケースを表現できないため誤り。 エ: 基底が〈letter〉(先頭は必ず英字)のみで、既存の識別子の末尾に〈letter〉または〈digit〉を追加していく左再帰の定義になっており、仕様を正しく表現しているため正解。 💡 BNFの左再帰(〈X〉::=基底|〈X〉追加要素)は「末尾に要素を追加していく」構造になる点を意識する。基底に何を許すかが「先頭文字の制約」を決める。

出典:平成23年度 特別 応用情報技術者試験 午前 問4 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「基礎理論」分野の攻略ポイント

2進数・論理演算・集合・確率統計・情報理論・AI/機械学習の理論・オートマトン・形式言語・計算量が範囲です。純粋な計算問題が多く、対策の有無がそのまま得点差になります。手を動かす練習が最も効く分野です。

基礎理論の攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(基礎理論(2進数・論理・集合・確率統計・情報理論・AI/機械学習の理論・オートマトン・形式言語・計算量))の過去問