10语言和有限状态机离散数学讲义海南大学共十一讲.docx
《10语言和有限状态机离散数学讲义海南大学共十一讲.docx》由会员分享,可在线阅读,更多相关《10语言和有限状态机离散数学讲义海南大学共十一讲.docx(27页珍藏版)》请在冰豆网上搜索。
![10语言和有限状态机离散数学讲义海南大学共十一讲.docx](https://file1.bdocx.com/fileroot1/2022-10/23/2b434cc3-1e75-49c1-8020-18db29ed3699/2b434cc3-1e75-49c1-8020-18db29ed36991.gif)
10语言和有限状态机离散数学讲义海南大学共十一讲
10.语言和有限自动机
LanguageandFinite-StateMachine
§10.1语言Languages
由符号以一定规则组成单词word,
由单词以一定规则(语法)组成句子sentences。
以一定规则给句子的含义作出解释叫语义。
Grammars文法
G=(V,S,v0,→)短语结构文法phrasestructuregrammar
V是有限符号集,
S⊆V,S终止符号集
v0∈V-S,初始符号,
→是V*上的有限产生关系productrelation。
w,w’∈V*,w→w’是产生规则,
w叫左边,w’叫右边。
N=V-S,非终止符号集。
例1.S={John,Jill,drives,jogs,carelessly,
rapidly,frequently}
N={sentence,noun,verbphrase,verb,
adverb}
V=N∪S,v0=sentence.
sentence→nounverbphrase
noun→John
noun→Jill
verbphrase→verbadverb
verb→drives
verb→jogs
adverb→carelessly
adverb→rapidly
adverb→frequently
sentence
nounverbphrase
Jillverbphrase
Jillverbadverb
Jilldrivesadverb
Jilldrivesfrequently
例2.正则文法,3型文法。
G=(V,S,v0,→),
V={v0,w,a,b,c},S={a,b,c},
1.v0→aw.2.w→bbw.3.w→c.
G能接受的语句是
v0→aw→ab2w→……→ab2nw→ab2nc.
简记为v0⇒ab2nc
G确定的语言L(G)={ab2nc|n∈N}=a(bb)*c.
例3.0型文法。
G=(V,S,v0,→),
V={v0,w,a,b,c},S={a,b,c},
1.v0→av0b.2.v0b→bw.3.abw→c.
v0→av0b→aav0bb→anv0bn→anbwbn-1
=an-1abwbn-1→an-1cbn-1
简记为v0⇒an-1cbn-1
G能接受的语句是ancbn,n≥0.
L(G)={ancbn|n≥0}
形式文法的分类
0型文法type0:
规则无限制.无限制文法。
1型文法type1:
每条规则左边的长度小于等于右边的长度。
lwr→lw’r,上下文有关文法。
2型文法type2:
A→α,A∈N,左边只含单个非终结字符。
上下文无关文法。
3型文法type3:
正则文法。
A→α或A→αB,A,B∈N,左边只含单个非终结字符,右边最右端可以有一个非终结符号。
右线性文法。
A→α或A→Bα,A,B∈N,左边只含单个非终结字符,右边最右端可以有一个非终结符号。
左线性文法。
语言
2型文法生成的语言叫2型语言,上下文无关语言。
3型文法生成的语言叫3型语言,正则语言。
L(G)={anbn|n≥3}
求文法G?
L(G)={xnym|n,m≥2}
求文法G?
§10.2特殊文法和语言的表示
BNF记号notation(Bachus-Naur形式)
例1.〈sentence〉:
:
=〈noun〉〈verbphrase〉,
〈noun〉:
:
=John|Jill
〈verbphrase〉:
:
=〈verb〉〈adverb〉
〈verb〉:
:
=drives|jogs
〈adverb〉:
:
=carelessly|rapidly|frequently
例2.〈v0〉:
:
=a〈w〉
〈w〉:
:
=bb〈w〉|c
左边记号在右边出现,叫做递归recursive
例3.程序设计C语言
〈十进制数〉:
:
=〈无符号整数〉|〈十进分数〉|
〈无符号整数〉〈十进分数〉
〈十进分数〉:
:
=.〈无符号整数〉
〈无符号整数〉:
:
=〈十进数字〉|
〈十进数字〉〈无符号整数〉
〈十进数字〉:
:
=0|1|2|3|4|5|6|7|8|9
23.14
例4.
G=(V,S,identifier,→)
N={identifier,remaining,digit,letter}
S={a,b,c,……,z,0,1,2,……,9}
V=N∪S
1.〈identifier〉:
:
=〈letter〉|
〈letter〉〈remaining〉
2.〈remaining〉:
:
=〈letter〉|〈digit〉|
〈letter〉〈remaining〉|
〈digit〉〈remaining〉
3.〈letter〉:
:
=a|b|……|z
4.〈digit〉:
:
=0|1|2|3|4|5|6|7|8|9
语法图SyntaxDiagrams
〈w〉:
:
=〈w1〉〈w2〉〈w3〉
〈w〉:
:
=〈w1〉〈w2〉|〈w1〉a|bc〈w2〉
〈w〉:
:
=ab〈w〉
〈w〉:
:
=ab|ab〈w〉
例5.
例6.
正则文法和正则表达式
RegularGrammarandRegularExpressions
设A是一个字符集,由如下产生规则生成的字符串叫做A的正则表示,不引起歧义时简称正则表示,省略A:
Re1.空串是正则表示。
Re2.如果,则x是正则表示。
Re3.如果α,β是正则表示,则αβ,即α∙β,是正则表示。
Re4.如果α,β是正则表示,则(α∨β)是正则表示。
Re5.如果α是正则表示,则(α)*是正则表示。
定理1.S有限集,L⊆S*,则L正则当且仅当存在正则文法G=(V,S,v0,→),L=L(G)。
将正则文法用BNF图表示,合成一个图,只含一个v0,其他都是终结符号,称为G的主图。
通过这个图,正则文法和正则表示式有一个对应:
1.终结符对应自己。
2.两个片断D1和D2串连成D,D对应α1⋅α2。
3.两个片断D1和D2并连成D,
D对应α1∨α2。
4.一个片断D由D1的环构成,D对应α1*.
例8.
§10.3有限状态自动机
Finite-StateMachine
有限状态集S={s0,s1,s2,……,sn}。
有限输入集I,每个x∈I,有一个
状态转换函数fx:
S→S。
F={fx|x∈I}.
M=(S,I,F)叫有限状态自动机。
状态si,输入x,fx(si)下一个状态。
M=(S,I,F)与M’=(S,I,F)等价:
F:
S×I→S,
F(si,x)=fx(si).
例1.
S={s0,s1},I={0,1}.
f0(s0)=s0,f0(s1)=s1,
f1(s0)=s1,f1(s1)=s0,
状态变换表:
0
1
s0
s0
s1
s1
s1
s0
例2.I={a,b},S={s0,s1,s2},
fa(s0)=s0,fa(s1)=s2,fa(s2)=s1,
fb(s0)=s1,fb(s1)=s0,fb(s2)=s2,
定义S上关系RM,
siRMsj当且仅当存在一个输入x,fx(si)=sj.
M的图:
MooreMachine识别机recognitionmachine
M=(S,I,F,s0,T),
s0初始状态,T可接受状态集。
自动机同余和商自动机
MachineCongruenceand
QuotientMachine
设M=(S,I,F),R是M上同余关系:
R是S上等价关系,且对任意s,t∈S,sRt当且仅当对任意x∈I,fx(s)Rfx(t).
令=S/R={[s]|s∈S}
对任意x∈I,令
由R是同余关系,是上的函数。
令,
称有限自动机=(,I,)为M对应R的商,记做=M/R.
如果M=(S,I,F,s0,T),R是M上的同余关系,=(,I,,s0,),
={[t]|t∈T}。
称为M的商MooreMachine.
例6.令S={s0,s1,s2,s3,s4,s5},T={s1,s3,s4}.
状态变换表:
S上同余关系R:
a
b
s0
s0
s4
s1
s1
s0
s2
s2
s4
s3
s5
s2
s4
s4
s3
s5
s3
s2
[s0]={s0,s2}=[s2]
[s1]={s1,s3,s5}=[s3]=[s5]
[s4]=[s4]
=S/R={[s0],[s1],[s4]}
a
b
[s0]
[s0]
[s4]
[s1]
[s1]
[s0]
[s4]
[s4]
[s1]
例7.I={0,1},
S={s0,s1,s2,s3,s4,s5,s6,s7},
M={S,I,F}
S/R={{s0,s4},{s1,s2,s5},{s6},{s3,s7}}
0
0
1
§10.4.半群,自动机和语言semigroups,machinesandlanguages
M={S,I,F}
S={s0,s1,s2,……,sn}。
F={fx|x∈I}.
I*是一个独异点,空串Λ是单位元。
S上所有函数的集合SS,关于复合组成独异点,恒等变换1s是单位元。
任意x∈I,fx∈SS,设w=x1x2……xn∈I*,
令fw=fxn◦fxn-1◦…◦fx1,fΛ=1s,
对每个w∈I*,fw∈SS,称fw是w对应的状态变换函数。
例1.M={S,I,F},S={s0,s1,s2},I={0,1}。
状态变换表F:
0
1
s0
s0
s1
s1
s2
s2
s2
s1
s0
设w=011∈I*,
fw(s0)=f1◦f1◦f0(s0)=f1◦f1(s0)=f1(s1)=s2.
fw(s1)=f1◦f1◦f0(s1)=f1◦f1(s2)=f1(s0)=s1.
fw(s2)=f1◦f1◦f0(s2)=f1◦f1(s1)=f1(s2)=s0.
例2.上例Moor机
0
fw(s0)=s2,fw(s1)=s1,fw(s2)=s0.
w’=01011
fw’(s0)=s1,fw’(s1)=s2,fw’(s2)=s0.
令M={S,I,F},定义函数
T:
I*→SS,
对任意w∈I*,T(w)=fw∈SS。
定理1.
(a)T(w1⋅w2)=T(w2)⋅T(w1).
(b)M=T(I*)构成SS的子独异点。
a
例3.
b
S0
S2
S1
d
d
b,d
a,b
a
则fadd◦fbad=fbadadd.
证明.
fadd(s0)=s0,fadd(s1)=s0,fadd(s2)=s0,
fbad(s0)=s1,fbad(s1)=s1,fbad(s2)=s1,
fadd◦fbad(s0)=fadd(s1)=s0
fadd◦fbad(s1)=fadd(s1)=s0.
fadd◦fbad(s2)=fadd(s1)=s0.
fbadadd(