1 / 88

Lecture Notes for DB

Lecture Notes for DB. Book : 计算理论引论 by Michel Sipser Chapter 0 概念与语言 , 第 1 章 确定自动机 Prof : 唐常杰 TangChangjie@cs.scu.edu.cn Http://teacher.scu.edu.cn/~chjtang Students : MS in CS . 2003, SCU Style : Lecture / Seminar. 第 0 章 概念与语言 , 第 1 章 确定自动机.

marcin
Download Presentation

Lecture Notes for DB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture Notes for DB Book :计算理论引论 by Michel Sipser Chapter0 概念与语言, 第 1章 确定自动机 Prof : 唐常杰 TangChangjie@cs.scu.edu.cn Http://teacher.scu.edu.cn/~chjtang Students : MS in CS . 2003, SCU Style : Lecture / Seminar

  2. 第 0章 概念与语言, 第 1章 确定自动机 • Outline for today • Chapter 0: (中文1章) • set notation and languages • Chapter 1: (中文2章) • deterministic finite automata (DFA)确定自动机 • nondeterministic FA (NFA)不确定自动机 • 教学方法:以教材为基础,适当补充,调整次序 • 讲课 : 讲思想、方法,难易 ,想得正确,直观,理解 • 写文章:要正规,形式化,严格,说得明白,写得清楚 • 笔记:可以记下幻灯篇页数(sp1-15),书页数(ep15,cp15) • 再记录心得,可少记一些

  3. 绿星表示此页有补充内容 第 0章 概念与语言, 第 1章 确定自动机 课程背景 可计算理论把 程序或算法 作不同级别的简化和抽象,抓出其特征,根据忽略和抽象的等级依次得到:

  4. Standard Set Theory:集合论 传统,已经学过 只复习要点, ep.3-7 , cp. • Conditional: A = { x | x  N , f(x)=0 } • Union: AB • Intersection: AB • Complement: • Cartesian Product: AB • Power set: P(A) 或 2A • (介绍记号的来源 |P (A)| = 2|A|)

  5. Some Examples ep6. L<6 = { x | x  N , x<6 } L<6  Lprime = {2,3,5}  = {0,1} 字母表 = {(0,0), (0,1), (1,0), (1,1)} Formal: AB = { x | xA and xB}

  6. Power set 幂集 Formal: P (A) = { S | S A} 一切子集的集合 Example: A = {x,y} P (A) = { {} , {x} , {y} , {x,y} } A={x1, x2,…,Xn}, 子集 编码 0,0,0.,0,0 0,0,0.,0,1 0,0,0.,1,0 1,1,1… 1 共2n个 Note the different sizes: |P (A)| = 2|A| 个数是幂,名称的来源 |AA| = |A|2

  7. 悖论 (补充) 可计算理论中用了许多证明技巧,对角线方法,哥德尔定理等,有必要补充 推理的正确性和避免悖论 的 两个相互矛盾的命题之合乎逻辑的相互推出 称为悖论。 由真(命题)可以合乎逻辑地推出假(命题)。这意味着逻辑不可靠。 罗素(B.Russell)悖论”。 集合可分为两类:一类以自身为元素,另一类则不以自身为元素。所有不以自身为元素的集合构成一个集合 称为“罗素集”。 问题:该集合是否以自身为元素? 有: 如果罗素集以自身为元素,则有罗素集不以自身为元素; 如果罗素集不以自身为元素,又有罗素集以自身为元素。

  8. 悖论 (补充) 可计算理论中用了许多证明技巧,对角线方法,哥德尔定理等,有必要补充 推理的正确性和避免悖论 的 两个相互矛盾的命题之合乎逻辑的相互推出 称为悖论。 由真(命题)可以合乎逻辑地推出假(命题)。这意味着逻辑不可靠。 罗素(B.Russell)悖论”。 集合可分为两类:一类以自身为元素,另一类则不以自身为元素。所有不以自身为元素的集合构成一个集合 称为“罗素集”。 问题:该集合是否以自身为元素? 有: 如果罗素集以自身为元素,则有罗素集不以自身为元素; 如果罗素集不以自身为元素,又有罗素集以自身为元素。

  9. 悖论实例 补充 说谎者悖论 : “本语句为假” 如果“本语句为假”为真,则有“本语句为假”为假; 如果“本语句为假”为假,则有“本语句为假”为真。 爱匹门尼德(Epimenides)悖论”。爱匹门尼德是公元前六世纪时古希腊的一位先知,居住于克里特岛上,他说过这样一句话:“克里特岛人都是说谎者。” “爱匹门尼德悖论”“悖”得还不够彻底,只“悖”了一半, 避免句子自我相关的悖论 A:句子B是真的。 B:句子A是假的。 表明,避免句子的自我相关 不足以消解“悖论”。 自引用是证明哥德尔定理,图灵机停机 问题的重要技巧,不是悖论

  10. 悖论实例 补充 说谎者悖论 : “本语句为假” 如果“本语句为假”为真,则有“本语句为假”为假; 如果“本语句为假”为假,则有“本语句为假”为真。 爱匹门尼德(Epimenides)悖论”。爱匹门尼德是公元前六世纪时古希腊的一位先知,居住于克里特岛上,他说过这样一句话:“克里特岛人都是说谎者。” “爱匹门尼德悖论”“悖”得还不够彻底,只“悖”了一半, 避免句子自我相关的悖论 A:句子B是真的。1010 B:句子A是假的。 表明,避免句子的自我相关 不足以消解“悖论”。 自引用是证明哥德尔定理,图灵机停机 问题的重要技巧,不是悖论

  11. 悖论实例 补充 说谎者悖论 : “本语句为假” 如果“本语句为假”为真,则有“本语句为假”为假; 如果“本语句为假”为假,则有“本语句为假”为真。 爱匹门尼德(Epimenides)悖论”。爱匹门尼德是公元前六世纪时古希腊的一位先知,居住于克里特岛上,他说过这样一句话:“克里特岛人都是说谎者。” “爱匹门尼德悖论”“悖”得还不够彻底,只“悖”了一半, 避免句子自我相关的悖论 A:句子B是真的。 B:句子A是假的。 表明,避免句子的自我相关 不足以消解“悖论”。 自引用是证明哥德尔定理,图灵机停机 问题的重要技巧,不是悖论

  12. “说谎者”之所言 不是命题 而是多义句 不妨假设“本语句为假”是命题。 此时便有,“本语句为假”要么为真要么为假;并且,“说谎者悖论”的推理也因此而合乎逻辑。 如果“本语句为假”为真,则有“本语句为假”为假;亦即“本语句为假”既真且假,矛盾。 由反证法即有,“本语句为假”为假。 如果“本语句为假”为假,则有“本语句为假”为真;亦即“本语句为假”既真且假,矛盾。 由反证法即有,“本语句为假”为真。 综合以上两个子证明的结果即有,“本语句为假”既真且假,因而 不是命题 而是多义句。证毕。 两个貌似相互矛盾命题的多义句的不合逻辑的相互推出,不是真正意义上的悖论。

  13. “说谎者”之所言 不是命题 而是多义句 不妨假设“本语句为假”是命题。 此时便有,“本语句为假”要么为真要么为假;并且,“说谎者悖论”的推理也因此而合乎逻辑。 如果“本语句为假”为真,则有“本语句为假”为假;亦即“本语句为假”既真且假,矛盾。 由反证法即有,“本语句为假”为假。 如果“本语句为假”为假,则有“本语句为假”为真;亦即“本语句为假”既真且假,矛盾。 由反证法即有,“本语句为假”为真。 综合以上两个子证明的结果即有,“本语句为假”既真且假,因而 不是命题 而是多义句。证毕。 两个貌似相互矛盾命题的多义句的不合逻辑的相互推出,不是真正意义上的悖论。

  14. “说谎者”之所言 不是命题 而是多义句 不妨假设“本语句为假”是命题。 此时便有,“本语句为假”要么为真要么为假;并且,“说谎者悖论”的推理也因此而合乎逻辑。 如果“本语句为假”为真,则有“本语句为假”为假;亦即“本语句为假”既真且假,矛盾。 由反证法即有,“本语句为假”为假。 如果“本语句为假”为假,则有“本语句为假”为真;亦即“本语句为假”既真且假,矛盾。 由反证法即有,“本语句为假”为真。 综合以上两个子证明的结果即有,“本语句为假”既真且假,因而 不是命题 而是多义句。证毕。 两个貌似相互矛盾命题的多义句的不合逻辑的相互推出,不是真正意义上的悖论。

  15. 理发匠定理 罗素悖论”有两个通俗化的“版本”——“理发匠悖论”和“目录悖论”, “理发匠悖论”是罗素本人为使“罗素悖论”更易于理解提出的,是后者的通俗版。萨尔维村有这样一位理发匠,他是本村的男人,并且给且只给该村所有不给自己刮胡子的男人刮胡子。现在的问题是,这位理发匠是否给自己刮胡子?显然,如果他给自己刮胡子,他就不给自己刮胡子;如果他不给自己刮胡子,他就给自己刮胡子。 “悖论”。

  16. 理发匠定理 罗素悖论”有两个通俗化的“版本”——“理发匠悖论”和“目录悖论”, “理发匠悖论”是罗素本人为使“罗素悖论”更易于理解提出的,是后者的通俗版。萨尔维村有这样一位理发匠,他是本村的男人,并且给且只给该村所有不给自己刮胡子的男人刮胡子。现在的问题是,这位理发匠是否给自己刮胡子?显然,如果他给自己刮胡子,他就不给自己刮胡子;如果他不给自己刮胡子,他就给自己刮胡子。 “悖论”。

  17. 目录悖论 目录悖论”是“罗素悖论”的另一变种,由瑞士数学家贡赛斯(Gonseth)提出。 所有可能的目录可分为两大类: 一类是未收入自身的目录,在这样的目录中查不到关于它自身的条目, 另一类则是收入自身的目录。所有未收入自身的目录有一个总目录,这个总目录既然也是目录,便有个是否收入自身的问题。显然,如果该总目录未收入自身,它便收入了自身;如果它收入了自身,则又未收入自身。 在推理中,要严格定义,严格推理,避免偷换概念,避免悖论。

  18. 目录悖论 目录悖论”是“罗素悖论”的另一变种,由瑞士数学家贡赛斯(Gonseth)提出。 所有可能的目录可分为两大类: 一类是未收入自身的目录,在这样的目录中查不到关于它自身的条目, 另一类则是收入自身的目录。所有未收入自身的目录有一个总目录,这个总目录既然也是目录,便有个是否收入自身的问题。显然,如果该总目录未收入自身,它便收入了自身;如果它收入了自身,则又未收入自身。 在推理中,要严格定义,严格推理,避免偷换概念,避免悖论。

  19. Languages 语言,字词的集合 ep.42,cp.25 • Given an alphabet , we can make a word or string by concatenating the letters of . 字母表 • Concatenation of “x” and “y” is “xy” 字母的链接 • Typical example: ={0,1}, the possible words over  are the finite bit strings. 01位串为单词 • A language is a set of words. 语言,字词的集合 • 定义: • 设 是字母表, 则称2的子集A为上的语言。

  20. More about Languages • The empty string  is the unique string with zero length. • Concatenation of two langauges: A•B = { xy | xA and yB } • 两个语言的链接 : 字集之链 = 链字之集 • Typical examples: L = { x | x is a bit string with two zeros } L = { anbn | n  N } L = {1n | n is prime} 每个词是素数个1链成

  21. A Word of Warning 注意 Do not confuse the concatenation of languages with the Cartesian product of sets. 语语连接 != 迪卡积 For example, let A = {0,00} then A•A = { 00, 000, 0000 } with |A•A|=3, 连接 一维 AA = { (0,0), (0,00), (00,0), (00,00) } 叉乘 二维 with |AA|=4

  22. 自动机的直观概念 火车车次表 207 208 189 190 成都 重庆 昆明 贵阳

  23. 自动机直观概念 电子手表 上4个键 {a,b,c,d}有若干个状态,用自动机表示操作过程,比较简单,比现行说明书好用。 可用自动机表达的日常设备:(作为练习题目) 录音机上的键和状态转换 ,  , .  菜单驱动的多层菜单 电视机遥控 实质:现状+输入 下一状态 书上 cp19, 用超市自动门说明,自学。

  24. Recognizing Languages 识别语言 cp22 • Let L be a language  S • 自动机识别语言的直观描述(后面有形式化定义)用有限描述无限。 • : 入语言, 出判定(Y:N) • a machine M recognizes L if “accept” if and only if xL xS M “reject” if and only if xL

  25. Finite Automaton 有限自动机ep.55,cp.34 The most simple machine that is not just a finite list of words. 最简:有限个词的集合 “Read once”, “no write” procedure. 只读,不写,,无内存,无变量,无数组,无堆栈 ,无推理,无想象力 Typical is its limited memory. 内存有限, 只有寄存器,能记住状态(窍门:造自动机时遇到困难加状态,等于是加寄存器扩大了记忆力) Think cell-phone, elevator door, etc. 简单例子,火车线路图,电梯, 录音机, 电子表 状态和按扭

  26. Finite Automaton 有限自动机ep.55,cp.34 The most simple machine that is not just a finite list of words. 最简:有限个词的集合 “Read once”, “no write” procedure. 只读,不写,,无内存,无变量,无数组,无堆栈 ,无推理,无想象力 Typical is its limited memory. 内存有限, 只有寄存器,能记住状态(窍门:造自动机时遇到困难加状态,等于是加寄存器扩大了记忆力),状态相当于标号,goto,增加标号相当与增加语句和转向语句 Think cell-phone, elevator door, etc. 简单例子,火车线路图,电梯, 录音机, 电子表 状态和按扭

  27. Finite Automaton 有限自动机ep.55,cp.34 The most simple machine that is not just a finite list of words. 最简:有限个词的集合 “Read once”, “no write” procedure. 只读,不写,,无内存,无变量,无数组,无堆栈 ,无推理,无想象力 Typical is its limited memory. 内存有限, 只有寄存器,能记住状态(窍门:造自动机时遇到困难加状态,等于是加寄存器扩大了记忆力) Think cell-phone, elevator door, etc. 简单例子,火车线路图,电梯, 录音机, 电子表 状态和按扭

  28. States状态 transition rules 变换规则 0 1 1 0 q1 q2 q3 0,1 始态starting state accepting state 受态,粗圈或双线圈 A Simple Automaton (0) ep34, cp20 cp22

  29. 0 1 1 0 q1 q2 q3 start 0,1 accept A Simple Automaton (1) cp22 非接受态 理解为依次按两个按按扭后电子表的状态错误 on input “0110”, the machine goes: q1  q1  q2  q2  q3 = “reject”

  30. 0 1 1 0 q1 q2 q3 start 0,1 accept A Simple Automaton (1) cp22 非接受态 理解为依次按两个按按扭后电子表的状态错误 on input “0110”, the machine goes: q1  q1  q2  q2  q3 = “reject”

  31. 0 1 1 0 q1 q2 q3 0,1 on input “101”, the machine goes: A Simple Automaton (2) ep34 cp22 q1  q2  q3  q2 = “accept”

  32. 0 1 1 0 q1 q2 q3 0,1 A Simple Automaton (3) cp22 010: reject 11: accept 010100100100100: accept 010000010010: reject : reject

  33. 0 1 1 0 q1 q2 q3 0,1 用C语言描述FA Char *input ,*pCurr //全局量 Bool FA_func( ) { start: q1:if (*pCurr==0) goto q1; else if (*pCurr==1) goto q2; q2: if (*pCurr==0) goto q3; else if (*pCurr==1) goto q2 q3: if (*pCurr==0 || *pCurr==1) goto q2; } 自动机对应于只有if,goto,无数组,无内部变量的程序, 程序不如图形直观,程序容易使用超标的资源(内存,栈,数组等)状态相当于goto 标号

  34. 0 1 1 0 q1 q2 q3 0,1 用C语言描述FA Char *input ,*pCurr //全局量 Bool FA_func( ) { start: q1:if (*pCurr==0) goto q1; else if (*pCurr==1) goto q2; q2: if (*pCurr==0) goto q3; else if (*pCurr==1) goto q2 q3: if (*pCurr==0 || *pCurr==1) goto q2; } 自动机对应于只有if,goto,无数组,无内部变量的程序, 程序不如图形直观,程序容易使用超标的资源(内存,栈,数组等)

  35. A Simple Automaton (3) 用C语言描述 对不熟悉C语言的读者,FA更直观, 对熟悉C语言的读者,C语言解释自动机更简单(查旧则可知新,人们总是用熟悉的知识解释新的知识) 注意一点,不要超标用资源, 只能用 if goto 不能用数组,变量,只能用状态作记忆 在后面的推理中,SCU教案将广泛用C语言表示自动机、下推机、图灵机。

  36. A Simple Automaton (3) 用C语言描述 对不熟悉C语言的读者,FA更直观, 对熟悉C语言的读者,C语言解释自动机更简单(查旧则可知新,人们总是用熟悉的知识解释新的知识) 注意一点,不要超标用资源, 只能用 if goto(状态) 不能用数组,变量,只能用状态作记忆 在后面的推理中,SCU教案将广泛用C语言表示自动机、下推机、图灵机。

  37. 自动机的背景 在词法分析中是如何用的 • 造一个C语言,Basic ,DOS解释器,HBASE解释器 • 语法分析器, • 先把拟实现的语句设计好,例如 • List Field A1,A1 for age>5 to printer • Display [All] field for …. To … • Index On Name to Name.NDX • 抽象 找规律 ,巴克斯范式,状态转换函数的变形 • 命令行=动词[user_str][介词短语]* • 动词=List|Display|Index • 介词短语=介词[表达式|UserStr] • 介词短语=for|on|to|field • UserStr=[a-z,A-Z,_][a-z,A-Z|0-9]*

  38. 自动机的背景 在词法分析中是如何用的 • 造一个C语言,Basic ,DOS解释器,HBASE解释器 • 语法分析器, • 先把拟实现的语句设计好,例如 • List Field A1,A1 for age>5 to printer • Display [All] field for …. To … • Index On Name to Name.NDX • 抽象 找规律 ,巴克斯范式,状态转换函数的变形 • 命令行=动词[user_str][介词短语]* • 动词=List|Display|Index • 介词短语=介词[表达式|UserStr] • 介词短语=for|on|to|field • UserStr=[a-z,A-Z,_][a-z,A-Z|0-9]*

  39. 自动机的背景 在词法分析中是如何用的 范式的每行对应一系列 状态转换 (自动机) 如 第一句 命令行=动词[user_str][介词短语]* 初始状态 —如首词不是动词进入出错状态 否则动词分析状态 动词分析状态如动词出错user_str分析状态 OK 介词短语分析状态 ….. 60年代,手工分析巴克斯范式,画出自动机,然后写成case, if goto语句, 能否让机器来做?能。 软件PaserGenerater 处理Alex.exe 词法分析器,AYacc.exe 词法分析器

  40. 用软件PaserGenerater 处理 • 含Alex.exe 词法分析器,AYacc.exe 词法分析器 • 先写一个说明巴克斯范式的文件 HbaseSyntax.Y • HbaseSyntax. YACC处理{HSyntax.Y,HSyntax.H, HSyntax.V} • 例子HSyntax.Y, • %{#include<ctype.h> • #include <stdio.h> • }% • %% • Lines: verv userstr {simle.cmd( ); } • | verb ‘\n’ {simle.cmd( ); } • | Verb Prop_phrase * {simle.cmd( ); } • · error ‘\n’ 命令行 响应函数的语义处理

  41. 例子HbaseSyntax.Y, Verb: List { do_list( );} |Display { do_display( );} |Index {do_index( ) ; } Prop_phase: Prop UserStr { Null} Prop: For {do_for( );} |to {null (); } |On {…..} %% …. 响应函数的语义处理

  42. 运行命令 Yacc.exe HSyntax.Y HSyntax.c HSyntax.H • 产生 HSyntax.c 如下 • #include <ctype.h> • ……. 不好理解,后面说 • 要说明 • List for HBase.EXE ---caxp查询结果或错误号 • 下面讲 HSyntax.V

  43. HSyntax.V • 第一部分,重复巴克斯范式,称为与法规者 • 如 Lines: verv userstr {simle.cmd( ); },….. • 第二部分 状态转换(case ,标号 和 goto语句 自动机在这里) • State : 1 • $accept : ,lines $end • lines: .(3) • lines: goto 2 • State :1 • liness error • State:2 … • State:3 …. • 10 tokens, 5 nonterminal , 11| grammar rules 30 states • 更多的细节参考有关书籍 状态转换(自动机) 总结

  44. Finite Automaton (def.) 有限自动机定义 cp21 • A deterministic finite automaton (DFA) M is defined by a 5-tuple M=(Q,,,q0,F) • Q: finite set of states 状态集 • : finite alphabet 字母表 • : transition function :QQ 转换函数 • q0Q: start state 始态 • FQ: set of accepting states 受态 • 介绍集中定义方法;元组式,递归式, • Let 式 Let, It is said to be …. If …….

  45. Finite Automaton (def.) 有限自动机定义 cp21 • A deterministic finite automaton (DFA) M is defined by a 5-tuple M=(Q,,,q0,F) • Q: finite set of states 状态集 • : finite alphabet 字母表 • : transition function :QQ 转换函数 • q0Q: start state始态 • FQ: set of accepting states受态 • 介绍集中定义方法;元组式,递归式, • Let 式 Let, It is said to be …. If …….

  46. 0 1 1 0 q1 q2 q3 0,1 M = (Q,,,q,F) ep36 cp22 states Q = {q1,q2,q3} alphabet  = {0,1} start state q1 accept states F={q2} transition function: 转换函数用矩阵

  47. Recognizing Languages (def) 识别语言 cp21 FA的定义(元组式定义法) A Finite Automaton M = (Q,,,q,F)accepts a string/word w = w1…wn if and only if there is a sequence r0…rn of states in Q such that: 1) r0 = q0 起态 2) (ri,wi+1) = ri+1 for all i = 0,…,n–1 3) rn  F 按图

  48. Regular Languages 正规语言,3型语言 被FA接受的语言 cp24 The language recognized by a finiteautomaton M is denoted by L(M). A regular language is a language for which there exists a recognizing finite automaton.

  49. Two DFA Questions 确定 有限 自动机 问题: 给机(图形,有限描述),找语(符号集合) : Given the description of a finite automaton M = (Q,,,q,F), what is the language L(M) that it recognizes? 问题 :给机,找语言族: In general, what kind of languages can be recognized by finite automata? (What are the regular languages?) 应用技巧1:语言L1找机 M1, 语言L2找机M2,两机合成 h(M1,M2)=M3, M3识别L3, 从而证明L3也是正规语言 合成可以是连接、并 、星运算 思想类似 xlog(x), ylog(y),log(x)+log(y)= log(x*y),然后求出 x*y 技巧2造自动机时,遇到困难加状态,等于是加寄存器 扩大了记忆力)

  50. Two DFA Questions 确定 有限 自动机 问题: 给机(图形,有限描述),找语(符号集合) : Given the description of a finite automaton M = (Q,,,q,F), what is the language L(M) that it recognizes? 问题 :给机,找语言族: In general, what kind of languages can be recognized by finite automata? (What are the regular languages?) 应用技巧1:语言L1找机 M1, 语言L2找机M2,两机合成 h(M1,M2)=M3, M3识别L3, 从而证明L3也是正规语言 合成可以是连接、并 、星运算 思想类似 xlog(x), ylog(y),log(x)+log(y)= log(x*y),然后求出 x*y 技巧2造自动机时,遇到困难加状态,等于是加寄存器 扩大了记忆力)

More Related