族谱网 头条 人物百科

形式语言

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:429
转发:0
评论:0
语言的形式定义字母表与字符串语言定义在某一个特定的字母表上,字母表(经常记作Σ)可以为任意有限集合。例如集合{a,b,c...,z}{displaystyle{a,b,c...,z}}就表示所有

语言的形式定义

字母表与字符串

语言定义在某一个特定的 字母表 上,字母表(经常记作 Σ )可以为任意有限集合。例如集合 { a , b , c . . . , z } {\displaystyle \{a,b,c...,z\}} 就表示所有小写字母构成的字母表。

字符串 是字母表中的元素构成的有穷序列,以之前定义的小写字母表为例,“hello”,“wikipedia”,“abcjkg”都是上面的串,而“AbCd”就不是上面的串了。记号 ε 表示空串——它是一个特殊的长度为0的串。

语言

直觉上,一个语言是字母表所能构成的所有串的集合的一个子集,具体来说:

对于任意一个字母表,记全体长度为 n 的子串为 Σ Σ --> n {\displaystyle \Sigma ^{n}} ,特别的,规定 Σ Σ --> 0 {\displaystyle \Sigma ^{0}} 为{ε},则还可以定义

Σ Σ --> ∗ ∗ --> = Σ Σ --> 0 ∪ ∪ --> Σ Σ --> 1 ∪ ∪ --> ⋯ ⋯ --> ∪ ∪ --> Σ Σ --> n ∪ ∪ --> ⋯ ⋯ --> {\displaystyle \Sigma ^{*}=\Sigma ^{0}\cup \Sigma ^{1}\cup \cdots \cup \Sigma ^{n}\cup \cdots }

Σ Σ --> ∗ ∗ --> {\displaystyle \Sigma ^{*}} 包含了字母表 Σ Σ --> {\displaystyle \Sigma } 所能构成的所有字符串。 语言 (一般记为 L )定义为 Σ Σ --> ∗ ∗ --> {\displaystyle \Sigma ^{*}} 的任意子集。

下面给出一些语言的例子, { h e l l o , w o r l d } {\displaystyle \{hello,world\}} 是一个包含两个字符串的集合,也可以被视为小写字母构成的字母表上的一个语言。而实际上研究的语言的例子则常常更为复杂,例如所有合法的C语言程序串构成的集合也可以视作ASCII上的一个语言(假定编译器只支持英文符号)。

需要注意的一点是, Σ Σ --> ∗ ∗ --> {\displaystyle \Sigma ^{*}} 的空子集∅ 与只包含空串的语言 {ε} 是两个不同的语言。

语言间的运算

语言间的运算就是 Σ 幂集上的运算。

字符串集合的交并补等运算。

连接运算:L 1 L 2 = { xy | x 属于L 1 并且 y 属于L 2 }。

幂运算:L = L … L (共 n 个 L 连接在一起),L = {ε}。

闭包运算:L = L ∪L ∪…∪L ∪…。

右商运算:L 1 /L 2 = {x | 存在 y 属于L 2 使得 xy 属于L 1 }。

设 S ⊆ Σ 是一个语言, S 的补语言定义为集合 {ω | ω ∈ Σ 且 ω ∉ S }

语言的表示方法

不像自然语言,一个形式语言作为一个集合,需要有某种明确的标准来定义一个字符串是否是它的元素。这可以通过多种方法来完成,下面将给出一些例子:

枚举法

如果一个形式语言的元素数目是有限的,那么可以通过枚举它的各个字串来严格地定义它。

形式文法

通过形式文法来产生(参见乔姆斯基谱系)。

正则表达式

正则表达式是一种很多编程语言和库都支持的语法,这种语法可以用于匹配符合一定条件的字符串,经常用于文本的搜索和过滤。从名称上来说,正则表达式应当是对应于正则语言的,在形式语言领域内所称的正则表达式确实如此。不过,在实际的编程语言中,很多正则表达式已经通过引入复杂的扩展,可以匹配正则表达式所不能描述的内容。形式语言中的正则表达式和一般编程语言中所称的正则表达式在语法上也有较大差异。

自动机

直觉上来说,自动机消耗输入符号,并在自身的不同状态间转移,可以通过状态机消耗完整个字符串之后是否达到某些特定状态来定义一个字符串是否属于某一个语言。语言可以通过某种自动机来识别,比如图灵机、有限状态自动机。

参考文献

Hamilton, A. G. Logic for Mathematicians. Cambridge University Press. 1978. ISBN 0-521-21838-1.

Ginsburg, Seymour. Algebraic and automata theoretic properties of formal languages. North-Holland. 1975. ISBN 0-7204-2506-9.

Harrison, Michael A. Introduction to Formal Language Theory. Addison-Wesley. 1978.

Hopcroft, John E.; Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation. Reading, Massachusetts: Addison-Wesley Publishing. 1979. ISBN 0-201-02988-X.

Rozenberg, Grzegorz; Arto Salomaa. Handbook of Formal Languages: Volume I-III. Springer. 1997. ISBN 3-540-61486-9.

Suppes, Patrick. Introduction to Logic. D. Van Nostrand. 1957. ISBN 0-442-08072-7.

参见

形式文法

形式方法

形式科学

形式系统

数学符号

编程语言

本体语言


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
扫一扫添加客服微信