オートマトン・形式言語の問題
アルファベット 上の正規表現
を考える。次の文字列のうち、 が表す言語 に属するものをすべて選べ。
ア:
イ:
ウ:
エ:
オ:
この問題で使うもの
- 正規表現が表す言語と文字列の判定(説明と入口の問題)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
正規表現が表す言語を読み取る技能を使います。 と がそれぞれどんな文字列を表すかを考え、連接でつなぐとどうなるかを調べましょう。
ヒント 2
は「 を 0 回以上」なので、 と書けます。これは を何個含む文字列でしょうか。
ヒント 3
は「 をちょうど 1 個含む文字列」全体です。各選択肢に含まれる の個数を数えてみましょう。
答えと解説
答えを見る
ア, イ, エ
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
手順 1: 正規表現の各部分が表す言語を読み取る。
は を 0 回以上並べた文字列全体 を表す( は空文字列)。 は 1 文字の だけを表す。
手順 2: 連接の意味を使って を言い換える。
は「 を 0 個以上」「 を 1 個」「 を 0 個以上」をこの順につないだものなので、
である。つまり は「 をちょうど 1 個だけ含む文字列」全体である。
手順 3: 各文字列を判定する。
- ア : とすれば 。属する。
- イ : とすれば 。属する。
- ウ : を 2 個含むので、 がちょうど 1 個の形にできない。属さない。
- エ : とすれば 。属する。
- オ : を 1 個も含まないので、真ん中の に対応する文字がない。属さない。
よって、 に属するのは ア, イ, エ である。
別解
r = a*ba* は b をちょうど 1 個含み、その前後に a が 0 個以上並ぶ文字列を表す。ア b: a が 0 個ずつで属する。イ aab: 属する。ウ abab: b が 2 個なので属さない。エ baa: 属する。オ aa: b を含まないので属さない。よってア, イ, エ。