考察形式
給出一個確定或不確定的有限自動機,指出其能夠識別的字符串,或指出對應的正規式表示。
有限自動機識別字符串
一個有限自動機所識別的語言是從開始狀態到終止狀態所有路徑上的字符串的集合。要判斷一個字符串能否被指定的自動機識別,就看在該自動機的狀態圖中能否找到一條從開始狀態到達終止狀態的路徑,且路徑上的字符串等於需要識別的字符串。而對於其正規式,可以通過能夠識別的字符串去總結規律。
例:下圖所示的有限自動機中,s0是初始狀態,s3為終止狀態,該自動機不能識別()。
A.abab B.aaaa C.babb C.abba
只有A選項可以從Sn到達S3中去。
例:右圖所示有限自動機的特點是()。
A.識別的0、1串是以0開頭且以1結尾
B.識別的0、1串中1的數目為偶數
C.識別的0、1串中0后面必須是1
D.識別的0、1串中1不能連續出現
選D。
[解析] 從初始態q0輸入0仍然到q0或者輸入1到達終態q1,從q1還可以輸入0重新到達初始態q0,所以這個有限自動機識別的0、1串不一定是以0開頭的,1的數目的奇偶性也沒辦法確定,0后面也可以是0,所以選項A、B、C都是錯誤的。從q0輸入1到達終態q1后,或者串結束,或者輸入0再到q0,所以這個串中的1不會連續出現,選項D是正確的。
正規式
例:由a、b構造且僅包含偶數個a的串的集合用正規式表示____。
A.(a*a)*b* B.(b* (ab*a)*)* C.(a* (ba*)*b)* D.(a|b)* (aa)*
A中*表示0個或者n個,那么可以A可以表示ab。
B中b可以0個或者n個,但是一定是兩個a的倍數,選B。
例:在僅由字符 a、b 構成的所有字符串中,其中以 b 結尾的字符串集合可用正規式表示為(21)。
A.(b|ab)*b B.(ab*)*b C.a*b*b D.(a|b)*b
解析:正規式(a|b)*對應的正則集為{ε,a,b,aa,ab,...,所有由a和b組成的字符串},結尾為b。
例:由字符a、b構成的字符串中,若每個a后至少跟一個b,則該字符串集合可用正規式表示為(48)。
(48)A.(b|ab)* B.(ab*)* C.(a*b*)* D.(a|b)*
解析:正規式中 |表示或的意思, *表示 *前的字符或字符串出現了 0 次或多次。因此,選擇A。